Java中发送邮件

实现此功能前你需要下载发送邮件所需要的jar包mail.jar,你也可以在此下载

--->点击阅读更多    

       新建一个Java类文件MyAuthenticator.java,代码如下所示:


  1. packagecom.ldfsoft.common;  
  2.    
  3. importjavax.mail.Authenticator;  
  4. importjavax.mail.PasswordAuthentication;  
  5.    
  6.    
  7.    
  8. public classMyAuthenticator extends Authenticator {  
  9.            String userName=null;    
  10.            String password=null;    
  11.                   
  12.             public MyAuthenticator(){    
  13.             }    
  14.             public MyAuthenticator(String username, String password) {     
  15.                 this.userName = username;     
  16.                 this.password = password;     
  17.             }     
  18.             protected PasswordAuthentication getPasswordAuthentication(){    
  19.                 return new PasswordAuthentication(userName, password);    
  20.             }  
  21. }  


        此类文件继承了mail.jar包中的Authenticator类。


        接着又新建一个dto文件MailSenderDto.java,代码如下所示:


  1. package com.ldfsoft.dto;  
  2.    
  3. import java.util.Properties;  
  4.    
  5. publicclass MailSenderDto {  
  6.      // 发送邮件的服务器的IP和端口     
  7.     private StringmailServerHost;     
  8.     private StringmailServerPort = "25";     
  9.     // 邮件发送者的地址     
  10.     private StringfromAddress;     
  11.     // 邮件接收者的地址     
  12.     private StringtoAddress;     
  13.     // 登陆邮件发送服务器的用户名和密码     
  14.     private StringuserName;     
  15.     private Stringpassword;     
  16.     // 是否需要身份验证     
  17.     privateboolean validate =false;     
  18.     // 邮件主题     
  19.     private Stringsubject;     
  20.     // 邮件的文本内容     
  21.     private Stringcontent;     
  22.     // 邮件附件的文件名     
  23.     private String[]attachFileNames;       
  24.     /**   
  25.       * 获得邮件会话属性   
  26.       */     
  27.     public PropertiesgetProperties(){     
  28.       Properties p = new Properties();     
  29.       p.put("mail.smtp.host",this.mailServerHost);     
  30.       p.put("mail.smtp.port",this.mailServerPort);     
  31.       p.put("mail.smtp.auth",validate ? "true" :"false");     
  32.       return p;     
  33.     }     
  34.     public String getMailServerHost(){     
  35.       returnmailServerHost;     
  36.     }     
  37.     publicvoid setMailServerHost(String mailServerHost){     
  38.       this.mailServerHost = mailServerHost;     
  39.     }    
  40.     publicStringgetMailServerPort() {     
  41.       returnmailServerPort;     
  42.     }    
  43.     publicvoid setMailServerPort(String mailServerPort){     
  44.       this.mailServerPort = mailServerPort;     
  45.     }    
  46.     publicboolean isValidate() {     
  47.       returnvalidate;     
  48.     }    
  49.     publicvoid setValidate(boolean validate) {     
  50.       this.validate = validate;     
  51.     }    
  52.     public String[] getAttachFileNames(){     
  53.       returnattachFileNames;     
  54.     }    
  55.     publicvoid setAttachFileNames(String[] fileNames){     
  56.       this.attachFileNames = fileNames;     
  57.     }    
  58.     public String getFromAddress() {     
  59.       returnfromAddress;     
  60.     }     
  61.     publicvoid setFromAddress(String fromAddress) {     
  62.       this.fromAddress = fromAddress;     
  63.     }    
  64.     public String getPassword() {     
  65.       returnpassword;     
  66.     }    
  67.     publicvoid setPassword(String password) {     
  68.       this.password = password;     
  69.     }    
  70.     public String getToAddress() {     
  71.       returntoAddress;     
  72.     }     
  73.     publicvoid setToAddress(String toAddress) {     
  74.       this.toAddress = toAddress;     
  75.     }     
  76.     public String getUserName() {     
  77.       returnuserName;     
  78.     }    
  79.     publicvoid setUserName(String userName) {     
  80.       this.userName = userName;     
  81.     }    
  82.     public String getSubject() {     
  83.       returnsubject;     
  84.     }    
  85.     publicvoid setSubject(String subject) {     
  86.       this.subject = subject;     
  87.     }    
  88.     public String getContent() {     
  89.       returncontent;     
  90.     }    
  91.     publicvoid setContent(String textContent) {     
  92.       this.content = textContent;     
  93.     }     
  94. }  


      新建一个Java文件MailSender.java,里面写了两个方法,一个方法用于以文本形式发送邮件,一个以html形式发送邮件,代码如下所示:


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


      新建一个工具类JavaUtil.java用于封装发送邮件的方法,代码如下所示:


  1. packagecom.ldfsoft.util;  
  2.    
  3. import com.ldfsoft.common.MailSender;  
  4. importcom.ldfsoft.dto.MailSenderDto;  
  5.    
  6. public classJavaUtil {  
  7.           
  8.          /** 
  9.           * 发送邮件 
  10.           */  
  11.          public void sendEmail(String email) {  
  12.                    try{  
  13.                               String mailTitle="【我的网盘】账号激活邮件";  
  14.                               String mailContent="<br><br>亲爱的【我的网盘】用户:<br><br>"+  
  15.                                                                            "    您好!感谢您注册【我的网盘】帐号,点击下面的链接即可完成注册:<br><br>"+  
  16.                                                                            "    <ahref=\"http://localhost:9080/mydisk/swf/activateEmail.html#email="+email+"\">http://localhost:9080/mydisk/swf/activateEmail.html#email="+email+"</a><br><br>"+  
  17.                                                                            "    (如果链接无法点击,请将它复制并粘贴到浏览器的地址栏中访问)<br><br>"+  
  18.                                                                            "    您的Email:"+email+"<br><br>"+  
  19.                                                                           "    Email可以作为您的帐号来登录【我的网盘】。<br><br>"+  
  20.                                                                            "    本邮件是系统自动发送的,请勿直接回复!感谢您的访问,祝您使用愉快!<br><br>"+  
  21.                                                                            "    【我的网盘】服务中心";  
  22.                               MailSenderDto mailInfo = newMailSenderDto();     
  23.                              mailInfo.setMailServerHost("smtp.163.com");     
  24.                              mailInfo.setMailServerPort("25");     
  25.                               mailInfo.setValidate(true);     
  26.                              mailInfo.setUserName("lindf123of@163.com");     
  27.                               mailInfo.setPassword("******");//您的邮箱密码     
  28.                               mailInfo.setFromAddress("lindf123of@163.com");    //发件人邮箱地址  
  29.                               mailInfo.setToAddress(email);      //收件人邮箱地址  
  30.                               mailInfo.setSubject(mailTitle);     
  31.                               mailInfo.setContent(mailContent);     
  32.                               //这个类主要来发送邮件    
  33.                               MailSender ms = new MailSender();    
  34.                               ms.sendHtmlMail(mailInfo);//发送html格式    
  35.                    }catch(Exception e){  
  36.                              
  37.                             System.out.println("失败了!");  
  38.                    }  
  39.     }  
  40. }  


      其中此方法的参数为要发送的邮件。

--->点击阅读更多    


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值