一、 发送邮件
1.1 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
1.2 JAVA——api
package com.dpt.service.comm;
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.util.Properties;
public class MailUtil {
/**
* QQ用户发送邮件方法
* @param mailServer 邮件服务器的主机名:如 "smtp.qq.com"
* @param loginAccount 登录邮箱的账号:如 "994784278@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
*/
@Deprecated
public static int sendQQEmail(String mailServer,final String loginAccount,final String loginAuthCode,String sender,String[] recipients,
String emailSubject,String emailContent,String emailContentType){
int seccess=0;
try {
//跟smtp服务器建立一个连接
Properties p = new Properties();
//设置邮件服务器主机名
p.setProperty("mail.host",mailServer);
//发送服务器需要身份验证,要采用指定用户名密码的方式去认证
p.setProperty("mail.smtp.auth", "true");
//发送邮件协议名称
p.setProperty("mail.transport.protocol", "smtp");
//开启SSL加密,否则会失败
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
p.put("mail.smtp.ssl.enable", "true");
p.put("mail.smtp.ssl.socketFactory", sf);
// 创建session
Session session = Session.getDefaultInstance(p, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
//用户名可以用QQ账号也可以用邮箱的别名:第一个参数为邮箱账号,第二个为授权码
PasswordAuthentication pa = new PasswordAuthentication(loginAccount,loginAuthCode);
return pa;
}
});
//设置打开调试状态
session.setDebug(true);
//可以发送几封邮件:可以在这里 for循环多次
//声明一个Message对象(代表一封邮件),从session中创建
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);
//3邮件内容:主题、内容
msg.setSubject(emailSubject);
//msg.setContent("Hello, 我是debug!!!", );//纯文本
msg.setContent(emailContent,emailContentType);//发html格式的文本
//发送动作
Transport.send(msg);
System.out.println("邮件发送成功");
seccess=1;
} catch (Exception e) {
System.out.println("邮件发送失败: "+e.getMessage());
seccess=0;
}
return seccess;
}
/**
-
163用户发送邮件方法
-
@param addrs 收件人地址
-
@param username 登录邮箱账号
-
@param password 登录邮箱密码
-
@param maileTitle 邮件标题
-
@param content 邮件内容
-
@param emailContentType 邮件内容的类型,支持纯文本:“text/plain;charset=utf-8”;,带有Html格式的内容:“text/html;charset=utf-8”
-
@return “0 失败” | “1 成功”
/
@Deprecated
public static int send163mail(String [] addrs,String username,String password,String maileTitle,String content,String emailContentType){
int seccess = 0;
try {
// 配置发送邮件的环境属性
final Properties props = new Properties();
/
* 可用的属性: mail.store.protocol / mail.transport.protocol / mail.host /
* mail.user / mail.from
*/
// 表示SMTP发送邮件,需要进行身份验证
props.put(“mail.smtp.auth”, “true”);
props.put(“mail.smtp.host”, “smtp.163.com”);// props.put("mail.user", "hardstudylive@163.com"); //props.put("mail.password", "zx677973"); // 发件人的账号 props.put("mail.user", username); // 访问SMTP服务时需要提供的密码 props.put("mail.password", password); // 构建授权信息,用于进行SMTP进行身份验证 Authenticator authenticator = new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { // 用户名、密码 String userName = props.getProperty("mail.user"); String password = props.getProperty("mail.password"); return new PasswordAuthentication(userName, password); } }; // 使用环境属性和授权信息,创建邮件会话 Session mailSession = Session.getInstance(props, authenticator); // 创建邮件消息 MimeMessage message = new MimeMessage(mailSession); // 设置发件人 InternetAddress form = new InternetAddress(props.getProperty("mail.user")); message.setFrom(form); // 设置收件人 InternetAddress[] receptientsEmail=new InternetAddress[addrs.length]; for(int i=0;i<addrs.length;i++){ receptientsEmail[i]=new InternetAddress(addrs[i]); } //一个收件人 //InternetAddress addr = new InternetAddress("994784278@qq.com"); //message.setRecipient(RecipientType.TO, addr); //多个收件人 message.setRecipients(RecipientType.TO, receptientsEmail); // 设置抄送 /*InternetAddress cc = new InternetAddress("262771795@qq.com"); message.setRecipient(RecipientType.CC, cc);*/ // 设置密送,其他的收件人不能看到密送的邮件地址
/* InternetAddress bcc = new InternetAddress("994784278@qq.com");
message.setRecipient(RecipientType.CC, bcc);*/// 设置邮件标题 message.setSubject(maileTitle); // 设置邮件的内容体 //message.setContent("<a href='http://www.baidu.com'>测试的HTML邮件</a>", "text/html;charset=UTF-8"); //message.setContent("","text/html;charset=UTF-8"); message.setContent(content,emailContentType); message.setContent("",emailContentType); // 发送邮件 Transport.send(message); System.out.println("邮件发送成功"); seccess=1;
} catch (Exception e) {
System.out.println("邮件发送失败: "+e.getMessage());
seccess=0;
}
return seccess;
}
//main函数测试
// public static void main(String[] args) throws Exception {
//
// /* int result=sendQQEmail(“smtp.qq.com”, “这里输入你的qq邮箱”, “这里输入前面说到的授权码”,
// “发送人的qq邮箱”,
// new String[]{ "262771795@qq.com","994784278@qq.com" }, //这里就是一系列的收件人的邮箱了
// “节日祝福”,
// “欢迎来到我的小窝: ,” + “祝您生活愉快!”,
// “text/html;charset=utf-8”);
//
// System.out.println(“发送结果:”+result); */
//
//
// int res = JavaMailUtils.send163mail(new String[]{“262771795@qq.com”,“994784278@qq.com”,“3389441575@qq.com”},
// "hardstudylive@163.com", “zx677973”, “邮箱测试”,
// “测试的HTML邮件”, “text/html;charset=UTF-8”);
// System.out.println(“发送结果:”+res);
// }
/**
* 设置邮件通用参数
* @param host
* @return 设置到属性对象里面的参数
*/
public static Properties getMailSetParamInfo(String host)
{
try
{
final Properties p = new Properties();
//设置邮件服务器主机名
p.setProperty("mail.host",host);
//发送服务器需要身份验证,要采用指定用户名密码的方式去认证
p.setProperty("mail.smtp.auth", "true");
//发送邮件协议名称
p.setProperty("mail.transport.protocol", "smtp");
//开启SSL加密,否则会失败
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
p.put("mail.smtp.ssl.enable", "true");
p.put("mail.smtp.ssl.socketFactory", sf);
return p;
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}
/**
* 处理授权后的的Session对象内容
* @param props 属性对象
* @param userName 用户名
* @param password 密码
* @param QQAuthCode QQ授权码
* @return Session对象
*/
public static Session getAuthParam(final Properties props, final String userName, final String password, final String QQAuthCode)
{
try
{
Authenticator authenticator = new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
if(QQAuthCode == null)
return new PasswordAuthentication(userName, password);
else
return new PasswordAuthentication(userName, QQAuthCode);
}
};
// 使用环境属性和授权信息,创建邮件会话
return Session.getInstance(props, authenticator);
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}
/**
* 操作接收Session对象的参数 进行发送邮件操作内容
* @param mailSession sesseion对象
* @param moreRecipientAddres 多个收件人
* @param senderAddress 发送邮件地址
* @param mailTitle 标题
* @param content 内容
* @return String "1 成功" | "0 失败"
*/
public static String OpertionSendMail(
Session mailSession,
String[] moreRecipientAddres,
String senderAddress,
String mailTitle,
String content)
{
String seccess = "1";
try
{
MimeMessage message = new MimeMessage(mailSession);
// 设置发件人
InternetAddress form = new InternetAddress(senderAddress);
message.setFrom(form);
// 设置收件人
InternetAddress[] receptientsEmail = new InternetAddress[moreRecipientAddres.length];
for(int i=0;i<moreRecipientAddres.length;i++)
{
receptientsEmail[i]=new InternetAddress(moreRecipientAddres[i]);
}
//开通多个收件人
message.setRecipients(RecipientType.TO, receptientsEmail);
// 设置邮件标题
message.setSubject(mailTitle);
// 设置内容
message.setContent(content,"text/html;charset=UTF-8");
// 发送邮件
Transport.send(message);
System.out.println("邮件发送成功");
seccess = "1";
}
catch(Exception e)
{
seccess = "0";
e.printStackTrace();
}
return seccess;
}
/**
* 操作接收Session对象的参数 进行发送邮件操作内容
* @param mailSession sesseion对象
* @param moreRecipientAddres 多个收件人
* @param senderAddress 发送邮件地址
* @param mailTitle 标题
* @param content 内容
* @return String "1 成功" | "0 失败"
*/
public static String OpertionSendMail(
Session mailSession,
String[] moreRecipientAddres,
String senderAddress,
String mailTitle,
String content,
String temp)
{
String seccess = "1";
try
{
MimeMessage message = new MimeMessage(mailSession);
// 设置发件人
InternetAddress form = new InternetAddress(senderAddress);
message.setFrom(form);
// 设置收件人
InternetAddress[] receptientsEmail = new InternetAddress[moreRecipientAddres.length];
for(int i=0;i<moreRecipientAddres.length;i++)
{
receptientsEmail[i]=new InternetAddress(moreRecipientAddres[i]);
}
//开通多个收件人
message.setRecipients(RecipientType.TO, receptientsEmail);
// 设置邮件标题
message.setSubject(mailTitle);
String contents = getTemp(content);
// 设置内容
message.setContent(contents,"text/html;charset=UTF-8");
// 发送邮件
Transport.send(message);
System.out.println("邮件发送成功");
seccess = "1";
}
catch(Exception e)
{
seccess = "0";
e.printStackTrace();
}
return seccess;
}
/**
* @param 服务地址 "smtp.qq.com" | "smtp.163.com" | "smtp.ym.163.com"
* @param 用户名
* @param 密码
* @param QQ授权码
* @param 多个收件人
* @param 标题
* @param 内容
* @return "0 发送失败" | "1 发送成功"
*/
public static String SendMailInfo(String serverHost,
final String userName,
final String password,
final String QQAuthCode,
String[] RecipientsAddrs,
String title,
String content)
{
try
{
Properties mailSetParamInfo = getMailSetParamInfo(serverHost);
Session sessionAuthParam = getAuthParam(mailSetParamInfo,userName,password,QQAuthCode);
return OpertionSendMail(sessionAuthParam,RecipientsAddrs,userName,title,content);
}
catch(Exception e)
{
e.printStackTrace();
return "0";
}
}
public static String SendMailInfo(String serverHost,
final String userName,
final String password,
final String QQAuthCode,
String[] RecipientsAddrs,
String title,
String content,
String temp)
{
try
{
Properties mailSetParamInfo = getMailSetParamInfo(serverHost);
Session sessionAuthParam = getAuthParam(mailSetParamInfo,userName,password,QQAuthCode);
return OpertionSendMail(sessionAuthParam,RecipientsAddrs,userName,title,content,temp);
}
catch(Exception e)
{
e.printStackTrace();
return "0";
}
}
public static String getTemp(String content){
//设置内容模板
String cont="<table class='eml_frame_cnt' cellspacing='0' cellpadding='0' border='0' style='width: 660px;table-layout:fixed;margin:0 auto;background-color:#fcf5e2;'>"+
" <tr>"+
"<td id='qqmail_cardname' class='eml_title' align='center' style='text-align: center;padding: 25px 20px 0px;font-size: 14px;font-weight: bold;'>"+
content+
"</td>"+
"</tr>"+
" <tr>"+
"<td align='center' style='text-align: center;padding: 18px 20px 0px;'>"+
"<table class='eml_posterCnt' cellspacing='0' cellpadding='0' border='0' style='margin: 0 auto;table-layout: fixed;'>"+
"<tr>"+
"<td class='eml_posterWrap' width='440' height='330' style='width:440px;height: 330px;border: 1px solid #E9D9C0;padding: 2px;vertical-align: top;'>"+
"<embed class='eml_poster' wmode='transparent' id='qqmail_cardurl' parm='card/b572.swf' src='https://res.mail.qq.com/zh_CN/greetingcard/card/b572.swf' quality='high' width='440' height='330' cardid='99572' style='vertical-align:top;' invokeurls='false' allownetworking='all' allowscriptaccess='samedomain'></embed>"
+"</td>"+
"</tr>"+
"</table>"+
"</td>"+
"</tr>"+
"<tr>"+
"</tr>"+
"</table>";
return cont;
}
public static void main(String[] args) {
String[] addrs = new String[]{"529992405@qq.com","2225678211@qq.com","1337195270@qq.com"};
//String[] addrs = new String[]{"994784278@qq.com"};
/*System.out.println(SendMailInfo("smtp.qq.com", "262771795@qq.com", null, "sgrfwgaamaihbgce", addrs, "你好",
"4szhan"));
System.out.println(SendMailInfo("smtp.ym.163.com", "cai.yachao@4szhan.com", "123456", null, addrs, "你好",
"谢谢"));*/
System.out.println(SendMailInfo("smtp.163.com", "free_navy@163.com", "lijiawei960622", null, addrs, "hello everyBody",
"good good study, day day up!","moban"));
}
}