使用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("发送成功");
  }


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


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

目录
相关文章
|
1天前
|
Java 索引
【JAVA学习之路 | 进阶篇】HashMap源码剖析
【JAVA学习之路 | 进阶篇】HashMap源码剖析
|
1天前
|
机器学习/深度学习 移动开发 测试技术
《手把手教你》系列技巧篇(五十一)-java+ selenium自动化测试-字符串操作-下篇(详解教程)
【5月更文挑战第15天】自动化测试中进行断言的时候,我们可能经常遇到的场景。从一个字符串中找出一组数字或者其中的某些关键字,而不是将这一串字符串作为结果进行断言。这个时候就需要我们对字符串进行操作,宏哥这里介绍两种方法:正则和字符串切片函数split()。
14 2
|
2天前
|
JavaScript Java 测试技术
大学生体质测试|基于Springboot+vue的大学生体质测试管理系统设计与实现(源码+数据库+文档)
大学生体质测试|基于Springboot+vue的大学生体质测试管理系统设计与实现(源码+数据库+文档)
11 0
|
2天前
|
搜索推荐 Java 测试技术
《手把手教你》系列技巧篇(五十)-java+ selenium自动化测试-字符串操作-上篇(详解教程)
【5月更文挑战第14天】本文介绍了自动化测试中如何从字符串中提取特定信息,主要讲解了两种方法:正则表达式和字符串切片操作。文章提供了一个测试场景,即在搜索引擎中搜索“北京宏哥”并比较百度和必应的搜索结果数量。通过字符串切片函数`split()`,可以从搜索结果的描述中提取出数字。代码示例展示了如何使用Java实现这个功能,包括在百度和必应的搜索页面获取结果数量,并进行比较。文章最后还简单提到了其他字符串截取的方法,如`substring()`和`StringUtils`类中的方法。
16 2
|
3天前
|
监控 NoSQL Java
java云MES 系统源码Java+ springboot+ mysql 一款基于云计算技术的企业级生产管理系统
MES系统是生产企业对制造执行系统实施的重点在智能制造执行管理领域,而MES系统特点中的可伸缩、信息精确、开放、承接、安全等也传递出:MES在此管理领域中无可替代的“王者之尊”。MES制造执行系统特点集可伸缩性、精确性、开放性、承接性、经济性与安全性于一体,帮助企业解决生产中遇到的实际问题,降低运营成本,快速适应企业不断的制造执行管理需求,使得企业已有基础设施与一切可用资源实现高度集成,提升企业投资的有效性。
36 5
|
3天前
|
JavaScript 前端开发 Java
《手把手教你》系列技巧篇(四十九)-java+ selenium自动化测试-隐藏元素定位与操作(详解教程)
【5月更文挑战第13天】本文主要讨论了在Selenium自动化测试中如何处理前端隐藏元素的问题。隐藏元素通常是通过`type="hidden"`或`style="display: none;"`属性实现的,它们在页面上不可见,但仍然存在于HTML代码中。Selenium可以定位到这些隐藏元素,但无法直接进行点击、输入等操作,会报错“ElementNotInteractableException”。
25 3
|
4天前
|
JavaScript 前端开发 测试技术
《手把手教你》系列技巧篇(四十八)-java+ selenium自动化测试-判断元素是否可操作(详解教程)
【5月更文挑战第12天】本文介绍了WebDriver中用于判断元素状态的三个方法:`isEnabled()`、`isSelected()`和`isDisplayed()`。`isSelected()`检查元素是否被选中,通常用于勾选框。`isDisplayed()`则用来判断元素是否在页面上可见。`isEnabled()`方法确定元素是否可操作,例如是否能点击或输入内容。
14 1
|
5天前
|
监控 安全 NoSQL
采用java+springboot+vue.js+uniapp开发的一整套云MES系统源码 MES制造管理系统源码
MES系统是一套具备实时管理能力,建立一个全面的、集成的、稳定的制造物流质量控制体系;对生产线、工艺、人员、品质、效率等多方位的监控、分析、改进,满足精细化、透明化、自动化、实时化、数据化、一体化管理,实现企业柔性化制造管理。
30 3
|
5天前
|
存储 JavaScript Java
《手把手教你》系列技巧篇(四十七)-java+ selenium自动化测试-判断元素是否显示(详解教程)
【5月更文挑战第11天】WebDriver 的 `isDisplayed()` 方法用于检查页面元素是否可见,如果元素存在于DOM中且可视,返回`true`,否则返回`false`。在自动化测试中,这个方法常用于验证元素是否真正显示在页面上。示例代码展示了如何使用 `isDisplayed()` 判断百度登录页面的特定错误提示文字是否出现。
16 1
|
1天前
|
Java 调度
【JAVA学习之路 | 提高篇】线程的通信
【JAVA学习之路 | 提高篇】线程的通信

热门文章

最新文章