`
hendryxu
  • 浏览: 123768 次
  • 来自: ...
最近访客 更多访客>>
社区版块
存档分类
最新评论

用javamail发送带附件的邮件

阅读更多

 

MailUtils代码
  1. public class MailUtils {   
  2. //  定义发件人、收件人、SMTP服务器、用户名、密码、主题、内容等      
  3.     private String displayName;      
  4.     private String to;      
  5.     private String cc;      
  6.     private String from;      
  7.     private String smtpServer;      
  8.     private String username;      
  9.     private String password;      
  10.     private String subject;      
  11.     private String content;      
  12.     private boolean isAuth = false//服务器是否要身份认证      
  13.     private File filename;      
  14.     private List<File> files = new ArrayList<File>(); //用于保存发送附件的文件名的集合      
  15.     /**    
  16.      * 设置SMTP服务器地址    
  17.      */      
  18.     public void setSmtpServer(String smtpServer){      
  19.         this.smtpServer=smtpServer;      
  20.     }      
  21.     /**    
  22.      * 设置发件人的地址    
  23.      */      
  24.     public void setFrom(String from){      
  25.         this.from=from;      
  26.     }      
  27.     /**    
  28.      * 设置抄送人的地址    
  29.      */    
  30.     public void setCc(String cc) {   
  31.         this.cc = cc;   
  32.     }   
  33.     /**    
  34.      * 设置显示的名称    
  35.      */      
  36.     public void setDisplayName(String displayName){      
  37.         this.displayName=displayName;      
  38.     }      
  39.     /**    
  40.      * 设置服务器是否需要身份认证    
  41.      */      
  42.     public void setAuth(boolean isAuth){      
  43.         this.isAuth=isAuth;      
  44.     }      
  45.     /**    
  46.      * 设置E-mail用户名    
  47.      */      
  48.     public void setUserName(String username){      
  49.         this.username=username;      
  50.     }      
  51.     /**    
  52.      * 设置E-mail密码    
  53.      */      
  54.     public void setPassword(String password){      
  55.         this.password=password;      
  56.     }      
  57.     /**    
  58.      * 设置接收者    
  59.      */      
  60.     public void setTo(String to){      
  61.         this.to=to;      
  62.     }      
  63.     /**    
  64.      * 设置主题    
  65.      */      
  66.     public void setSubject(String subject){      
  67.         this.subject=subject;      
  68.     }      
  69.     /**    
  70.      * 设置主体内容    
  71.      */      
  72.     public void setContent(String content){      
  73.         this.content=content;      
  74.     }      
  75.     /**    
  76.      * 该方法用于收集附件名    
  77.      */      
  78.     public void addAttachfile(File fname){      
  79.         files.add(fname);      
  80.     }      
  81.       
  82.     /**    
  83.      * 发送邮件    
  84.      */      
  85.     public HashMap send(){      
  86.         HashMap map=new HashMap();      
  87.         map.put("success""true");      
  88.         String message="邮件发送成功!";      
  89.         Session session=null;      
  90.         Properties props = System.getProperties();      
  91.         props.put("mail.smtp.host", smtpServer);      
  92.         if(isAuth){ //服务器需要身份认证      
  93.             props.put("mail.smtp.auth","true");         
  94.             MailAuthenticator mailAuth=new MailAuthenticator(username,password);      
  95.             session=Session.getDefaultInstance(props, mailAuth);       
  96.         }else{      
  97.             props.put("mail.smtp.auth","false");      
  98.             session=Session.getDefaultInstance(props, null);      
  99.         }      
  100. //        session.setDebug(true);      
  101.         Transport trans = null;        
  102.         try {      
  103.             Message msg = new MimeMessage(session);       
  104.             try{      
  105.                 Address from_address = new InternetAddress(from, displayName);      
  106.                 msg.setFrom(from_address);      
  107.             }catch(java.io.UnsupportedEncodingException e){      
  108.                 e.printStackTrace();      
  109.             }      
  110.             InternetAddress[] to_address=InternetAddress.parse(to);      
  111.             msg.setRecipients(Message.RecipientType.TO,to_address);      
  112.             InternetAddress[] cc_address=InternetAddress.parse(cc);      
  113.             msg.setRecipients(Message.RecipientType.CC,cc_address);      
  114.             msg.setSubject(subject);      
  115.             Multipart mp = new MimeMultipart();      
  116.             MimeBodyPart mbp = new MimeBodyPart();      
  117.             mbp.setContent(content.toString(), "text/html;charset=gb2312");      
  118.             mp.addBodyPart(mbp);        
  119.             if(!files.isEmpty()){//有附件      
  120.                 for(int i=0;i<files.size();i++){       
  121.                     mbp=new MimeBodyPart();      
  122.                     filename=files.get(i); //选择出每一个附件名      
  123.                     FileDataSource fds=new FileDataSource(filename); //得到数据源      
  124.                     mbp.setDataHandler(new DataHandler(fds)); //得到附件本身并至入BodyPart      
  125.                     mbp.setFileName(fds.getName());  //得到文件名同样至入BodyPart      
  126.                     mp.addBodyPart(mbp);      
  127.                 }        
  128.             }       
  129.             msg.setContent(mp); //Multipart加入到信件      
  130.             msg.setSentDate(new Date());     //设置信件头的发送日期      
  131.             //发送信件      
  132.             msg.saveChanges();       
  133.             trans = session.getTransport("smtp");      
  134.             trans.connect(smtpServer, username, password);      
  135.             trans.sendMessage(msg, msg.getAllRecipients());      
  136.             trans.close();      
  137.                  
  138.         }catch(AuthenticationFailedException e){         
  139.              map.put("success""false");      
  140.              message="邮件发送失败!错误原因:\n"+"身份验证错误!";      
  141.              e.printStackTrace();       
  142.         }catch (MessagingException e) {      
  143.              message="邮件发送失败!错误原因:\n"+e.getMessage();      
  144.              map.put("success""false");      
  145.              e.printStackTrace();      
  146.              Exception ex = null;      
  147.              if ((ex = e.getNextException()) != null) {      
  148.                  System.out.println(ex.toString());      
  149.                  ex.printStackTrace();      
  150.              }       
  151.         }      
  152.         //System.out.println("\n提示信息:"+message);      
  153.         map.put("message", message);      
  154.         return map;      
  155.     }      
  156. }   
MailAuthenticator 代码
  1. public class MailAuthenticator extends Authenticator    
  2. {    
  3.      private String username,password;       
  4.           
  5.         public MailAuthenticator(String username,String password){       
  6.             this.username = username;        
  7.             this.password = password;        
  8.         }       
  9.         protected javax.mail.PasswordAuthentication getPasswordAuthentication() {       
  10.             return new javax.mail.PasswordAuthentication(username,password);       
  11.         }    
  12. }   
FileFilter 代码
  1. public class FileFilter implements FilenameFilter {   
  2.        
  3.     String prefix,ext;   
  4.     public FileFilter(String prefix,String ext) {   
  5.         this.prefix=prefix;   
  6.         this.ext=ext;   
  7.     }   
  8.     public boolean accept(File dir, String name) {   
  9.         return name.startsWith(prefix) && name.endsWith(ext);   
  10.     }   
  11. }  
MailTest代码
  1. public class MailTest {   
  2.   
  3.     static Logger logger = Logger.getLogger(MailTest.class);   
  4.     /**  
  5.      * @param args  
  6.      */  
  7.     public static void main(String[] args) {   
  8.         Properties props= new Properties();   
  9.         Properties logProps= new Properties();   
  10.         String configFile ="mailConfig.properties";   
  11.         String logFile ="log4j-mail.properties";   
  12.         try {   
  13.         InputStream is = MailTest.class.getResourceAsStream(configFile);   
  14.         InputStream isLog = MailTest.class.getResourceAsStream(logFile);   
  15.         props.load(is);   
  16.         logProps.load(isLog);   
  17.         PropertyConfigurator.configure (logProps);   
  18.         if(is!=null) is.close();   
  19.         if(isLog!=null) isLog.close();   
  20.         }   
  21.         catch(Exception e) {   
  22.             System.out.println(e+"file "+configFile+" or "+logFile+" not found");   
  23.             logger.info(e+"file "+configFile+" or "+logFile+" not found");   
  24.         }   
  25.         String displayName=StringUtils.defaultString(props.getProperty("displayName")).trim();      
  26.         String to=StringUtils.defaultString(props.getProperty("to")).trim();      
  27.         String cc=StringUtils.defaultString(props.getProperty("cc")).trim();      
  28.         String from=StringUtils.defaultString(props.getProperty("from")).trim();      
  29.         String smtpServer=StringUtils.defaultString(props.getProperty("smtpServer")).trim();      
  30.         String username=StringUtils.defaultString(props.getProperty("username")).trim();      
  31.         String password=StringUtils.defaultString(props.getProperty("password")).trim();      
  32.         String subject=StringUtils.defaultString(props.getProperty("subject")).trim();      
  33.         String content=StringUtils.defaultString(props.getProperty("content")).trim();      
  34.         String isAuth=StringUtils.defaultString(props.getProperty("isAuth")).trim();   
  35.         String filePath =StringUtils.defaultString(props.getProperty("filePath")).trim();   
  36.         String filePrefix =StringUtils.defaultString(props.getProperty("filePrefix")).trim();   
  37.         String fileExt =StringUtils.defaultString(props.getProperty("fileExt")).trim();   
  38.         MailUtils mail = new MailUtils();   
  39.            
  40.         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");   
  41.         Date today = new Date();   
  42.         String todayStr = dateFormat.format(today);   
  43.         File path = new File(filePath);   
  44.         if (!path.isDirectory()) {   
  45.             System.out.println("filePath "+filePath+"目录错误");   
  46.             logger.info("filePath "+filePath+"目录错误");   
  47.             return;   
  48.         }   
  49.         else if (path.isDirectory()) {   
  50.             FilenameFilter filter = new FileFilter(todayStr+filePrefix,fileExt);   
  51.             File[] files = path.listFiles(filter);   
  52.             if(files.length==0){   
  53.                 System.out.println("attachment "+todayStr+filePrefix+"*."+fileExt+" is not exist");   
  54.                 logger.info("attachment "+todayStr+filePrefix+"*."+fileExt+" is not exist");   
  55.                 return;   
  56.             }   
  57.             for (int i = 0; i < files.length; i++) {   
  58.               if (files[i].exists() && files[i].isFile()) {   
  59.                   System.out.println("attachmentpath=" + files[i].getAbsolutePath());   
  60.                   logger.info("attachmentpath=" + files[i].getAbsolutePath());   
  61.                   mail.addAttachfile(files[i]);   
  62.               }   
  63.               else{   
  64.                   System.out.println("attachment "+todayStr+filePrefix+"*."+fileExt+" is not exist or file");   
  65.                   logger.info("attachment "+todayStr+filePrefix+"*."+fileExt+" is not exist or file");   
  66.                   return;   
  67.               }   
  68.             }   
  69.         }   
  70.            
  71.            
  72.         if("true".equalsIgnoreCase(isAuth)){   
  73.             mail.setAuth(true);   
  74.             mail.setUserName(username);   
  75.             mail.setPassword(password);   
  76.         }   
  77.         mail.setSmtpServer(smtpServer);   
  78.         mail.setFrom(from);   
  79.         mail.setTo(to);   
  80.         mail.setCc(cc);   
  81.         mail.setDisplayName(displayName);   
  82.         mail.setSubject(subject);   
  83.         mail.setContent(content);   
  84.            
  85.         Map map = mail.send();   
  86.         if("false".equals(map.get("success"))){   
  87.             System.out.println(map.get("message"));   
  88.             logger.info(map.get("message"));   
  89.         }else{   
  90.             System.out.println("mail send success");   
  91.             logger.info("mail send success");   
  92.         }   
  93.            
  94.     }   
  95.   
  96. }   
log4j代码
  1. log4j.rootLogger=INFO,A1   
  2.   
  3. log4j.appender.A1=org.apache.log4j.RollingFileAppender   
  4. log4j.appender.A1.File=d:/McdReportMail/log/log-McdReport.log   
  5. log4j.appender.A1.MaxFileSize=2048KB   
  6. log4j.appender.A1.MaxBackupIndex=10  
  7. log4j.appender.A1.layout=org.apache.log4j.PatternLayout   
  8. log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c][%L][%p] %m%n  
分享到:
评论

相关推荐

    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等,它们...

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

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

    javamail发送邮件(带附件)

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

    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 是一组接口和类...

    Android 使用javamail发送邮件

    总的来说,"Android使用javamail发送邮件"这个主题涵盖了Android平台上利用JavaMail API实现邮件发送的基本流程和注意事项,包括设置SMTP服务器、构建邮件消息、处理附件以及可能的安全性和用户体验优化。...

    使用javaMail发送邮件

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

    javamail 可带附件demo 源码

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

    javamail发送html邮件

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

Global site tag (gtag.js) - Google Analytics