java发送邮件

一共有三个类:

第一个类 MailSenderInfo.java

package 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;    

    }    

}   

第二个类 MyAuthenticator.java

package 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);   

    }   

}   

第三个类:SimpleMailSender.java

package 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;    

  

/**   

* 简单邮件(不带附件的邮件)发送器   

*/    

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;    

    }    

}   

调用:

package mail;

public class Send {

 /**
  * @param args
  */
 public static void main(String[] args) {
     //这个类主要是设置邮件  
        MailSenderInfo mailInfo = new MailSenderInfo();   
        mailInfo.setMailServerHost("smtp.163.com");   
       mailInfo.setMailServerPort("25");   
        mailInfo.setValidate(true);   
        mailInfo.setUserName("[email protected]");   
        mailInfo.setPassword("itlm-0725");//您的邮箱密码   
        mailInfo.setFromAddress("[email protected]");   
        mailInfo.setToAddress("[email protected]");   
        mailInfo.setSubject("华科世家邮箱验证码");   
        mailInfo.setContent("123436");   
           //这个类主要来发送邮件  
        SimpleMailSender sms = new SimpleMailSender();  
            sms.sendTextMail(mailInfo);//发送文体格式   
            sms.sendHtmlMail(mailInfo);//发送html格式  

 }

}

你可能感兴趣的:(java)