`
hbhgjiangkun
  • 浏览: 100771 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

javamail发送带附件的邮件

 
阅读更多
  1. packagemail;
  2. importjava.util.*;
  3. importjava.io.*;
  4. importjavax.mail.*;
  5. importjavax.mail.internet.*;
  6. importjavax.activation.*;
  7. publicclassMail{
  8. //定义发件人、收件人、SMTP服务器、用户名、密码、主题、内容等
  9. privateStringdisplayName;
  10. privateStringto;
  11. privateStringfrom;
  12. privateStringsmtpServer;
  13. privateStringusername;
  14. privateStringpassword;
  15. privateStringsubject;
  16. privateStringcontent;
  17. privatebooleanifAuth;//服务器是否要身份认证
  18. privateStringfilename="";
  19. privateVectorfile=newVector();//用于保存发送附件的文件名的集合
  20. /**
  21. *设置SMTP服务器地址
  22. */
  23. publicvoidsetSmtpServer(StringsmtpServer){
  24. this.smtpServer=smtpServer;
  25. }
  26. /**
  27. *设置发件人的地址
  28. */
  29. publicvoidsetFrom(Stringfrom){
  30. this.from=from;
  31. }
  32. /**
  33. *设置显示的名称
  34. */
  35. publicvoidsetDisplayName(StringdisplayName){
  36. this.displayName=displayName;
  37. }
  38. /**
  39. *设置服务器是否需要身份认证
  40. */
  41. publicvoidsetIfAuth(booleanifAuth){
  42. this.ifAuth=ifAuth;
  43. }
  44. /**
  45. *设置E-mail用户名
  46. */
  47. publicvoidsetUserName(Stringusername){
  48. this.username=username;
  49. }
  50. /**
  51. *设置E-mail密码
  52. */
  53. publicvoidsetPassword(Stringpassword){
  54. this.password=password;
  55. }
  56. /**
  57. *设置接收者
  58. */
  59. publicvoidsetTo(Stringto){
  60. this.to=to;
  61. }
  62. /**
  63. *设置主题
  64. */
  65. publicvoidsetSubject(Stringsubject){
  66. this.subject=subject;
  67. }
  68. /**
  69. *设置主体内容
  70. */
  71. publicvoidsetContent(Stringcontent){
  72. this.content=content;
  73. }
  74. /**
  75. *该方法用于收集附件名
  76. */
  77. publicvoidaddAttachfile(Stringfname){
  78. file.addElement(fname);
  79. }
  80. publicMail(){
  81. }
  82. /**
  83. *初始化SMTP服务器地址、发送者E-mail地址、用户名、密码、接收者、主题、内容
  84. */
  85. publicMail(StringsmtpServer,Stringfrom,StringdisplayName,Stringusername,Stringpassword,Stringto,Stringsubject,Stringcontent){
  86. this.smtpServer=smtpServer;
  87. this.from=from;
  88. this.displayName=displayName;
  89. this.ifAuth=true;
  90. this.username=username;
  91. this.password=password;
  92. this.to=to;
  93. this.subject=subject;
  94. this.content=content;
  95. }
  96. /**
  97. *初始化SMTP服务器地址、发送者E-mail地址、接收者、主题、内容
  98. */
  99. publicMail(StringsmtpServer,Stringfrom,StringdisplayName,Stringto,Stringsubject,Stringcontent){
  100. this.smtpServer=smtpServer;
  101. this.from=from;
  102. this.displayName=displayName;
  103. this.ifAuth=false;
  104. this.to=to;
  105. this.subject=subject;
  106. this.content=content;
  107. }
  108. /**
  109. *发送邮件
  110. */
  111. publicHashMapsend(){
  112. HashMapmap=newHashMap();
  113. map.put("state","success");
  114. Stringmessage="邮件发送成功!";
  115. Sessionsession=null;
  116. Propertiesprops=System.getProperties();
  117. props.put("mail.smtp.host",smtpServer);
  118. if(ifAuth){//服务器需要身份认证
  119. props.put("mail.smtp.auth","true");
  120. SmtpAuthsmtpAuth=newSmtpAuth(username,password);
  121. session=Session.getDefaultInstance(props,smtpAuth);
  122. }else{
  123. props.put("mail.smtp.auth","false");
  124. session=Session.getDefaultInstance(props,null);
  125. }
  126. session.setDebug(true);
  127. Transporttrans=null;
  128. try{
  129. Messagemsg=newMimeMessage(session);
  130. try{
  131. Addressfrom_address=newInternetAddress(from,displayName);
  132. msg.setFrom(from_address);
  133. }catch(java.io.UnsupportedEncodingExceptione){
  134. e.printStackTrace();
  135. }
  136. InternetAddress[]address={newInternetAddress(to)};
  137. msg.setRecipients(Message.RecipientType.TO,address);
  138. msg.setSubject(subject);
  139. Multipartmp=newMimeMultipart();
  140. MimeBodyPartmbp=newMimeBodyPart();
  141. mbp.setContent(content.toString(),"text/html;charset=gb2312");
  142. mp.addBodyPart(mbp);
  143. if(!file.isEmpty()){//有附件
  144. Enumerationefile=file.elements();
  145. while(efile.hasMoreElements()){
  146. mbp=newMimeBodyPart();
  147. filename=efile.nextElement().toString();//选择出每一个附件名
  148. FileDataSourcefds=newFileDataSource(filename);//得到数据源
  149. mbp.setDataHandler(newDataHandler(fds));//得到附件本身并至入BodyPart
  150. mbp.setFileName(fds.getName());//得到文件名同样至入BodyPart
  151. mp.addBodyPart(mbp);
  152. }
  153. file.removeAllElements();
  154. }
  155. msg.setContent(mp);//Multipart加入到信件
  156. msg.setSentDate(newDate());//设置信件头的发送日期
  157. //发送信件
  158. msg.saveChanges();
  159. trans=session.getTransport("smtp");
  160. trans.connect(smtpServer,username,password);
  161. trans.sendMessage(msg,msg.getAllRecipients());
  162. trans.close();
  163. }catch(AuthenticationFailedExceptione){
  164. map.put("state","failed");
  165. message="邮件发送失败!错误原因:/n"+"身份验证错误!";
  166. e.printStackTrace();
  167. }catch(MessagingExceptione){
  168. message="邮件发送失败!错误原因:/n"+e.getMessage();
  169. map.put("state","failed");
  170. e.printStackTrace();
  171. Exceptionex=null;
  172. if((ex=e.getNextException())!=null){
  173. System.out.println(ex.toString());
  174. ex.printStackTrace();
  175. }
  176. }
  177. //System.out.println("/n提示信息:"+message);
  178. map.put("message",message);
  179. returnmap;
  180. }
  181. }


SmtpAuth.java 代码
  1. packagemail;
  2. publicclassSmtpAuthextendsjavax.mail.Authenticator{
  3. privateStringusername,password;
  4. publicSmtpAuth(Stringusername,Stringpassword){
  5. this.username=username;
  6. this.password=password;
  7. }
  8. protectedjavax.mail.PasswordAuthenticationgetPasswordAuthentication(){
  9. returnnewjavax.mail.PasswordAuthentication(username,password);
  10. }
  11. }
分享到:
评论

相关推荐

    06 使用JavaMail发送带附件的邮件.exe

    06 使用JavaMail发送带附件的邮件.exe06 使用JavaMail发送带附件的邮件.exe

    JavaMail(3)——发送带附件的邮件.docx

    下面将详细解释如何利用JavaMail发送带有附件的邮件。 首先,你需要导入以下关键的JavaMail和Java Activation Framework (JAF) 类: ```java import javax.mail.*; import javax.mail.internet.*; import javax....

    JavaMail发送带附件的邮件

    以上就是使用JavaMail发送带附件的邮件的基本流程。需要注意的是,实际应用中可能需要处理更多复杂情况,例如错误处理、SSL/TLS加密连接、多部分邮件(包含HTML内容和文本内容)等。同时,确保你有正确的SMTP服务器...

    Gmail邮件通过JavaMail发送(不带附件与带一个附件)

    在使用JavaMail发送邮件前,你需要在项目中引入相关的依赖包。在描述中提到的"javamail"可能是指JavaMail的jar包,这是进行邮件操作的基础。确保你的项目已包含以下两个关键的JavaMail库: 1. `javax.mail-api.jar`...

    JavaMail发送邮件(文本、html、附件)

    以上就是使用JavaMail发送文本、HTML和附件邮件的详细步骤。在实际应用中,还需要考虑错误处理、邮件格式验证、多线程发送等复杂情况。同时,对于企业级应用,通常会使用邮件服务提供商如SendGrid、Mailgun等,它们...

    javamail发送邮件(带附件)

    这个资源提供了一个具体的示例,展示了如何使用JavaMail API 来发送带有附件的邮件。以下是对这个主题的详细解释: 首先,你需要理解JavaMail的核心组件。`javax.mail` 和 `javax.mail.internet` 包含了发送邮件所...

    javaMail发送邮件 发送成功 收不到邮件 或收到邮件无主题无收件人乱码

    ### JavaMail发送邮件时遇到的问题及解决方法 在使用JavaMail进行邮件发送的过程中,可能会遇到以下几种常见问题:发送成功但收件方未收到邮件、邮件收到后无主题或无收件人信息以及邮件内容出现乱码等情况。本文将...

    james和javamail实现邮件收发(带发送附件)

    下面是一个简化的JavaMail发送邮件的过程: 1. **配置邮件会话**:首先,我们需要创建一个`Properties`对象,并设置SMTP服务器的相关参数,如主机名和端口号。然后,通过`Session.getInstance()`方法初始化一个邮件...

    JavaMail邮件发送(带附件)

    JavaMail邮件发送(带附件)

    javamail发送、接收邮件

    通过解析给定文件的标题、描述、标签及部分内容,我们可以深入探讨javamail发送与接收邮件的详细教程,以及如何利用JavaMail API实现邮件功能。 ### javamail发送、接收邮件 JavaMail API是由Sun Microsystems开发...

    java email 发送带附件的邮件

    以上就是使用JavaMail发送带附件邮件的基本流程。需要注意的是,实际应用中可能还需要处理异常、超时和其他复杂情况。此外,对于大型附件或大量邮件,应考虑使用连接池和异步处理以提高性能。 在阅读和实现上述代码...

    JavaMail发送邮件的例子

    下面我们将深入探讨JavaMail的基本概念、如何使用JavaMail发送邮件以及在Struts2框架中的实现方式。 JavaMail API主要包括以下组件: 1. `javax.mail.Session`:是JavaMail的核心,负责配置邮件服务器的信息,如...

    用javaMail发送邮件

    下面是一个简单的JavaMail发送邮件的步骤: 1. **导入必要的库**:首先,在项目中导入`mail.jar`和`activation.jar`,确保编译和运行时能够访问到这些库。 2. **配置邮件会话**:创建一个`Properties`对象,设置...

    javamail发送邮件.zip

    这个“javamail发送邮件.zip”压缩包显然包含了一个示例项目,演示如何使用JavaMail API发送包含正文文本、图片以及附件的邮件。以下是对这个主题的详细解释: 1. **JavaMail API**: JavaMail API 是一组接口和类...

    javamail 可带附件demo 源码

    JavaMail 是一个开源库,它提供了在Java应用程序中发送和接收电子邮件的标准API。这个源码示例是关于如何使用JavaMail来发送带有附件...这个源码示例是一个很好的起点,帮助开发者理解并应用JavaMail发送带附件的邮件。

    javamail发送html邮件

    JavaMail API 是一个用于发送、接收电子邮件的标准接口集合,它支持多种协议(如 SMTP、IMAP 和 POP3),使得 Java 应用程序能够轻松地发送和接收电子邮件。 #### 二、发送 HTML 格式的邮件 在实际应用中,经常需要...

    java 发送附件mail

    总结一下,Java发送带有附件的邮件涉及到JavaMail API的使用,包括配置SMTP服务器、创建邮件对象、添加内容和附件,以及发送邮件等步骤。理解这些步骤和相关类的作用是实现此功能的关键。在处理不同类型的邮件时,...

    利用JavaMail发送邮件的实例,可以直接运行

    8. **使用JavaMail发送HTML邮件**:通过设置`MimeMessage`的`setContent()`方法,可以发送包含HTML的邮件。 ```java message.setContent("<h1>HTML邮件标题</h1><p>这是HTML邮件正文。</p>", "text/html;charset=...

Global site tag (gtag.js) - Google Analytics