使用java底层实现邮件的发送(含测试,源码)

简介: 使用java底层实现邮件的发送(含测试,源码)

    直接上代码:3个类,两个主要的类,一个测试类:

  主类(Mail):

/**  
* @Title: Mail.java
* @Package org.service.impl
* @Description: TODO该方法的主要作用:
* @author A18ccms A18ccms_gmail_com  
* @date 2017-5-30 下午10:20:35
* @version V1.0  
*/
package org.service.impl;
import java.util.Date;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
 /**   
 *    
 * 项目名称:spring_Schop8   
 * 类名称:Mail   
 * 类描述:   不用spring实现邮件发送
 * 创建人:Mu Xiongxiong  
 * 创建时间:2017-5-30 下午10:20:35   
 * 修改人:Mu Xiongxiong   
 * 修改时间:2017-5-30 下午10:20:35   
 * 修改备注:   
 * @version    
 *    
 */
public class Mail {
  
  private String mailServer,from ,to , mailSubject,mailContent,username,password;
  public Mail(String mailServer, String from, String to, String mailSubject,
      String mailContent, String username, String password) {
    this.mailServer = mailServer;
    this.from = from;
    this.to = to;
    this.mailSubject = mailSubject;
    this.mailContent = mailContent;
    this.username = username;
    this.password = password;
  }
  public Mail() {
    username = "tina";
    password = "123"; 
    mailServer = "mail.com";
    from  = "tina@mail.com";
    to  = "jerry@mail.com";
    mailSubject = "问好";
    mailContent = "好久没见,最近可好!";
    
  }
  
  public void send(){
    //设置服务器
    Properties prop = System.getProperties();
    prop.put("mail.smtp.host", mailServer);
    prop.put("mail.smtp.auth", "true");
    //产生Session服务
    EmailAuthenticator mailauth = new EmailAuthenticator(username, password);
    Session mailSession = Session.getInstance(prop,(Authenticator)mailauth);
    //封装message对象
    Message message = new MimeMessage(mailSession);
    try {
      message.setFrom(new InternetAddress(from));    //设置发送人
      message.setRecipient(Message.RecipientType.TO, new InternetAddress(to)); //设置主题
      message.setSubject(mailSubject);                                      //设置标题
      message.setContent(mailContent,"text/html;charset=utf-8");            //设置内容
      message.setSentDate(new Date());                                      //设置日期
      //和粗昂就爱你Transport实例
      Transport tran = mailSession.getTransport("smtp");
      tran.send(message, message.getAllRecipients());
      tran.close();
    } catch (AddressException e) {
      // TODO 异常执行块!
      e.printStackTrace();
    } catch (MessagingException e) {
      // TODO 异常执行块!
      e.printStackTrace();
    }    //
    
  }
  
  
}


第二个主类(EmailAuthenticator):

package org.service.impl;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import org.hibernate.validator.constraints.Email;
public class EmailAuthenticator extends Authenticator {
  private String username=null;
  private String userpass = null;
  
  
  
  public EmailAuthenticator(String username, String userpass) {
    super();
    this.username = username;
    this.userpass = userpass;
  }
  public  PasswordAuthentication getPasswordAuthentication(){
    return new PasswordAuthentication(username, userpass);
  }
  
  
  public String getUsername() {
    return username;
  }
  public void setUsername(String username) {
    this.username = username;
  }
  public String getUserpass() {
    return userpass;
  }
  public void setUserpass(String userpass) {
    this.userpass = userpass;
  }
  
}


测试类:

/**
   * 
  * @Title: testMail1
  * @Description: 该方法的主要作用:java实现底层的邮件发送
  * @param   设定文件  
  * @return  返回类型:void   
  * @throws
   */
  @Test
  public void testMail1(){
    Mail mail = new Mail();
    mail.send();
    System.out.println("发送成功");
  }


源码上完了,再看一下运行的结果吧:


可以看到发送人,发送时间,还有发送内容!已经发送成功!

目录
相关文章
|
2天前
|
数据采集 前端开发 测试技术
《手把手教你》系列技巧篇(三十一)-java+ selenium自动化测试- Actions的相关操作-番外篇(详解教程)
【4月更文挑战第23天】本文介绍了网页中的滑动验证码的实现原理和自动化测试方法。作者首先提到了网站的反爬虫机制,并表示在本地创建一个没有该机制的网页,然后使用谷歌浏览器进行验证。接着,文章详细讲解了如何使用WebElement的click()方法以及Action类提供的API来模拟鼠标的各种操作,如右击、双击、悬停和拖动。
6 2
|
2天前
|
搜索推荐 前端开发 Java
java医院绩效考核管理系统项目源码
系统需要和his系统进行对接,按照设定周期,从his系统获取医院科室和医生、护士、其他人员工作量,对没有录入信息化系统的工作量,绩效考核系统设有手工录入功能(可以批量导入),对获取的数据系统按照设定的公式进行汇算,且设置审核机制,可以退回修正,系统功能强大,完全模拟医院实际绩效核算过程,且每步核算都可以进行调整和参数设置,能适应医院多种绩效核算方式。
4 0
|
2天前
|
设计模式 算法 Java
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
|
2天前
|
设计模式 JavaScript Java
[设计模式Java实现附plantuml源码~行为型] 对象状态及其转换——状态模式
[设计模式Java实现附plantuml源码~行为型] 对象状态及其转换——状态模式
|
2天前
|
设计模式 存储 JavaScript
[设计模式Java实现附plantuml源码~创建型] 多态工厂的实现——工厂方法模式
[设计模式Java实现附plantuml源码~创建型] 多态工厂的实现——工厂方法模式
|
3天前
|
设计模式 Java Go
[设计模式Java实现附plantuml源码~创建型] 集中式工厂的实现~简单工厂模式
[设计模式Java实现附plantuml源码~创建型] 集中式工厂的实现~简单工厂模式
|
3天前
|
Web App开发 数据采集 Java
《手把手教你》系列技巧篇(三十)-java+ selenium自动化测试- Actions的相关操作下篇(详解教程)
【4月更文挑战第22天】本文介绍了在测试过程中可能会用到的两个功能:Actions类中的拖拽操作和划取字段操作。拖拽操作包括基本讲解、项目实战、代码设计和参考代码,涉及到鼠标按住元素并将其拖动到另一个元素上或指定位置。划取字段操作则介绍了如何在一段文字中随机选取一部分,包括项目实战、代码设计和参考代码。此外,文章还提到了滑动验证的实现,并提供了相关的代码示例。
32 2
|
3天前
|
Java 调度
Java面试必考题之线程的生命周期,结合源码,透彻讲解!
Java面试必考题之线程的生命周期,结合源码,透彻讲解!
29 1
|
17天前
|
测试技术 C语言
网站压力测试工具Siege图文详解
网站压力测试工具Siege图文详解
26 0
|
1月前
|
JavaScript jenkins 测试技术
这10款性能测试工具,收藏起来,测试人的工具箱!
这10款性能测试工具,收藏起来,测试人的工具箱!

热门文章

最新文章