前言
spring boot 2.0.0.RELEASEspring 5.0.4.RELEASE网易企业邮箱 版jdk 1.8发邮件的说明
按照加密方式方式,可以分为:
明文TLS加密SSL加密
发送明文
发送明文邮件时,需要设置好:
协议(默认是smtp,可不用设置)host端口(默认是25)用户名密码开启身份验证(mail.smtp.auth=true)
网易企业邮箱 不再支持明文邮件了。使用此种方式调用时,会获得错误:535 5.7.0 ERR.LOGIN.NONSSL
JavaMailSenderImpl发送邮件,示例代码如下:
public class TestSendMail1 {private static Logger log = LoggerFactory.getLogger(TestSendMail1.class);public static void main(String[] args) throws Exception {JavaMailSenderImpl mailSender = new JavaMailSenderImpl();mailSender.setHost("smtphz.");mailSender.setPort(25);mailSender.setUsername("xxx@");mailSender.setPassword("123456");Properties javaMailProperties = mailSender.getJavaMailProperties();javaMailProperties.setProperty("mail.smtp.auth", "true"); javaMailProperties.setProperty("mail.debug", "true");//启用调试javaMailProperties.setProperty("mail.smtp.timeout", "3000"); //设置超时时间3秒mailSender.setJavaMailProperties(javaMailProperties);try{MimeMessage mailMessage = mailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(mailMessage, true, "UTF-8");helper.setFrom("xxx@");helper.setTo("xxx@");helper.setSubject("测试邮件:您有一个新的未处理消息(使用明文发送)");helper.setText(String.format("hi,%s: <br/><br/><br/>很高兴认识你!", "张三"), true);mailSender.send(mailMessage);}catch (Exception e) {log.error("发送邮件失败", e);}}}
springboot mail插件发送邮件,配置如下(示例代码在后面):
spring.mail.host=smtphz.spring.mail.username=xxx@spring.mail.password=123456spring.mail.port=25spring.mail.protocol=smtpspring.mail.default-encoding=UTF-8spring.mail.properties.mail.smtp.timeout=3000spring.mail.properties.mail.smtp.auth=truespring.mail.properties.mail.debug=truespring.mail.properties.mail.smtp.ssl.enable=falsespring.mail.properties.mail.imap.ssl.socketFactory.fallback=falsespring.mail.properties.mail.smtp.ssl.socketFactory.class=.ssl.SSLSocketFactoryspring.mail.properties.mail.smtp.starttls.enable=falsespring.mail.properties.mail.smtp.starttls.required=false
TLS加密
发送明文邮件时,需要设置好:
协议(默认是smtp,可不用设置)host端口(默认情况下,TLS加密使用25端口)用户名密码开启身份验证(mail.smtp.auth=true)支持TLS加密(mail.smtp.starttls.required = true)
TLS加密使用25端口 ! TLS加密使用25端口 ! TLS加密使用25端口!
JavaMailSenderImpl发送邮件,示例代码如下:
public class TestSendMail2 {private static Logger log = LoggerFactory.getLogger(TestSendMail2.class);public static void main(String[] args) throws Exception {JavaMailSenderImpl mailSender = new JavaMailSenderImpl();mailSender.setHost("smtphz.");mailSender.setPort(25);mailSender.setUsername("xxx@");mailSender.setPassword("123456");Properties javaMailProperties = mailSender.getJavaMailProperties();javaMailProperties.setProperty("mail.smtp.auth", "true"); javaMailProperties.setProperty("mail.debug", "true");//启用调试javaMailProperties.setProperty("mail.smtp.timeout", "3000"); //设置超时时间3秒javaMailProperties.setProperty("mail.smtp.starttls.enable", "true");javaMailProperties.setProperty("mail.smtp.starttls.required", "true");javaMailProperties.setProperty("mail.smtp.ssl.enable", "false");javaMailProperties.setProperty("mail.imap.ssl.socketFactory.fallback", "false");javaMailProperties.setProperty("mail.smtp.ssl.socketFactory.class", ".ssl.SSLSocketFactory");mailSender.setJavaMailProperties(javaMailProperties);try{MimeMessage mailMessage = mailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(mailMessage, true, "UTF-8");helper.setFrom("xxx@");helper.setTo("xxx@");helper.setSubject("测试邮件:您有一个新的未处理消息(使用TLS加密发送)");helper.setText(String.format("hi,%s: <br/><br/><br/>很高兴认识你!", "张三"), true);mailSender.send(mailMessage);}catch (Exception e) {log.error("发送邮件失败", e);}}}
springboot mail插件发送邮件,配置如下(示例代码在后面):
spring.mail.host=smtphz.spring.mail.username=xxx@spring.mail.password=123456spring.mail.port=25spring.mail.protocol=smtpspring.mail.default-encoding=UTF-8spring.mail.properties.mail.smtp.timeout=3000spring.mail.properties.mail.smtp.auth=truespring.mail.properties.mail.debug=truespring.mail.properties.mail.smtp.ssl.enable=falsespring.mail.properties.mail.imap.ssl.socketFactory.fallback=falsespring.mail.properties.mail.smtp.ssl.socketFactory.class=.ssl.SSLSocketFactoryspring.mail.properties.mail.smtp.starttls.enable=falsespring.mail.properties.mail.smtp.starttls.required=true
SSL加密
发送明文邮件时,需要设置好:
协议(默认是smtp,可不用设置)host端口(默认情况下,SSL加密使用456端口)用户名密码开启身份验证(mail.smtp.auth=true)支持SSL加密(mail.smtp.ssl.enable = true)
网易企业邮箱 SSL 端口994
JavaMailSenderImpl发送邮件,示例代码如下:
public class TestSendMail3 {private static Logger log = LoggerFactory.getLogger(TestSendMail3.class);public static void main(String[] args) throws Exception {JavaMailSenderImpl mailSender = new JavaMailSenderImpl();mailSender.setHost("smtphz.");mailSender.setPort(994);mailSender.setUsername("xxx@");mailSender.setPassword("123456");Properties javaMailProperties = mailSender.getJavaMailProperties();javaMailProperties.setProperty("mail.smtp.auth", "true"); javaMailProperties.setProperty("mail.debug", "true");//启用调试javaMailProperties.setProperty("mail.smtp.timeout", "3000"); //设置超时时间3秒javaMailProperties.setProperty("mail.smtp.starttls.enable", "false");javaMailProperties.setProperty("mail.smtp.starttls.required", "false");javaMailProperties.setProperty("mail.smtp.ssl.enable", "true");javaMailProperties.setProperty("mail.imap.ssl.socketFactory.fallback", "false");javaMailProperties.setProperty("mail.smtp.ssl.socketFactory.class", ".ssl.SSLSocketFactory");mailSender.setJavaMailProperties(javaMailProperties);try{MimeMessage mailMessage = mailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(mailMessage, true, "UTF-8");helper.setFrom("xxx@");helper.setTo("xxx@");helper.setSubject("测试邮件:您有一个新的未处理消息(使用SSL加密发送)");helper.setText(String.format("hi,%s: <br/><br/><br/>很高兴认识你!", "张三"), true);mailSender.send(mailMessage);}catch (Exception e) {log.error("发送邮件失败", e);}}}
springboot mail插件发送邮件,SSL加密,配置如下(示例代码在后面):
spring.mail.host=smtphz.spring.mail.username=xxx@spring.mail.password=123456spring.mail.port=25spring.mail.protocol=smtpspring.mail.default-encoding=UTF-8spring.mail.properties.mail.smtp.timeout=3000spring.mail.properties.mail.smtp.auth=truespring.mail.properties.mail.debug=truespring.mail.properties.mail.smtp.ssl.enable=truespring.mail.properties.mail.imap.ssl.socketFactory.fallback=falsespring.mail.properties.mail.smtp.ssl.socketFactory.class=.ssl.SSLSocketFactoryspring.mail.properties.mail.smtp.starttls.enable=falsespring.mail.properties.mail.smtp.starttls.required=false
springboot mail插件发送邮件 示例
@RunWith(SpringRunner.class)@SpringBootTest(classes=Application.class)@TestPropertySource("classpath:application-TestSendMail3.properties")public class TestSendMail4 {private Logger log = LoggerFactory.getLogger(TestSendMail4.class);@Autowiredprivate JavaMailSenderImpl mailSender;@Testpublic void test01() {try{MimeMessage mailMessage = mailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(mailMessage, true, "UTF-8");helper.setFrom("xxx@");helper.setTo("xxx@");helper.setSubject("测试邮件:您有一个新的未处理消息(使用 spring boot 发送)");helper.setText(String.format("hi,%s: <br/><br/><br/>很高兴认识你!", "张三"), true);mailSender.send(mailMessage);}catch (Exception e) {log.error("发送邮件失败", e);}}}
application-TestSendMail3.properties
spring.mail.host=smtphz.spring.mail.username=xxx@spring.mail.password=123456spring.mail.port=25spring.mail.protocol=smtpspring.mail.default-encoding=UTF-8spring.mail.properties.mail.smtp.timeout=3000spring.mail.properties.mail.smtp.auth=truespring.mail.properties.mail.debug=truespring.mail.properties.mail.smtp.ssl.enable=falsespring.mail.properties.mail.imap.ssl.socketFactory.fallback=falsespring.mail.properties.mail.smtp.ssl.socketFactory.class=.ssl.SSLSocketFactoryspring.mail.properties.mail.smtp.starttls.enable=falsespring.mail.properties.mail.smtp.starttls.required=true
其它
网易企业邮箱从这里 查协议、host、端口
/help/client.html?device=pc
网易企业邮箱错误码: 420 ERR.LOGIN.DOMAINNOTEXIST 错误
查到的host不对。按照前面的说明查host。
网易企业邮其它错误码
"ERR.LOGIN.USERORPASSNULL":"参数错误:用户名或者密码为空","ERR.LOGIN.DOMAINNULL":"参数错误:未指定的域邮箱参数","ERR.LOGIN.PASSERR":"用户名和密码不匹配","ERR.LOGIN.ILLEGALACCOUNT":"该帐号属于群发名单或者别名,不允许登录","ERR.LOGIN.USERNOTEXIST":"该帐号不存在,请你确认域名和帐号","ERR.LOGIN.SUPERADMINDOMAINERR":"该超级管理员并未申请任何域名邮箱","ERR.LOGIN.SYSTEMBUSY":"登录系统繁忙,请你稍后再试","ERR.LOGIN.IPDENY":"登录失败,你的IP在黑名单中,请你联系客服","ERR.LOGIN.USRSTATUS1":"该帐号已被禁用,请联系管理员","ERR.LOGIN.USRSTATUS2":"帐号已过期,请联系管理员","ERR.LOGIN.USRSTATUS5":"该帐号已被管理员删除,请联系管理员","SUC.LOGIN.USRUNLOCK":"该帐号已解除冻结状态,请你再次输入用户和密码继续","ERR.LOGIN.DOMAINEXPED":"该域名邮箱已经过期了","ERR.LOGIN.DOMAINNOTREGISTER":"该域名尚未通过,请以超级管理员登录","ERR.LOGIN.DOMAINSTATUS1":"该域名邮箱已被禁用,请你联系客服","ERR.SESSIONNULL":"会话已经失效,请你重新登录操作","ERR.SYSTEM":"系统繁忙,请你稍后再试","ERR.ADMINREQUIRE":"非法权限,该帐号无法执行这个操作","ERR.PARAMNULL":"系统发生错误:参数为空","ERR.ERR.PARAMTOOLONG":"参数过长","ERR.ILLEGAL":"系统非法操作"。