`
redleaf
  • 浏览: 127745 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

用javamail发送带附件的邮件

    博客分类:
  • JAVA
阅读更多
mail.java 代码
 
  1. package mail;  
  2.   
  3. import java.util.* ;  
  4. import java.io.* ;  
  5. import javax.mail.* ;  
  6. import javax.mail.internet.* ;  
  7. import javax.activation.* ;  
  8. public class Mail {  
  9.     //定义发件人、收件人、SMTP服务器、用户名、密码、主题、内容等  
  10.     private String displayName;  
  11.     private String to;  
  12.     private String from;  
  13.     private String smtpServer;  
  14.     private String username;  
  15.     private String password;  
  16.     private String subject;  
  17.     private String content;  
  18.     private boolean ifAuth; //服务器是否要身份认证  
  19.     private String filename="";  
  20.     private Vector file = new Vector(); //用于保存发送附件的文件名的集合  
  21.      
  22.      
  23.     /** 
  24.      * 设置SMTP服务器地址 
  25.      */  
  26.     public void setSmtpServer(String smtpServer){  
  27.         this.smtpServer=smtpServer;  
  28.     }  
  29.      
  30.     /** 
  31.      * 设置发件人的地址 
  32.      */  
  33.     public void setFrom(String from){  
  34.         this.from=from;  
  35.     }  
  36.     /** 
  37.      * 设置显示的名称 
  38.      */  
  39.     public void setDisplayName(String displayName){  
  40.         this.displayName=displayName;  
  41.     }  
  42.      
  43.     /** 
  44.      * 设置服务器是否需要身份认证 
  45.      */  
  46.     public void setIfAuth(boolean ifAuth){  
  47.         this.ifAuth=ifAuth;  
  48.     }  
  49.      
  50.     /** 
  51.      * 设置E-mail用户名 
  52.      */  
  53.     public void setUserName(String username){  
  54.         this.username=username;  
  55.     }  
  56.      
  57.     /** 
  58.      * 设置E-mail密码 
  59.      */  
  60.     public void setPassword(String password){  
  61.         this.password=password;  
  62.     }  
  63.      
  64.     /** 
  65.      * 设置接收者 
  66.      */  
  67.     public void setTo(String to){  
  68.         this.to=to;  
  69.     }  
  70.      
  71.     /** 
  72.      * 设置主题 
  73.      */  
  74.     public void setSubject(String subject){  
  75.         this.subject=subject;  
  76.     }  
  77.      
  78.     /** 
  79.      * 设置主体内容 
  80.      */  
  81.     public void setContent(String content){  
  82.         this.content=content;  
  83.     }  
  84.      
  85.     /** 
  86.      * 该方法用于收集附件名 
  87.      */  
  88.     public void addAttachfile(String fname){  
  89.         file.addElement(fname);  
  90.     }  
  91.      
  92.     public Mail(){  
  93.          
  94.     }  
  95.      
  96.     /** 
  97.      * 初始化SMTP服务器地址、发送者E-mail地址、用户名、密码、接收者、主题、内容 
  98.      */  
  99.     public Mail(String smtpServer,String from,String displayName,String username,String password,String to,String subject,String content){  
  100.         this.smtpServer=smtpServer;  
  101.         this.from=from;  
  102.         this.displayName=displayName;  
  103.         this.ifAuth=true;  
  104.         this.username=username;  
  105.         this.password=password;  
  106.         this.to=to;  
  107.         this.subject=subject;  
  108.         this.content=content;  
  109.     }  
  110.      
  111.     /** 
  112.      * 初始化SMTP服务器地址、发送者E-mail地址、接收者、主题、内容 
  113.      */  
  114.     public Mail(String smtpServer,String from,String displayName,String to,String subject,String content){  
  115.         this.smtpServer=smtpServer;  
  116.         this.from=from;  
  117.         this.displayName=displayName;  
  118.         this.ifAuth=false;  
  119.         this.to=to;  
  120.         this.subject=subject;  
  121.         this.content=content;  
  122.     }  
  123.   
  124.     /** 
  125.      * 发送邮件 
  126.      */  
  127.     public HashMap send(){  
  128.         HashMap map=new HashMap();  
  129.         map.put("state""success");  
  130.         String message="邮件发送成功!";  
  131.         Session session=null;  
  132.         Properties props = System.getProperties();  
  133.         props.put("mail.smtp.host", smtpServer);  
  134.         if(ifAuth){ //服务器需要身份认证  
  135.             props.put("mail.smtp.auth","true");     
  136.             SmtpAuth smtpAuth=new SmtpAuth(username,password);  
  137.             session=Session.getDefaultInstance(props, smtpAuth);   
  138.         }else{  
  139.             props.put("mail.smtp.auth","false");  
  140.             session=Session.getDefaultInstance(props, null);  
  141.         }  
  142.         session.setDebug(true);  
  143.         Transport trans = null;    
  144.         try {  
  145.             Message msg = new MimeMessage(session);   
  146.             try{  
  147.                 Address from_address = new InternetAddress(from, displayName);  
  148.                 msg.setFrom(from_address);  
  149.             }catch(java.io.UnsupportedEncodingException e){  
  150.                 e.printStackTrace();  
  151.             }  
  152.             InternetAddress[] address={new InternetAddress(to)};  
  153.             msg.setRecipients(Message.RecipientType.TO,address);  
  154.             msg.setSubject(subject);  
  155.             Multipart mp = new MimeMultipart();  
  156.             MimeBodyPart mbp = new MimeBodyPart();  
  157.             mbp.setContent(content.toString(), "text/html;charset=gb2312");  
  158.             mp.addBodyPart(mbp);    
  159.             if(!file.isEmpty()){//有附件  
  160.                 Enumeration efile=file.elements();  
  161.                 while(efile.hasMoreElements()){   
  162.                     mbp=new MimeBodyPart();  
  163.                     filename=efile.nextElement().toString(); //选择出每一个附件名  
  164.                     FileDataSource fds=new FileDataSource(filename); //得到数据源  
  165.                     mbp.setDataHandler(new DataHandler(fds)); //得到附件本身并至入BodyPart  
  166.                     mbp.setFileName(fds.getName());  //得到文件名同样至入BodyPart  
  167.                     mp.addBodyPart(mbp);  
  168.                 }    
  169.                 file.removeAllElements();      
  170.             }   
  171.             msg.setContent(mp); //Multipart加入到信件  
  172.             msg.setSentDate(new Date());     //设置信件头的发送日期  
  173.             //发送信件  
  174.             msg.saveChanges();   
  175.             trans = session.getTransport("smtp");  
  176.             trans.connect(smtpServer, username, password);  
  177.             trans.sendMessage(msg, msg.getAllRecipients());  
  178.             trans.close();  
  179.              
  180.         }catch(AuthenticationFailedException e){     
  181.              map.put("state""failed");  
  182.              message="邮件发送失败!错误原因:\n"+"身份验证错误!";  
  183.              e.printStackTrace();   
  184.         }catch (MessagingException e) {  
  185.              message="邮件发送失败!错误原因:\n"+e.getMessage();  
  186.              map.put("state""failed");  
  187.              e.printStackTrace();  
  188.              Exception ex = null;  
  189.              if ((ex = e.getNextException()) != null) {  
  190.                  System.out.println(ex.toString());  
  191.                  ex.printStackTrace();  
  192.              }   
  193.         }  
  194.         //System.out.println("\n提示信息:"+message);  
  195.         map.put("message", message);  
  196.         return map;  
  197.     }  
  198.      
  199. }  


SmtpAuth.java 代码
 
  1. package mail;  
  2.   
  3. public class SmtpAuth extends javax.mail.Authenticator {   
  4.     private String username,password;   
  5.   
  6.     public SmtpAuth(String username,String password){   
  7.         this.username = username;    
  8.         this.password = password;    
  9.     }   
  10.     protected javax.mail.PasswordAuthentication getPasswordAuthentication() {   
  11.         return new javax.mail.PasswordAuthentication(username,password);   
  12.     }   
  13. }   


存在的问题就是发送到163的邮件全部都带有一个附件的符号,不管有没有发送附件,还请大家指点一下!!!
分享到:
评论
7 楼 fpg958070100 2013-06-22  
我想问个问题,发送到163、126的邮件,content的内容会被当作附件的形式发出去,您遇到过这样的情况么?
6 楼 qinjuning 2013-01-29  
不建议使用qq邮箱,上传文件至qq邮箱时,可能无法打开。
 
   建议使用163邮箱。

另外博主说的问题,大概是引用的jar包路径有问题。Thx。
5 楼 s_jd 2008-04-24  
我的意思是在论坛中说已经解决了上面的问题,不知道是怎么解决的
4 楼 s_jd 2008-04-24  
请问怎么解决的呀?我看了不是很明白,刚用Javamail,希望能指点下,谢谢
3 楼 yudan_pekin 2007-08-30  
谢谢楼主
2 楼 qq17906 2007-05-14  
学习中...
1 楼 fishinlove 2007-05-09  
不错的说,打算试一下.

相关推荐

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

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

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

    以上就是使用JavaMail发送带有附件的邮件的基本步骤。这个过程需要正确配置邮件服务器的属性,如SMTP服务器地址、端口、用户名和密码(如果需要身份验证)。`MailSenderInfo` 类通常会封装这些配置信息。 总的来说...

    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` 包含了发送邮件所...

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

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

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

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

    用javaMail发送邮件

    以上就是使用JavaMail发送邮件的基本过程。在实际开发中,可能还需要处理更多复杂情况,如SSL/TLS加密、HTML邮件、多部分消息等。JavaMail API提供了丰富的功能来应对这些需求,让开发者能够灵活地构建邮件系统。 ...

    JavaMail邮件发送(带附件)

    JavaMail邮件发送(带附件)

    javamail发送、接收邮件

    给定的部分内容展示了如何使用JavaMail API发送带有附件的邮件。代码中使用了`MimeMessage`、`MimeBodyPart`、`MimeMultipart`等类来构建邮件消息,同时通过`DataHandler`和`FileDataSource`来处理邮件附件。此外,...

    JavaMail发送邮件的例子

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

    使用JAVAMail代发邮件

    使用 JavaMail 库可以轻松地在 Java 应用程序中发送电子邮件。JavaMail 是一个 Java API,用于在 Java 应用程序中发送和接收电子邮件。它提供了一个抽象层,允许开发者使用不同的电子邮件协议,例如 SMTP、POP3 和 ...

    javamail发送邮件.zip

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

    使用javaMail发送邮件

    在本篇文章中,我们将深入探讨如何使用JavaMail API来实现邮件的发送功能。 首先,我们需要引入JavaMail所需的依赖库。在提供的文件列表中,我们看到有以下jar文件: 1. mail.jar:这是JavaMail的核心库,包含了...

    javamail 可带附件demo 源码

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

    javamail发送html邮件

    ### JavaMail 发送 HTML 格式邮件的知识点详解 ...综上所述,使用 JavaMail 发送 HTML 格式的邮件涉及到邮件服务器的配置、邮件内容的构建等多个方面,通过合理的类设计和代码实现可以有效地完成这一任务。

    javamail实现邮箱与邮箱发送邮件

    下面是一个使用JavaMail发送邮件的详细示例代码: ```java import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class EmailSender { public ...

Global site tag (gtag.js) - Google Analytics