javamail发送邮件

 转载的,经测试,很好用

  
  
  
  
  1. package org.mail.core;   
  2.    
  3. import java.util.Date;   
  4. import java.util.Enumeration;   
  5. import java.util.Properties;   
  6. import java.util.Vector;   
  7.    
  8. import javax.activation.DataHandler;   
  9. import javax.activation.FileDataSource;   
  10. import javax.mail.Authenticator;   
  11. import javax.mail.Message;   
  12. import javax.mail.MessagingException;   
  13. import javax.mail.Multipart;   
  14. import javax.mail.PasswordAuthentication;   
  15. import javax.mail.Session;   
  16. import javax.mail.Transport;   
  17. import javax.mail.internet.InternetAddress;   
  18. import javax.mail.internet.MimeBodyPart;   
  19. import javax.mail.internet.MimeMessage;   
  20. import javax.mail.internet.MimeMultipart;   
  21. import javax.mail.internet.MimeUtility;   
  22.    
  23. /**  
  24.  * Title: 使用javamail发送邮件  
  25.  * Description: 演示如何使用javamail包发送电子邮件。这个实例可发送多附件  
  26.  * @version 1.0  
  27.  */   
  28. public class SendMail {   
  29.    
  30.     String to = "";// 收件人   
  31.     String from = "";// 发件人   
  32.     String host = "";// smtp主机   
  33.     String username = "";   
  34.     String password = "";   
  35.     String filename = "";// 附件文件名   
  36.     String subject = "";// 邮件主题   
  37.     String content = "";// 邮件正文   
  38.     Vector file = new Vector();// 附件文件集合   
  39.    
  40.     /**  
  41.      * <br>  
  42.      * 方法说明:默认构造器 <br>  
  43.      * 输入参数: <br>  
  44.      * 返回类型:  
  45.      */   
  46.     public SendMail() {   
  47.     }   
  48.    
  49.     /**  
  50.      * <br>  
  51.      * 方法说明:构造器,提供直接的参数传入 <br>  
  52.      * 输入参数: <br>  
  53.      * 返回类型:  
  54.      */   
  55.     public SendMail(String to, String from, String smtpServer, String username,   
  56.             String password, String subject, String content) {   
  57.         this.to = to;   
  58.         this.from = from;   
  59.         this.host = smtpServer;   
  60.         this.username = username;   
  61.         this.password = password;   
  62.         this.subject = subject;   
  63.         this.content = content;   
  64.     }   
  65.    
  66.     /**  
  67.      * <br>  
  68.      * 方法说明:设置邮件服务器地址 <br>  
  69.      * 输入参数:String host 邮件服务器地址名称 <br>  
  70.      * 返回类型:  
  71.      */   
  72.     public void setHost(String host) {   
  73.         this.host = host;   
  74.     }   
  75.    
  76.     /**  
  77.      * <br>  
  78.      * 方法说明:设置登录服务器校验密码 <br>  
  79.      * 输入参数: <br>  
  80.      * 返回类型:  
  81.      */   
  82.     public void setPassWord(String pwd) {   
  83.         this.password = pwd;   
  84.     }   
  85.    
  86.     /**  
  87.      * <br>  
  88.      * 方法说明:设置登录服务器校验用户 <br>  
  89.      * 输入参数: <br>  
  90.      * 返回类型:  
  91.      */   
  92.     public void setUserName(String usn) {   
  93.         this.username = usn;   
  94.     }   
  95.    
  96.     /**  
  97.      * <br>  
  98.      * 方法说明:设置邮件发送目的邮箱 <br>  
  99.      * 输入参数: <br>  
  100.      * 返回类型:  
  101.      */   
  102.     public void setTo(String to) {   
  103.         this.to = to;   
  104.     }   
  105.    
  106.     /**  
  107.      * <br>  
  108.      * 方法说明:设置邮件发送源邮箱 <br>  
  109.      * 输入参数: <br>  
  110.      * 返回类型:  
  111.      */   
  112.     public void setFrom(String from) {   
  113.         this.from = from;   
  114.     }   
  115.    
  116.     /**  
  117.      * <br>  
  118.      * 方法说明:设置邮件主题 <br>  
  119.      * 输入参数: <br>  
  120.      * 返回类型:  
  121.      */   
  122.     public void setSubject(String subject) {   
  123.         this.subject = subject;   
  124.     }   
  125.    
  126.     /**  
  127.      * <br>  
  128.      * 方法说明:设置邮件内容 <br>  
  129.      * 输入参数: <br>  
  130.      * 返回类型:  
  131.      */   
  132.     public void setContent(String content) {   
  133.         this.content = content;   
  134.     }   
  135.    
  136.     /**  
  137.      * <br>  
  138.      * 方法说明:把主题转换为中文 <br>  
  139.      * 输入参数:String strText <br>  
  140.      * 返回类型:  
  141.      */   
  142.     public String transferChinese(String strText) {   
  143.         try {   
  144.             strText = MimeUtility.encodeText(new String(strText.getBytes(),   
  145.                     "GB2312"), "GB2312""B");   
  146.         } catch (Exception e) {   
  147.             e.printStackTrace();   
  148.         }   
  149.         return strText;   
  150.     }   
  151.    
  152.     /**  
  153.      * <br>  
  154.      * 方法说明:往附件组合中添加附件 <br>  
  155.      * 输入参数: <br>  
  156.      * 返回类型:  
  157.      */   
  158.     public void attachfile(String fname) {   
  159.         file.addElement(fname);   
  160.     }   
  161.    
  162.     /**  
  163.      * <br>  
  164.      * 方法说明:发送邮件 <br>  
  165.      * 输入参数: <br>  
  166.      * 返回类型:boolean 成功为true,反之为false  
  167.      */   
  168.     public boolean sendMail() {   
  169.    
  170.         // 构造mail session   
  171.         Properties props = System.getProperties();   
  172.         props.put("mail.smtp.host", host);   
  173.         props.put("mail.smtp.auth""true");   
  174.         Session session = Session.getDefaultInstance(props,   
  175.                 new Authenticator() {   
  176.                     public PasswordAuthentication getPasswordAuthentication() {   
  177.                         return new PasswordAuthentication(username, password);   
  178.                     }   
  179.                 });   
  180.    
  181.         try {   
  182.             // 构造MimeMessage 并设定基本的值   
  183.             MimeMessage msg = new MimeMessage(session);   
  184.             msg.setFrom(new InternetAddress(from));   
  185.             InternetAddress[] address = { new InternetAddress(to) };   
  186.             msg.setRecipients(Message.RecipientType.TO, address);   
  187.             subject = transferChinese(subject);   
  188.             msg.setSubject(subject);   
  189.    
  190.             // 构造Multipart   
  191.             Multipart mp = new MimeMultipart();   
  192.    
  193.             // 向Multipart添加正文   
  194.             MimeBodyPart mbpContent = new MimeBodyPart();   
  195.             mbpContent.setText(content);   
  196.             // 向MimeMessage添加(Multipart代表正文)   
  197.             mp.addBodyPart(mbpContent);   
  198.    
  199.             // 向Multipart添加附件   
  200.             Enumeration efile = file.elements();   
  201.             while (efile.hasMoreElements()) {   
  202.    
  203.                 MimeBodyPart mbpFile = new MimeBodyPart();   
  204.                 filename = efile.nextElement().toString();   
  205.                 FileDataSource fds = new FileDataSource(filename);   
  206.                 mbpFile.setDataHandler(new DataHandler(fds));   
  207.                 mbpFile.setFileName(fds.getName());   
  208.                 // 向MimeMessage添加(Multipart代表附件)   
  209.                 mp.addBodyPart(mbpFile);   
  210.    
  211.             }   
  212.    
  213.             file.removeAllElements();   
  214.             // 向Multipart添加MimeMessage   
  215.             msg.setContent(mp);   
  216.             msg.setSentDate(new Date());   
  217.             // 发送邮件   
  218.             Transport.send(msg);   
  219.    
  220.         } catch (MessagingException mex) {   
  221.             mex.printStackTrace();   
  222.             Exception ex = null;   
  223.             if ((ex = mex.getNextException()) != null) {   
  224.                 ex.printStackTrace();   
  225.             }   
  226.             return false;   
  227.         }   
  228.         return true;   
  229.     }   
  230.    
  231.     /**  
  232.      * <br>  
  233.      * 方法说明:主方法,用于测试 <br>  
  234.      * 输入参数: <br>  
  235.      * 返回类型:  
  236.      */   
  237.     public static void main(String[] args) {   
  238.         SendMail sendmail = new SendMail();   
  239.         sendmail.setHost("smtp.163.com");//smtp.mail.yahoo.com.cn    
  240.         sendmail.setUserName("demo");//您的邮箱用户名   
  241.         sendmail.setPassWord("******");//您的邮箱密码   
  242.         sendmail.setTo("[email protected]");//接收者   
  243.         sendmail.setFrom("[email protected]");//发送者   
  244.         sendmail.setSubject("你好,这是测试2!");   
  245.         sendmail.setContent("你好这是一个带多附件的测试2!");   
  246.         sendmail.attachfile("c:/attachment1.txt");   
  247.         sendmail.attachfile("c:/attachment2.txt");   
  248.         sendmail.sendMail();   
  249.    
  250.     }   
  251. }// end   

 

你可能感兴趣的:(java,职场,mail,休闲)