最近刚刚写个Java定时发送邮件 所以记录下代码,方便后面使用。
此邮件发送的是非匿名邮件,应为多次测试发现大家习惯性把匿名邮件置为垃圾邮件
这次用的是outlook的邮箱代码,这个时候发生了一点小问题
大家看outlook端口为 587 当时以为发送邮件端口也是587,所以不能发送。。。。 实际端口为25,JavaMeil默认发送端口也是25,下面代码
package com.hand.jobs.job;
import com.sun.mail.util.MailSSLSocketFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.Properties;
/**
* @Auther:lkj
* @Date:2018/8/9 09:33
* @E-mail:
* @Description: 邮件发送工具
*/
public class MailUtil {
private static Logger logger = LoggerFactory.getLogger(MailUtil.class);
private static final String HOST = "smtp.partner.outlook.cn";// 邮箱服务器
private static final String USERNAME = "*****@uabsbattery.com";// 发件人
private static final String PASSWORD = "******";// 邮箱密码
/**
* 邮件发送器
*
* @return 配置好的工具
*/
public static void sendMail(String to, String subject, String html) {
/**
*
* 功能描述: 邮件发送,只发送文本
*
* @auther:lkj
* @date:2018/8/9 上午11:46
* @param:[to 收件人, subject 主题, html 内容]
* @return:void
*
*/
Transport ts = null;
try{
Properties prop = new Properties();
prop.put("mail.host", HOST);
prop.put("mail.transport.protocol", "smtp");
prop.put("mail.smtp.auth", "true");
prop.put("mail.smtp.starttls.enable", "true");
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
prop.put("mail.smtp.ssl.socketFactory", sf); //这句加上后才发送成功,不加的话就发送不成功
prop.put("mail.smtp.socketFactory.fallback", "false");
//使用JavaMail发送邮件的5个步骤
//1、创建session
Session session = Session.getInstance(prop);
//开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
session.setDebug(true);
//2、通过session得到transport对象
ts = session.getTransport();
//3、使用邮箱的用户名和密码连上邮件服务器,发送邮件时,发件人需要提交邮箱的用户名和密码给smtp服务器,用户名和密码都通过验证之后才能够正常发送邮件给收件人。
ts.connect(HOST, USERNAME, PASSWORD);
//4、创建邮件
//创建邮件对象
MimeMessage message = new MimeMessage(session);
//指明邮件的发件人
message.setFrom(new InternetAddress(USERNAME));
//指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发
message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
//邮件的标题
message.setSubject(subject);
//邮件的文本内容
message.setContent(html, "text/html;charset=UTF-8");
//返回创建好的邮件对象
//5、发送邮件
ts.sendMessage(message, message.getAllRecipients());
ts.close();
logger.info("SendMail Success.>"+to);
}catch (Exception e){
e.printStackTrace();
logger.error(e.getMessage());
}
}
}