使用java发送邮件

  1.下载对应的jar包 mail.jar和 activation.jar

   代码如下 : 每一步都写的很清楚。

  Email_Autherticator.java(对用户进行认证的类)

package test;

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

public class Email_Autherticator extends Authenticator {
 private String username;
 private String password ;
 public Email_Autherticator() {
  super();
 }
// public Email_Autherticator(String user,String pwd){
//  super();
//  username = user;
//  password = pwd;
// }
 public Email_Autherticator(MailSenderInfo msf) {
  this.username=msf.getUserName();
  this.password=msf.getPassword();
  
 }
 public PasswordAuthentication getPasswordAuthentication(){
  return new PasswordAuthentication(username,password);
 }
}

 

MailSenderInfo.java(发送邮件有需要的信息)

package test;

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   =   true;
 
  //   邮件主题
  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",    "true");
    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(用来发送邮件的类)

 

package test;


import java.util.Date;

import javax.mail.Address;
import javax.mail.Authenticator;
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   static   void   sendTextMail(MailSenderInfo   mailInfo){
        //判断是否需要身份认证
    Authenticator auth=null;
     if   (mailInfo.isValidate())   {
          //如果需要身份认证,则创建一个密码验证器
          auth  =   new  Email_Autherticator(mailInfo);
      }
     //   根据邮件会话属性和密码验证器构造一个发送邮件的session
     Session   sendMailSession   =   Session.getDefaultInstance(mailInfo.getProperties(), auth);
     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);
       System.out.println("发送成功");
      
     }   catch   (MessagingException   ex)   {
       ex.printStackTrace();
     }
   }

   /**
     *   以HTML格式发送邮件
     *   @param   mailInfo   待发送的邮件信息
     */
   public   static   boolean   sendHtmlMail(MailSenderInfo   mailInfo){
     //   判断是否需要身份认证
    Authenticator   authenticator   =   null;
     if   (mailInfo.isValidate())   {
       //   如果需要身份认证,则创建一个密码验证器
        authenticator   =   new   Email_Autherticator();
     }
     //   根据邮件会话属性和密码验证器构造一个发送邮件的session
     Session   sendMailSession   =   Session.getDefaultInstance(mailInfo.getProperties(), 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=GBK");
       mainPart.addBodyPart(html);
       //   将MiniMultipart对象设置为邮件内容
       mailMessage.setContent(mainPart);
       //   发送邮件
       Transport.send(mailMessage);
       System.out.println("发送成功!");
       return   true;
     }   catch   (MessagingException   ex)   {
       ex.printStackTrace();
     }
     return   false;
   }
   public   static   void   main(String[]   args)   {
     //   创建邮件信息
     MailSenderInfo   mailInfo   =   new   MailSenderInfo();
     mailInfo.setMailServerHost("smtp.163.com");
     mailInfo.setMailServerPort("25");
   //   mailInfo.setValidate(true);
     mailInfo.setUserName("zzlasdfg");
     mailInfo.setPassword("qwe123456");
     mailInfo.setFromAddress("zzlasdfg@163.com");
     mailInfo.setToAddress("626809932@qq.com");
     mailInfo.setSubject("MyMail测试");
     mailInfo.setContent("我的邮件测试/n/rMy   test   mail/n/r");

     //   以文本格式发送邮件
     SimpleMailSender.sendTextMail(mailInfo);
     //   以HTML格式发送邮件
     //SimpleMailSender.sendHtmlMail(mailInfo);
   }
 } 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值