最近刚刚写个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()); } } }