Java发送邮件

 
  1. importjava.util.*;
  2. importjava.io.*;
  3. importjavax.mail.*;
  4. importjavax.mail.internet.*;
  5. importjavax.activation.*;
  6. /**
  7. *<p>Title:使用javamail发送邮件</p>
  8. *<p>Description:演示如何使用javamail包发送电子邮件。这个实例可发送多附件</p>
  9. *<p>Copyright:Copyright(c)2003</p>
  10. *<p>Filename:Mail.java</p>
  11. *@author杜江
  12. *@version1.0
  13. */
  14. publicclassMail{
  15. Stringto="";//收件人
  16. Stringfrom="";//发件人
  17. Stringhost="";//smtp主机
  18. Stringusername="";
  19. Stringpassword="";
  20. Stringfilename="";//附件文件名
  21. Stringsubject="";//邮件主题
  22. Stringcontent="";//邮件正文
  23. Vectorfile=newVector();//附件文件集合
  24. /**
  25. *<br>方法说明:默认构造器
  26. *<br>输入参数:
  27. *<br>返回类型:
  28. */
  29. publicMail(){
  30. }
  31. /**
  32. *<br>方法说明:构造器,提供直接的参数传入
  33. *<br>输入参数:
  34. *<br>返回类型:
  35. */
  36. publicMail(Stringto,Stringfrom,StringsmtpServer,Stringusername,Stringpassword,Stringsubject,Stringcontent){
  37. this.to=to;
  38. this.from=from;
  39. this.host=smtpServer;
  40. this.username=username;
  41. this.password=password;
  42. this.subject=subject;
  43. this.content=content;
  44. }
  45. /**
  46. *<br>方法说明:设置邮件服务器地址
  47. *<br>输入参数:Stringhost邮件服务器地址名称
  48. *<br>返回类型:
  49. */
  50. publicvoidsetHost(Stringhost){
  51. this.host=host;
  52. }
  53. /**
  54. *<br>方法说明:设置登录服务器校验密码
  55. *<br>输入参数:
  56. *<br>返回类型:
  57. */
  58. publicvoidsetPassWord(Stringpwd){
  59. this.password=pwd;
  60. }
  61. /**
  62. *<br>方法说明:设置登录服务器校验用户
  63. *<br>输入参数:
  64. *<br>返回类型:
  65. */
  66. publicvoidsetUserName(Stringusn){
  67. this.username=usn;
  68. }
  69. /**
  70. *<br>方法说明:设置邮件发送目的邮箱
  71. *<br>输入参数:
  72. *<br>返回类型:
  73. */
  74. publicvoidsetTo(Stringto){
  75. this.to=to;
  76. }
  77. /**
  78. *<br>方法说明:设置邮件发送源邮箱
  79. *<br>输入参数:
  80. *<br>返回类型:
  81. */
  82. publicvoidsetFrom(Stringfrom){
  83. this.from=from;
  84. }
  85. /**
  86. *<br>方法说明:设置邮件主题
  87. *<br>输入参数:
  88. *<br>返回类型:
  89. */
  90. publicvoidsetSubject(Stringsubject){
  91. this.subject=subject;
  92. }
  93. /**
  94. *<br>方法说明:设置邮件内容
  95. *<br>输入参数:
  96. *<br>返回类型:
  97. */
  98. publicvoidsetContent(Stringcontent){
  99. this.content=content;
  100. }
  101. /**
  102. *<br>方法说明:把主题转换为中文
  103. *<br>输入参数:StringstrText
  104. *<br>返回类型:
  105. */
  106. publicStringtransferChinese(StringstrText){
  107. try{
  108. strText=MimeUtility.encodeText(newString(strText.getBytes(),"GB2312"),"GB2312","B");
  109. }catch(Exceptione){
  110. e.printStackTrace();
  111. }
  112. returnstrText;
  113. }
  114. /**
  115. *<br>方法说明:往附件组合中添加附件
  116. *<br>输入参数:
  117. *<br>返回类型:
  118. */
  119. publicvoidattachfile(Stringfname){
  120. file.addElement(fname);
  121. }
  122. /**
  123. *<br>方法说明:发送邮件
  124. *<br>输入参数:
  125. *<br>返回类型:boolean成功为true,反之为false
  126. */
  127. publicbooleansendMail(){
  128. //构造mailsession
  129. Propertiesprops=System.getProperties();
  130. props.put("mail.smtp.host",host);
  131. props.put("mail.smtp.auth","true");
  132. Sessionsession=Session.getDefaultInstance(props,newAuthenticator(){
  133. publicPasswordAuthenticationgetPasswordAuthentication(){
  134. returnnewPasswordAuthentication(username,password);
  135. }
  136. });
  137. try{
  138. //构造MimeMessage并设定基本的值
  139. MimeMessagemsg=newMimeMessage(session);
  140. msg.setFrom(newInternetAddress(from));
  141. InternetAddress[]address={newInternetAddress(to)};
  142. msg.setRecipients(Message.RecipientType.TO,address);
  143. subject=transferChinese(subject);
  144. msg.setSubject(subject);
  145. //构造Multipart
  146. Multipartmp=newMimeMultipart();
  147. //向Multipart添加正文
  148. MimeBodyPartmbpContent=newMimeBodyPart();
  149. mbpContent.setText(content);
  150. //向MimeMessage添加(Multipart代表正文)
  151. mp.addBodyPart(mbpContent);
  152. //向Multipart添加附件
  153. Enumerationefile=file.elements();
  154. while(efile.hasMoreElements()){
  155. MimeBodyPartmbpFile=newMimeBodyPart();
  156. filename=efile.nextElement().toString();
  157. FileDataSourcefds=newFileDataSource(filename);
  158. mbpFile.setDataHandler(newDataHandler(fds));
  159. mbpFile.setFileName(fds.getName());
  160. //向MimeMessage添加(Multipart代表附件)
  161. mp.addBodyPart(mbpFile);
  162. }
  163. file.removeAllElements();
  164. //向Multipart添加MimeMessage
  165. msg.setContent(mp);
  166. msg.setSentDate(newDate());
  167. //发送邮件
  168. Transport.send(msg);
  169. }catch(MessagingExceptionmex){
  170. mex.printStackTrace();
  171. Exceptionex=null;
  172. if((ex=mex.getNextException())!=null){
  173. ex.printStackTrace();
  174. }
  175. returnfalse;
  176. }
  177. returntrue;
  178. }
  179. /**
  180. *<br>方法说明:主方法,用于测试
  181. *<br>输入参数:
  182. *<br>返回类型:
  183. */
  184. publicstaticvoidmain(String[]args){
  185. Mailsendmail=newMail();
  186. sendmail.setHost("smtp.126.com");
  187. sendmail.setUserName("umgsai");
  188. sendmail.setPassWord("********");//*代表你的密码
  189. sendmail.setTo("[email protected]");
  190. sendmail.setFrom("[email protected]");
  191. sendmail.setSubject("你好,这是测试!");
  192. sendmail.setContent("你好这是一个带多附件的测试!");
  193. //Mailsendmail=newMail("[email protected]","[email protected]","smtp.sohu.com","du_jiang","31415926","你好","胃,你好吗?");
  194. sendmail.attachfile("c:\\test.txt");
  195. //sendmail.attachfile("DND.jar");
  196. sendmail.sendMail();
  197. }
  198. }//end

需要加入两个Jar文件,并且保证你所在的网络的25号端口没有被封锁。

本文出自 “阿凡达” 博客,请务必保留此出处http://shamrock.blog.51cto.com/2079212/832235

你可能感兴趣的:(java)