一、首先你要用来发送邮件的qq邮箱需要开通pop3/smtp服务,这个可以百度一下就知道了

二、导入所需要的jar包,我使用的是maven添加依赖

<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>smtp</artifactId>
<version>1.6.0</version>
</dependency>

三、进行工具类编写并测试,代码如下

package com.cccuu.project.myUtils;

import com.sun.mail.util.MailSSLSocketFactory;

import javax.mail.Authenticator;
import javax.mail.Message.RecipientType;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;
import java.util.UUID; /*******************************************
* 使用smtp协议发送邮件
* @Package com.cccuu.project.myUtils
* @Author drt
* @Date 2018/3/28 11:40
* @Version V1.0
*******************************************/
public class JavaMailUtil { private final static String PROTOCOL = "smtp"; // 邮件发送协议
private final static String HOST = "smtp.qq.com"; //邮件服务器主机
private final static String PORT = "465"; // SMTP邮件服务器默认端口
private final static String IS_AUTH = "true"; // 是否要求身份认证
private final static String IS_ENABLED_DEBUG_MOD = "true"; //// 是否启用调试模式(启用调试模式可打印客户端与服务器交互过程时一问一答的响应消息) // 初始化连接邮件服务器的会话信息
private static Properties props = null; static {
props = new Properties();
props.setProperty("mail.transport.protocol", PROTOCOL);
props.setProperty("mail.smtp.host", HOST);
props.setProperty("mail.smtp.port", PORT);
props.setProperty("mail.smtp.auth", IS_AUTH);
props.setProperty("mail.debug",IS_ENABLED_DEBUG_MOD);
} /**
* 发送邮件工具类:通过qq邮件发送,因为具有ssl加密,采用的是smtp协议
* @param loginAccount 登录邮箱的账号:如 "1576357208@qq.com"
* @param loginAuthCode 登录qq邮箱时候需要的授权码:可以进入qq邮箱,账号设置那里"生成授权码"
* @param sender 发件人邮箱
* @param recipients 收件人邮箱:支持群发
* @param emailSubject 邮件的主题
* @param emailContent 邮件的内容
* @param emailContentType 邮件内容的类型,支持纯文本:"text/plain;charset=utf-8";,带有Html格式的内容:"text/html;charset=utf-8"
* @return 是否成功
*/
public static boolean sendEmail(final String loginAccount,final String loginAuthCode,String sender,String[] recipients,
String emailSubject,String emailContent,String emailContentType){
boolean flag;
try {
//开启SSL加密,否则会失败
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
props.put("mail.smtp.ssl.enable", "true");
props.put("mail.smtp.ssl.socketFactory", sf);
// 创建session
Session session = Session.getDefaultInstance(props, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
//用户名可以用QQ账号也可以用邮箱的别名:第一个参数为邮箱账号,第二个为授权码
PasswordAuthentication pa = new PasswordAuthentication(loginAccount,loginAuthCode);
return pa;
}
});
//设置打开调试状态
//session.setDebug(true);
//声明一个Message对象(代表一封邮件),从session中创建,可以发送几封邮件:可以在这里 for循环多次
MimeMessage msg = new MimeMessage(session);
//邮件信息封装
//1发件人
msg.setFrom(new InternetAddress(sender));
//2收件人:可以多个
//msg.setRecipient(RecipientType.TO, new InternetAddress("linsenzhong@126.com"));
InternetAddress[] receptientsEmail=new InternetAddress[recipients.length];
for(int i=0;i<recipients.length;i++){
receptientsEmail[i]=new InternetAddress(recipients[i]);
}
//多个收件人
msg.setRecipients(RecipientType.TO,receptientsEmail);
//设置发送时间
msg.setSentDate(new Date());
//设置邮件优先级
msg.setHeader("X-Priority","1");
//3邮件内容:主题、内容
msg.setSubject(emailSubject);
//设置html内容为邮件正文
msg.setContent(emailContent,emailContentType);
//设置自定义发件人昵称
String nick="";
try {
nick=javax.mail.internet.MimeUtility.encodeText("河南灵秀网络科技有限公司");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
msg.setFrom(new InternetAddress(nick+" <"+sender+">"));
// 保存并生成最终的邮件内容
msg.saveChanges();
//发送动作
Transport.send(msg);
System.out.println("邮件发送成功");
flag=true; } catch (Exception e) {
System.out.println("邮件发送失败: "+e.getMessage());
flag=false;
}
return flag;
} public static void main(String[] args) throws Exception {
String code=UUID.randomUUID().toString();
boolean result=sendEmail("1576357208@qq.com", "lisaygkznttogjhj", "1576357208@qq.com",
new String[]{"17737138812@163.com","303157545@qq.com"},
"修改密码验证码",
"<h3 style='margin-left: 10px; color: #00a0e9'>你的验证码是"+code+",10分钟内有效,过期请重新获取</h3>",
"text/html;charset=utf-8");
System.out.println("\n发送结果:"+result);
}
}

使用javaMail实现简单邮件发送的更多相关文章

  1. java-基于JavaMail的Java邮件发送

    1.基于JavaMail的Java邮件发送:简单邮件发送 2.基于JavaMail的Java邮件发送:复杂邮件发送

  2. 基于JavaMail的Java邮件发送:复杂邮件发送

    参考:http://blog.csdn.net/xietansheng/article/details/51722660package com.bfd.ftp.utils;import java.ut ...

  3. ActiveMQ入门系列之应用:Springboot+ActiveMQ+JavaMail实现异步邮件发送

    现在邮件发送功能已经是几乎每个系统或网址必备的功能了,从用户注册的确认到找回密码再到消息提醒,这些功能普遍的会用到邮件发送功能.我们都买过火车票,买完后会有邮件提醒,有时候邮件并不是买完票立马就能收到 ...

  4. JavaMail如何保证邮件发送成功

    使用过JavaMail的api发送邮件的人可能会有这样一个疑惑:我如何知道我调用该api发送的邮件是否成功呢?一般的开放的api给我们调用都会有个返回值或者状态码,来告诉我们执行成功与否.但是Java ...

  5. 【转】基于JavaMail的Java邮件发送

    http://blog.csdn.net/xietansheng/article/details/51673073 http://blog.csdn.net/xietansheng/article/d ...

  6. springboot 简单邮件发送

    写作原因: 项目接近尾声,需求一变再变,其实技术点从未改变,只是业务逻辑的变更,发送邮件提醒的功能,两个月变更七次.我想把技术点记录下来,这里无关乎业务,只有发送邮件的功能. 邮件发送准备说明: 由于 ...

  7. 基于JavaMail的Java邮件发送:简单邮件发送

    使用Java应用程序发送 E-mail 十分简单,但是首先你应该在你的机器上安装 JavaMail API 和Java Activation Framework (JAF) . 您可以从 Java 网 ...

  8. JavaMail技术实现邮件发送转【】

    1.导入2个jar包,mail.jar,activation.jar 2.导入的jar包与myeclipse中自带的javaee 中的javaee.jar中的javax.activation包及jav ...

  9. C#简单邮件发送

    System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(); message.From = new System.N ...

随机推荐

  1. VUE请求本地数据的配置json-server

    VUE开发请求本地数据的配置,早期的vue-lic下面有dev-server.js和dev-client.js两文件,请求本地数据在dev-server.js里配置,最新的vue-webpack-te ...

  2. linux --> gcc编译之路径搜索

    gcc编译之路径搜索 头文件 --> 搜寻先从-I开始; --> 找gcc的环境变量 : C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PA ...

  3. Algorithm --> Kruskal算法和Prim算法

    最小生成树之Kruskal算法和Prim算法 Kruskal多用于稀疏图,prim多用于稠密图. 根据图的深度优先遍历和广度优先遍历,可以用最少的边连接所有的顶点,而且不会形成回路.这种连接所有顶点并 ...

  4. 对lua表中数据按一定格式处理,循环

    function putStartCard(handCard) function dataDeal(array,a,b,c) cclog("进入datadeal=============== ...

  5. Python数据增强(data augmentation)库--Augmentor 使用介绍

    Augmentor 使用介绍 原图 random_distortion(probability, grid_height, grid_width, magnitude) 最终选择参数为 p.rando ...

  6. 【LATEX】个人版latex论文模板

    以下是我的个人论文模板,运行环境为Xelatex(在线ide:Sharelatex.com) 鉴于本人常有插入程序的需求,故引用了lstlisting \RequirePackage{ifxetex} ...

  7. C#简单入门

    公司给的一个小的practice C# vs2017 Stage 1 (cmd)1. Parse the dll (reflection)2. Write all the public methods ...

  8. Alpha第十天

    Alpha第十天 听说 031502543 周龙荣(队长) 031502615 李家鹏 031502632 伍晨薇 031502637 张柽 031502639 郑秦 1.前言 任务分配是VV.ZQ. ...

  9. 20162311 实验二 Java面向对象程序设计 实验报告

    实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...

  10. 亚马逊AWS学习——VPC里面几个概念的关系

    VPC中涉及几个概念: VPC 子网 路由表 Internet网关 安全组 今天来讲讲这几个概念之间的关系. 1. VPC 说的就是VPC,当然VPC范围是最大的,VPC即virtual privat ...