javamial邮件发送

来源:互联网 发布:老师网络授课平台 编辑:程序博客网 时间:2024/05/22 15:38

项目例子地址:

 http://download.csdn.net/detail/kucaozhuzhu/6531159

 

第一个类:MailSenderInfo.java

Java代码

package mail;

 

importjava.util.Properties;

 

/** 

* 发送邮件需要使用的基本信息 

*/

 

publicclass MailSenderInfo {

   //邮件ip和端口

   private StringmailServerHost;

   private StringmailServerPort;

   //发送地址

   private StringfromAddress;

   //接收地址

   private StringtoAddress;

   //发送用户名和密码

   private StringuserName;

   private Stringpassword;

   //是否需要身份验证

   privatebooleanvalidate;

   //邮件主题

   private Stringsubject;

   //邮件内容

   private Stringcontent;

   //邮件附件文件名

   private String[]attachFileNames;

 

   /**

    * 获得邮件回话属性

    * @return

    */

   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() {

      returnmailServerHost;

   }

 

   publicvoid setMailServerHost(StringmailServerHost) {

      this.mailServerHost = mailServerHost;

   }

 

   public String getMailServerPort() {

      returnmailServerPort;

   }

 

   publicvoid setMailServerPort(StringmailServerPort) {

      this.mailServerPort = mailServerPort;

   }

 

   public String getFromAddress() {

      returnfromAddress;

   }

 

   publicvoid setFromAddress(String fromAddress){

      this.fromAddress = fromAddress;

   }

 

   public String getToAddress() {

      returntoAddress;

   }

 

   publicvoid setToAddress(String toAddress) {

      this.toAddress = toAddress;

   }

 

   public String getUserName() {

      returnuserName;

   }

 

   publicvoid setUserName(String userName) {

      this.userName = userName;

   }

 

   public String getPassword() {

      returnpassword;

   }

 

   publicvoid setPassword(String password) {

      this.password = password;

   }

 

   publicboolean isValidate() {

      returnvalidate;

   }

 

   publicvoid setValidate(boolean validate) {

      this.validate = validate;

   }

 

   public String getSubject() {

      returnsubject;

   }

 

   publicvoid setSubject(String subject) {

      this.subject = subject;

   }

 

   public String getContent() {

      returncontent;

   }

 

   publicvoid setContent(String content) {

      this.content = content;

   }

 

   public String[] getAttachFileNames() {

      returnattachFileNames;

   }

 

   publicvoid setAttachFileNames(String[]attachFileNames) {

      this.attachFileNames = attachFileNames;

   }

  

}

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 = newProperties();

   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;

  }

}


第二个类:SimpleMailSender.java

Java代码

package mail;

 

importjava.util.Date;

importjava.util.Properties;

 

importjavax.activation.DataHandler;

importjavax.activation.FileDataSource;

importjavax.mail.Address;

importjavax.mail.BodyPart;

importjavax.mail.Message;

importjavax.mail.MessagingException;

importjavax.mail.Multipart;

importjavax.mail.Session;

importjavax.mail.Transport;

importjavax.mail.internet.AddressException;

importjavax.mail.internet.InternetAddress;

importjavax.mail.internet.MimeBodyPart;

importjavax.mail.internet.MimeMessage;

importjavax.mail.internet.MimeMultipart;

 

/**

 *

 * @author Administrator

 *

 */

publicclass SimpleMailSender {

  

   /**

    * 文本邮件

    * @param mailInfo

    * @return

    */

   publicboolean sendTextMail(MailSenderInfomailInfo){

      //判断是否需要身份验证

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

         //设置邮件内容

         mailMessage.setText(mailInfo.getContent());

        

         Transport.send(mailMessage);

         returntrue;

        

      }catch(Exception e){

         e.printStackTrace();

      }

      returnfalse;

   }

   /**

    * 发送带附件

    * @param mailInfo

    * @return

    */

   publicboolean sendFileMail(MailSenderInfomailInfo){

      //判断是否需要身份验证

      MyAuthenticator authenticator=null;

      Properties pro=mailInfo.getProperties();

      //需要验证

      if(mailInfo.isValidate()){

         //创建一个密码验证器

         authenticator=new MyAuthenticator(mailInfo.getUserName(),mailInfo.getPassword());

      }

      //根据邮件回话属性和密码验证器构造一个发邮件的session

      Session sendMailSession =Session.getDefaultInstance(pro,authenticator);

      Message mailMessage=new MimeMessage(sendMailSession);

      try {

         mailMessage.setFrom(new InternetAddress(mailInfo.getFromAddress()));

         mailMessage.setRecipient(Message.RecipientType.TO,new InternetAddress(mailInfo.getToAddress()));

         mailMessage.setSentDate(new Date());

         mailMessage.setSubject(mailInfo.getSubject());

        

         Multipart nuMultipart=new MimeMultipart();

         //添加正文

         MimeBodyPart mbpContent=new MimeBodyPart();

         mbpContent.setContent(mailInfo.getContent(),"text/html;charset=utf-8");

         nuMultipart.addBodyPart(mbpContent);

        

         for(int i=0;i<mailInfo.getAttachFileNames().length;i++){

            String fileName=mailInfo.getAttachFileNames()[i];

            //添加附件

            MimeBodyPart mbpFile=new MimeBodyPart();

            FileDataSource fileDataSource=new FileDataSource(fileName);

            mbpFile.setDataHandler(new DataHandler(fileDataSource));

            mbpFile.setFileName(fileName);

            nuMultipart.addBodyPart(mbpFile);

         }

        

         mailMessage.setContent(nuMultipart);

        

         Transport.send(mailMessage);

         returntrue;

      } catch (AddressException e) {

         e.printStackTrace();

      } catch (MessagingException e) {

         e.printStackTrace();

      }

      returnfalse ;

     

   }

  

   /**

    * html格式邮件

    */

   publicboolean sendHtmlMail(MailSenderInfomailInfo){

      MyAuthenticator authenticator=null;

      Properties pro=mailInfo.getProperties();

      if(mailInfo.isValidate()){

         authenticator=new MyAuthenticator(mailInfo.getUserName(),mailInfo.getPassword());

      }

      Session sendMailSession =Session.getDefaultInstance(pro,authenticator);

  

      try{

         Message mailMessage=new MimeMessage(sendMailSession);

 

         mailMessage.setFrom(new InternetAddress(mailInfo.getFromAddress()));

         mailMessage.setRecipient(Message.RecipientType.TO,new InternetAddress(mailInfo.getToAddress()));

         mailMessage.setSentDate(new Date());

         mailMessage.setSubject(mailInfo.getSubject());

        

         //创建一个包含MimeMultipart类型的对象

         Multipart mainPart=new MimeMultipart();

         //创建容器

         BodyPart html=new MimeBodyPart();

         //设置html内容

         html.setContent(mailInfo.getContent(),"text/html;charset=utf-8");

         mainPart.addBodyPart(html);

        

        

         //设置邮件内容

         mailMessage.setContent(mainPart);

         //发送

         Transport.send(mailMessage);

         returntrue;

        

      }catch(Exception e){

         e.printStackTrace();

      }

      returnfalse;

   }

}

package com.util.mail;

 

import java.util.Date;

import java.util.Properties;

import javax.mail.Address;

import javax.mail.BodyPart;

import javax.mail.Message;

importjavax.mail.MessagingException;

import javax.mail.Multipart;

import javax.mail.Session;

import javax.mail.Transport;

importjavax.mail.internet.InternetAddress;

import javax.mail.internet.MimeBodyPart;

importjavax.mail.internet.MimeMessage;

importjavax.mail.internet.MimeMultipart;

 

/**

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

*/

public classSimpleMailSender  {

/**

  * 以文本格式发送邮件

  * @param mailInfo 待发送的邮件的信息

  */

  public boolean sendTextMail(MailSenderInfo mailInfo) {

    // 判断是否需要身份认证

    MyAuthenticatorauthenticator = 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 = newMimeMessage(sendMailSession);

    // 创建邮件发送者地址

    Address from = newInternetAddress(mailInfo.getFromAddress());

    // 设置邮件消息的发送者

    mailMessage.setFrom(from);

    // 创建邮件的接收者地址,并设置到邮件消息中

    Address to = newInternetAddress(mailInfo.getToAddress());

   mailMessage.setRecipient(Message.RecipientType.TO,to);

    // 设置邮件消息的主题

   mailMessage.setSubject(mailInfo.getSubject());

    // 设置邮件消息发送的时间

    mailMessage.setSentDate(newDate());

    // 设置邮件消息的主要内容

    String mailContent =mailInfo.getContent();

   mailMessage.setText(mailContent);

    // 发送邮件

   Transport.send(mailMessage);

    return true;

    } catch (MessagingExceptionex) {

     ex.printStackTrace();

    }

    return false;

  }

 

  /**

    * 以HTML格式发送邮件

    * @param mailInfo 待发送的邮件信息

    */

  public static boolean sendHtmlMail(MailSenderInfo mailInfo){

    // 判断是否需要身份认证

    MyAuthenticatorauthenticator = 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 = newMimeMessage(sendMailSession);

    // 创建邮件发送者地址

    Address from = newInternetAddress(mailInfo.getFromAddress());

    // 设置邮件消息的发送者

    mailMessage.setFrom(from);

    // 创建邮件的接收者地址,并设置到邮件消息中

    Address to = newInternetAddress(mailInfo.getToAddress());

    // Message.RecipientType.TO属性表示接收者的类型为TO

   mailMessage.setRecipient(Message.RecipientType.TO,to);

    // 设置邮件消息的主题

   mailMessage.setSubject(mailInfo.getSubject());

    // 设置邮件消息发送的时间

    mailMessage.setSentDate(newDate());

 

    // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象

    Multipart mainPart = newMimeMultipart();

    // 创建一个包含HTML内容的MimeBodyPart

    BodyPart html = newMimeBodyPart();

    // 设置HTML内容

    html.setContent(mailInfo.getContent(),"text/html; charset=utf-8");

    mainPart.addBodyPart(html);

    // 将MiniMultipart对象设置为邮件内容

   mailMessage.setContent(mainPart);

    // 发送邮件

   Transport.send(mailMessage);

    return true;

    } catch (MessagingExceptionex) {

     ex.printStackTrace();

    }

    return false;

  }

}

 


第三个类:MyAuthenticator.java

Java代码

package mail;

 

importjavax.mail.Authenticator;

importjavax.mail.PasswordAuthentication;

 

 

publicclass MyAuthenticatorextends Authenticator{

   String userName=null;

   String password;

   public MyAuthenticator(){

     

   }

   public MyAuthenticator(String userName,String password){

      this.userName=userName;

      this.password=password;

   }

   protected PasswordAuthentication getPasswordAuthentication(){

      returnnew PasswordAuthentication(userName,password);

   }

}

package com.util.mail;

 

import javax.mail.*;

 

public class MyAuthenticatorextends 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);

  }

}

 


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

Java代码

package mail;

 

publicclass TestMail {

   publicstaticvoid main(String[] args) {

      MailSenderInfo mailSenderInfo=new MailSenderInfo();

      mailSenderInfo.setMailServerHost("smtp.163.com");

      mailSenderInfo.setMailServerPort("25");

      mailSenderInfo.setValidate(true);

      mailSenderInfo.setUserName("tyrone_kucao@163.com");

      mailSenderInfo.setPassword("******");

      mailSenderInfo.setFromAddress("tyrone_kucao@163.com");

      mailSenderInfo.setToAddress("tyrone_kucao@163.com");

      mailSenderInfo.setContent("收到则测试成功!!!嘿嘿-------------");

      //mailSenderInfo.setSubject("测试javamail邮件");

     

      mailSenderInfo.setAttachFileNames(new String[]{"C:/Users/Administrator/Desktop/学习爱.txt","C:/Users/Administrator/Desktop/1234.txt"});

      //设置发送格式

      SimpleMailSender sms=new SimpleMailSender();

      mailSenderInfo.setSubject("测试javamail_text邮件");

      boolean t1=sms.sendTextMail(mailSenderInfo);

      mailSenderInfo.setSubject("测试javamail_html邮件");

      boolean t2=sms.sendHtmlMail(mailSenderInfo);

      mailSenderInfo.setSubject("测试javamail_file邮件");

      boolean t3=sms.sendFileMail(mailSenderInfo);

     

      if(t1){

         System.out.println("text发送成功!");

      }else{

         System.out.println("text发送失败!");

      }

      if(t2){

         System.out.println("html发送成功!");

      }else{

         System.out.println("html发送失败!");

      }

      if(t3){

         System.out.println("file发送成功!");

      }else{

         System.out.println("file发送失败!");

      }

   }

  

}

//设置发送格式
SimpleMailSender sms=new SimpleMailSender();
boolean t1=sms.sendTextMail(mailSenderInfo);
boolean t2=sms.sendHtmlMail(mailSenderInfo);

if(t1){
System.out.println("text发送成功!");
}else{
System.out.println("text发送失败!");
}
if(t2){
System.out.println("html发送成功!");
}else{
System.out.println("html发送失败!");
}
}

}

public static voidmain(String[] args){

         //这个类主要是设置邮件

    MailSenderInfo mailInfo =new MailSenderInfo();

   mailInfo.setMailServerHost("smtp.163.com");

   mailInfo.setMailServerPort("25");

    mailInfo.setValidate(true);

   mailInfo.setUserName("han2000lei@163.com");

   mailInfo.setPassword("**********");//您的邮箱密码

   mailInfo.setFromAddress("han2000lei@163.com");

   mailInfo.setToAddress("han2000lei@163.com");

    mailInfo.setSubject("设置邮箱标题");

    mailInfo.setContent("设置邮箱内容");

         //这个类主要来发送邮件

    SimpleMailSender sms = newSimpleMailSender();

          sms.sendTextMail(mailInfo);//发送文体格式

          sms.sendHtmlMail(mailInfo);//发送html格式

  }

 

原创粉丝点击