javamail发送邮件的简单实例

今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题。为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用。呵呵 
以下三段代码是我的全部代码,朋友们如果想用,直接复制即可。

第一个类:MailSenderInfo.Java 

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.util.mail;     
  2. /**    
  3. * 发送邮件需要使用的基本信息  
  4. *author by qiaqia609 
  5. http://blog.csdn.net/qiaqia609   
  6. */      
  7. import java.util.Properties;      
  8. public class MailSenderInfo {      
  9.     // 发送邮件的服务器的IP和端口      
  10.     private String mailServerHost;      
  11.     private String mailServerPort = "25";      
  12.     // 邮件发送者的地址      
  13.     private String fromAddress;      
  14.     // 邮件接收者的地址      
  15.     private String toAddress;      
  16.     // 登陆邮件发送服务器的用户名和密码      
  17.     private String userName;      
  18.     private String password;      
  19.     // 是否需要身份验证      
  20.     private boolean validate = false;      
  21.     // 邮件主题      
  22.     private String subject;      
  23.     // 邮件的文本内容      
  24.     private String content;      
  25.     // 邮件附件的文件名      
  26.     private String[] attachFileNames;        
  27.     /**    
  28.       * 获得邮件会话属性    
  29.       */      
  30.     public Properties getProperties(){      
  31.       Properties p = new Properties();      
  32.       p.put("mail.smtp.host"this.mailServerHost);      
  33.       p.put("mail.smtp.port"this.mailServerPort);      
  34.       p.put("mail.smtp.auth", validate ? "true" : "false");      
  35.       return p;      
  36.     }      
  37.     public String getMailServerHost() {      
  38.       return mailServerHost;      
  39.     }      
  40.     public void setMailServerHost(String mailServerHost) {      
  41.       this.mailServerHost = mailServerHost;      
  42.     }     
  43.     public String getMailServerPort() {      
  44.       return mailServerPort;      
  45.     }     
  46.     public void setMailServerPort(String mailServerPort) {      
  47.       this.mailServerPort = mailServerPort;      
  48.     }     
  49.     public boolean isValidate() {      
  50.       return validate;      
  51.     }     
  52.     public void setValidate(boolean validate) {      
  53.       this.validate = validate;      
  54.     }     
  55.     public String[] getAttachFileNames() {      
  56.       return attachFileNames;      
  57.     }     
  58.     public void setAttachFileNames(String[] fileNames) {      
  59.       this.attachFileNames = fileNames;      
  60.     }     
  61.     public String getFromAddress() {      
  62.       return fromAddress;      
  63.     }      
  64.     public void setFromAddress(String fromAddress) {      
  65.       this.fromAddress = fromAddress;      
  66.     }     
  67.     public String getPassword() {      
  68.       return password;      
  69.     }     
  70.     public void setPassword(String password) {      
  71.       this.password = password;      
  72.     }     
  73.     public String getToAddress() {      
  74.       return toAddress;      
  75.     }      
  76.     public void setToAddress(String toAddress) {      
  77.       this.toAddress = toAddress;      
  78.     }      
  79.     public String getUserName() {      
  80.       return userName;      
  81.     }     
  82.     public void setUserName(String userName) {      
  83.       this.userName = userName;      
  84.     }     
  85.     public String getSubject() {      
  86.       return subject;      
  87.     }     
  88.     public void setSubject(String subject) {      
  89.       this.subject = subject;      
  90.     }     
  91.     public String getContent() {      
  92.       return content;      
  93.     }     
  94.     public void setContent(String textContent) {      
  95.       this.content = textContent;      
  96.     }      
  97. }   

第二个类:SimpleMailSender.java

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.util.mail;     
  2.     
  3. import java.util.Date;      
  4. import java.util.Properties;     
  5. import javax.mail.Address;      
  6. import javax.mail.BodyPart;      
  7. import javax.mail.Message;      
  8. import javax.mail.MessagingException;      
  9. import javax.mail.Multipart;      
  10. import javax.mail.Session;      
  11. import javax.mail.Transport;      
  12. import javax.mail.internet.InternetAddress;      
  13. import javax.mail.internet.MimeBodyPart;      
  14. import javax.mail.internet.MimeMessage;      
  15. import javax.mail.internet.MimeMultipart;      
  16.     
  17. /**    
  18. * 简单邮件(不带附件的邮件)发送器    
  19. http://blog.csdn.net/qiaqia609 
  20. */      
  21. public class SimpleMailSender  {      
  22. /**    
  23.   * 以文本格式发送邮件    
  24.   * @param mailInfo 待发送的邮件的信息    
  25.   */      
  26.     public boolean sendTextMail(MailSenderInfo mailInfo) {      
  27.       // 判断是否需要身份认证      
  28.       MyAuthenticator authenticator = null;      
  29.       Properties pro = mailInfo.getProperties();     
  30.       if (mailInfo.isValidate()) {      
  31.       // 如果需要身份认证,则创建一个密码验证器      
  32.         authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());      
  33.       }     
  34.       // 根据邮件会话属性和密码验证器构造一个发送邮件的session      
  35.       Session sendMailSession = Session.getDefaultInstance(pro,authenticator);      
  36.       try {      
  37.       // 根据session创建一个邮件消息      
  38.       Message mailMessage = new MimeMessage(sendMailSession);      
  39.       // 创建邮件发送者地址      
  40.       Address from = new InternetAddress(mailInfo.getFromAddress());      
  41.       // 设置邮件消息的发送者      
  42.       mailMessage.setFrom(from);      
  43.       // 创建邮件的接收者地址,并设置到邮件消息中      
  44.       Address to = new InternetAddress(mailInfo.getToAddress());      
  45.       mailMessage.setRecipient(Message.RecipientType.TO,to);      
  46.       // 设置邮件消息的主题      
  47.       mailMessage.setSubject(mailInfo.getSubject());      
  48.       // 设置邮件消息发送的时间      
  49.       mailMessage.setSentDate(new Date());      
  50.       // 设置邮件消息的主要内容      
  51.       String mailContent = mailInfo.getContent();      
  52.       mailMessage.setText(mailContent);      
  53.       // 发送邮件      
  54.       Transport.send(mailMessage);     
  55.       return true;      
  56.       } catch (MessagingException ex) {      
  57.           ex.printStackTrace();      
  58.       }      
  59.       return false;      
  60.     }      
  61.          
  62.     /**    
  63.       * 以HTML格式发送邮件    
  64.       * @param mailInfo 待发送的邮件信息    
  65.       */      
  66.     public static boolean sendHtmlMail(MailSenderInfo mailInfo){      
  67.       // 判断是否需要身份认证      
  68.       MyAuthenticator authenticator = null;     
  69.       Properties pro = mailInfo.getProperties();     
  70.       //如果需要身份认证,则创建一个密码验证器       
  71.       if (mailInfo.isValidate()) {      
  72.         authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());     
  73.       }      
  74.       // 根据邮件会话属性和密码验证器构造一个发送邮件的session      
  75.       Session sendMailSession = Session.getDefaultInstance(pro,authenticator);      
  76.       try {      
  77.       // 根据session创建一个邮件消息      
  78.       Message mailMessage = new MimeMessage(sendMailSession);      
  79.       // 创建邮件发送者地址      
  80.       Address from = new InternetAddress(mailInfo.getFromAddress());      
  81.       // 设置邮件消息的发送者      
  82.       mailMessage.setFrom(from);      
  83.       // 创建邮件的接收者地址,并设置到邮件消息中      
  84.       Address to = new InternetAddress(mailInfo.getToAddress());      
  85.       // Message.RecipientType.TO属性表示接收者的类型为TO      
  86.       mailMessage.setRecipient(Message.RecipientType.TO,to);      
  87.       // 设置邮件消息的主题      
  88.       mailMessage.setSubject(mailInfo.getSubject());      
  89.       // 设置邮件消息发送的时间      
  90.       mailMessage.setSentDate(new Date());      
  91.       // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象      
  92.       Multipart mainPart = new MimeMultipart();      
  93.       // 创建一个包含HTML内容的MimeBodyPart      
  94.       BodyPart html = new MimeBodyPart();      
  95.       // 设置HTML内容      
  96.       html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");      
  97.       mainPart.addBodyPart(html);      
  98.       // 将MiniMultipart对象设置为邮件内容      
  99.       mailMessage.setContent(mainPart);      
  100.       // 发送邮件      
  101.       Transport.send(mailMessage);      
  102.       return true;      
  103.       } catch (MessagingException ex) {      
  104.           ex.printStackTrace();      
  105.       }      
  106.       return false;      
  107.     }      
  108. }    

第三个类:MyAuthenticator.java 

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.util.mail;     
  2.     
  3. import javax.mail.*;     
  4.        
  5. public class MyAuthenticator extends Authenticator{     
  6.     String userName=null;     
  7.     String password=null;     
  8.           
  9.     public MyAuthenticator(){     
  10.     }     
  11.     public MyAuthenticator(String username, String password) {      
  12.         this.userName = username;      
  13.         this.password = password;      
  14.     }      
  15.     protected PasswordAuthentication getPasswordAuthentication(){     
  16.         return new PasswordAuthentication(userName, password);     
  17.     }     
  18. }     

下面给出使用上面三个类的代码:

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. public static void main(String[] args){     
  2.          //这个类主要是设置邮件     
  3.       MailSenderInfo mailInfo = new MailSenderInfo();      
  4.       mailInfo.setMailServerHost("smtp.163.com");      
  5.       mailInfo.setMailServerPort("25");      
  6.       mailInfo.setValidate(true);      
  7.       mailInfo.setUserName("han2000lei@163.com");      
  8.       mailInfo.setPassword("**********");//您的邮箱密码      
  9.       mailInfo.setFromAddress("han2000lei@163.com");      
  10.       mailInfo.setToAddress("han2000lei@163.com");      
  11.       mailInfo.setSubject("设置邮箱标题 如http://www.guihua.org 中国桂花网");      
  12.       mailInfo.setContent("设置邮箱内容 如http://www.guihua.org 中国桂花网 是中国最大桂花网站==");      
  13.          //这个类主要来发送邮件     
  14.       SimpleMailSender sms = new SimpleMailSender();     
  15.           sms.sendTextMail(mailInfo);//发送文体格式      
  16.           sms.sendHtmlMail(mailInfo);//发送html格式     
  17.     }    

最后,给出朋友们几个注意的地方: 
1、使用此代码你可以完成你的javamail的邮件发送功能。三个类缺一不可。 
2、这三个类我打包是用的 com.util.mail 包,如果不喜欢,你可以自己改,但三个类文件必须在同一个包中 
3、不要使用你刚刚注册过的邮箱在程序中发邮件,如果你的163邮箱是刚注册不久,那你就不要使用 “smtp.163.com” 。因为你发不出去。刚注册的邮箱是不会给你这种权限的,也就是你不能通过验证。要使用你经常用的邮箱,而且时间比较长的。 
4、另一个问题就是 mailInfo.setMailServerHost("smtp.163.com"); mailInfo.setFromAddress("han2000lei@163.com"); 这两句话。即如果你使用163smtp服务器,那么发送邮件地址就必须用163的邮箱,如果不的话,是不会发送成功的。 

5、关于javamail验证错误的问题,网上的解释有很多,但我看见的只有一个。就是我的第三个类。你只要复制全了代码,我想是不会有问题的。



另外一个示例:

http://haolloyin.blog.51cto.com/1177454/354320

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值