javamail发送邮件

今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题。为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用。呵呵 

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

第二个类:SimpleMailSender.java 
Java代码 
  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. public class SimpleMailSender    
  19.    
  20.     public boolean sendTextMail(MailSenderInfo mailInfo)   
  21.       // 判断是否需要身份认证   
  22.       MyAuthenticator authenticator null  
  23.       Properties pro mailInfo.getProperties();  
  24.       if (mailInfo.isValidate())   
  25.       // 如果需要身份认证,则创建一个密码验证器   
  26.         authenticator new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());   
  27.        
  28.       // 根据邮件会话属性和密码验证器构造一个发送邮件的session   
  29.       Session sendMailSession Session.getDefaultInstance(pro,authenticator);   
  30.       try   
  31.       // 根据session创建一个邮件消息   
  32.       Message mailMessage new MimeMessage(sendMailSession);   
  33.       // 创建邮件发送者地址   
  34.       Address from new InternetAddress(mailInfo.getFromAddress());   
  35.       // 设置邮件消息的发送者   
  36.       mailMessage.setFrom(from);   
  37.       // 创建邮件的接收者地址,并设置到邮件消息中   
  38.       Address to new InternetAddress(mailInfo.getToAddress());   
  39.       mailMessage.setRecipient(Message.RecipientType.TO,to);   
  40.       // 设置邮件消息的主题   
  41.       mailMessage.setSubject(mailInfo.getSubject());   
  42.       // 设置邮件消息发送的时间   
  43.       mailMessage.setSentDate(new Date());   
  44.       // 设置邮件消息的主要内容   
  45.       String mailContent mailInfo.getContent();   
  46.       mailMessage.setText(mailContent);   
  47.       // 发送邮件   
  48.       Transport.send(mailMessage);  
  49.       return true  
  50.       catch (MessagingException ex)   
  51.           ex.printStackTrace();   
  52.         
  53.       return false  
  54.       
  55.       
  56.        
  57.     public static boolean sendHtmlMail(MailSenderInfo mailInfo){   
  58.       // 判断是否需要身份认证   
  59.       MyAuthenticator authenticator null 
  60.       Properties pro mailInfo.getProperties();  
  61.       //如果需要身份认证,则创建一个密码验证器    
  62.       if (mailInfo.isValidate())   
  63.         authenticator new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());  
  64.         
  65.       // 根据邮件会话属性和密码验证器构造一个发送邮件的session   
  66.       Session sendMailSession Session.getDefaultInstance(pro,authenticator);   
  67.       try   
  68.       // 根据session创建一个邮件消息   
  69.       Message mailMessage new MimeMessage(sendMailSession);   
  70.       // 创建邮件发送者地址   
  71.       Address from new InternetAddress(mailInfo.getFromAddress());   
  72.       // 设置邮件消息的发送者   
  73.       mailMessage.setFrom(from);   
  74.       // 创建邮件的接收者地址,并设置到邮件消息中   
  75.       Address to new InternetAddress(mailInfo.getToAddress());   
  76.       // Message.RecipientType.TO属性表示接收者的类型为TO   
  77.       mailMessage.setRecipient(Message.RecipientType.TO,to);   
  78.       // 设置邮件消息的主题   
  79.       mailMessage.setSubject(mailInfo.getSubject());   
  80.       // 设置邮件消息发送的时间   
  81.       mailMessage.setSentDate(new Date());   
  82.       // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象   
  83.       Multipart mainPart new MimeMultipart();   
  84.       // 创建一个包含HTML内容的MimeBodyPart   
  85.       BodyPart html new MimeBodyPart();   
  86.       // 设置HTML内容   
  87.       html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");   
  88.       mainPart.addBodyPart(html);   
  89.       // 将MiniMultipart对象设置为邮件内容   
  90.       mailMessage.setContent(mainPart);   
  91.       // 发送邮件   
  92.       Transport.send(mailMessage);   
  93.       return true  
  94.       catch (MessagingException ex)   
  95.           ex.printStackTrace();   
  96.         
  97.       return false  
  98.       
  99.   

第三个类:MyAuthenticator.java 
Java代码 
  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.  
  19.    

下面给出使用上面三个类的代码: 
Java代码 
  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("设置邮箱标题");   
  12.       mailInfo.setContent("设置邮箱内容");   
  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验证错误的问题,网上的解释有很多,但我看见的只有一个。就是我的第三个类。你只要复制全了代码,我想是不会有问题的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值