java实现邮件发送

来源:互联网 发布:好的影视软件 编辑:程序博客网 时间:2024/06/06 02:08
package com.util.mail;

import java.util.Properties;

public class MailSenderInfo {
// 发送邮件的服务器的IP和端口    
    private String mailServerHost;    
    private String mailServerPort = "25";    
    // 邮件发送者的地址    
    private String fromAddress;    
    // 邮件接收者的地址
    private String toAddress;    
    // 登陆邮件发送服务器的用户名和密码    
    private String userName;    
    private String password;    
    // 是否需要身份验证    
    private boolean validate = false;    
    // 邮件主题    
    private String subject;    
    // 邮件的文本内容    
    private String content;    
    // 邮件附件的文件名    
    private String[] attachFileNames;
    
    /**   
     * 获得邮件会话属性   
     */    
   public Properties getProperties(){    
     Properties p = new Properties();    
     p.put("mail.smtp.host", this.mailServerHost);    
     p.put("mail.smtp.port", this.mailServerPort);    
     p.put("mail.smtp.auth", validate ? "true" : "false");    
     return p;    
   }    
   public String getMailServerHost() {    
     return mailServerHost;    
   }    
   public void setMailServerHost(String mailServerHost) {    
     this.mailServerHost = mailServerHost;    
   }   
   public String getMailServerPort() {    
     return mailServerPort;    
   }   
   public void setMailServerPort(String mailServerPort) {    
     this.mailServerPort = mailServerPort;    
   }   
   public boolean isValidate() {    
     return validate;    
   }   
   public void setValidate(boolean validate) {    
     this.validate = validate;    
   }   
   public String[] getAttachFileNames() {    
     return attachFileNames;    
   }   
   public void setAttachFileNames(String[] fileNames) {    
     this.attachFileNames = fileNames;    
   }   
   public String getFromAddress() {    
     return fromAddress;    
   }    
   public void setFromAddress(String fromAddress) {    
     this.fromAddress = fromAddress;    
   }   
   public String getPassword() {    
     return password;    
   }   
   public void setPassword(String password) {    
     this.password = password;    
   }   
   public String getToAddress() {    
     return toAddress;    
   }    
   public void setToAddress(String toAddress) {    
     this.toAddress = toAddress;    
   }    
   public String getUserName() {    
     return userName;    
   }   
   public void setUserName(String userName) {    
     this.userName = userName;    
   }   
   public String getSubject() {    
     return subject;    
   }   
   public void setSubject(String subject) {    
     this.subject = subject;    
   }   
   public String getContent() {    
     return content;    
   }   
   public void setContent(String textContent) {    
     this.content = textContent;    
   }    

}


package com.util.mail;
import javax.mail.*;
public class MyAuthenticator extends Authenticator {
String userName=null;   
    String password=null;   
        
    public MyAuthenticator(){   
    }   
    public MyAuthenticator(String username, String password) {    
        this.userName = username;    
        this.password = password;    
    }    
    protected PasswordAuthentication getPasswordAuthentication(){   
        return new PasswordAuthentication(userName, password);   
    }   
}


package com.util.mail;


import java.util.Date;    
import java.util.Properties;   
import javax.mail.Address;    
import javax.mail.BodyPart;    
import javax.mail.Message;    
import javax.mail.MessagingException;    
import javax.mail.Multipart;    
import javax.mail.Session;    
import javax.mail.Transport;    
import javax.mail.internet.InternetAddress;    
import javax.mail.internet.MimeBodyPart;    
import javax.mail.internet.MimeMessage;    
import javax.mail.internet.MimeMultipart;   


/**   
* 简单邮件(不带附件的邮件)发送器   
http://www.bt285.cn BT下载
*/    
public class SimpleMailSender {
/**   
 * 以文本格式发送邮件   
 * @param mailInfo 待发送的邮件的信息   
 */    
   public boolean sendTextMail(MailSenderInfo mailInfo) {    
     // 判断是否需要身份认证    
     MyAuthenticator authenticator = null;    
     Properties pro = mailInfo.getProperties();   
     if (mailInfo.isValidate()) {    
     // 如果需要身份认证,则创建一个密码验证器    
       authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());    
     }   
     // 根据邮件会话属性和密码验证器构造一个发送邮件的session    
     Session sendMailSession = Session.getDefaultInstance(pro,authenticator);    
     try {    
     // 根据session创建一个邮件消息    
     Message mailMessage = new MimeMessage(sendMailSession);    
     // 创建邮件发送者地址    
     Address from = new InternetAddress(mailInfo.getFromAddress());    
     // 设置邮件消息的发送者    
     mailMessage.setFrom(from);    
     // 创建邮件的接收者地址,并设置到邮件消息中    
     Address to = new InternetAddress(mailInfo.getToAddress());    
     mailMessage.setRecipient(Message.RecipientType.TO,to);    
     // 设置邮件消息的主题    
     mailMessage.setSubject(mailInfo.getSubject());    
     // 设置邮件消息发送的时间    
     mailMessage.setSentDate(new Date());    
     // 设置邮件消息的主要内容    
     String mailContent = mailInfo.getContent();
     mailMessage.setText(mailContent);    
     // 发送邮件    
     Transport.send(mailMessage);   
     return true;    
     } catch (MessagingException ex) {
         ex.printStackTrace();    
     }    
     return false;    
   }    
      
   /**   
     * 以HTML格式发送邮件   
     * @param mailInfo 待发送的邮件信息   
     */    
   public static boolean sendHtmlMail(MailSenderInfo mailInfo){    
     // 判断是否需要身份认证    
     MyAuthenticator authenticator = null;   
     Properties pro = mailInfo.getProperties();   
     //如果需要身份认证,则创建一个密码验证器     
     if (mailInfo.isValidate()) {    
       authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());   
     }    
     // 根据邮件会话属性和密码验证器构造一个发送邮件的session    
     Session sendMailSession = Session.getDefaultInstance(pro,authenticator);    
     try {    
     // 根据session创建一个邮件消息    
     Message mailMessage = new MimeMessage(sendMailSession);    
     // 创建邮件发送者地址    
     Address from = new InternetAddress(mailInfo.getFromAddress());    
     // 设置邮件消息的发送者    
     mailMessage.setFrom(from);    
     // 创建邮件的接收者地址,并设置到邮件消息中    
     Address to = new InternetAddress(mailInfo.getToAddress());    
     // Message.RecipientType.TO属性表示接收者的类型为TO    
     mailMessage.setRecipient(Message.RecipientType.TO,to);    
     // 设置邮件消息的主题    
     mailMessage.setSubject(mailInfo.getSubject());    
     // 设置邮件消息发送的时间    
     mailMessage.setSentDate(new Date());    
     // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象    
     Multipart mainPart = new MimeMultipart();    
     // 创建一个包含HTML内容的MimeBodyPart    
     BodyPart html = new MimeBodyPart();    
     // 设置HTML内容    
     html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");    
     mainPart.addBodyPart(html);    
     // 将MiniMultipart对象设置为邮件内容    
     mailMessage.setContent(mainPart);    
     // 发送邮件    
     Transport.send(mailMessage);    
     return true;    
     } catch (MessagingException ex) {    
         ex.printStackTrace();    
     }    
     return false;    
   }   
}

以上3个类要在一个包下


package com.util.test;

import com.util.mail.MailSenderInfo;
import com.util.mail.SimpleMailSender;

public class Test {
public static void main(String[] args) {
// 这个类主要是设置邮件
MailSenderInfo mailInfo = new MailSenderInfo();
mailInfo.setMailServerHost("smtp.163.com");
mailInfo.setMailServerPort("25");
mailInfo.setValidate(true);
mailInfo.setUserName("邮箱账号");
mailInfo.setPassword("*********");// 您的邮箱密码
mailInfo.setFromAddress("邮箱账号");
mailInfo.setToAddress("对方邮箱账号");
mailInfo.setSubject("邮箱标题");//标题
mailInfo.setContent("邮箱内容");//内容
// 这个类主要来发送邮件
SimpleMailSender sms = new SimpleMailSender();
sms.sendTextMail(mailInfo);// 发送文体格式
sms.sendHtmlMail(mailInfo);// 发送html格式
System.out.println("SUCCESS");
}


}