springboot mail插件/JavaMailSenderImpl 发邮件。163网易企业邮箱调用的坑。
前言
- spring boot 2.0.0.RELEASE
- spring 5.0.4.RELEASE
- 網(wǎng)易企業(yè)郵箱 2019年版
- jdk 1.8
發(fā)郵件的說明
按照加密方式方式,可以分為:
- 明文
- TLS加密
- SSL加密
發(fā)送明文
發(fā)送明文郵件時,需要設(shè)置好:
- 協(xié)議(默認(rèn)是smtp,可不用設(shè)置)
- host
- 端口(默認(rèn)是25)
- 用戶名
- 密碼
- 開啟身份驗證(mail.smtp.auth=true)
網(wǎng)易企業(yè)郵箱 不再支持明文郵件了。使用此種方式調(diào)用時,會獲得錯誤:535 5.7.0 ERR.LOGIN.NONSSL
JavaMailSenderImpl發(fā)送郵件,示例代碼如下:
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.qiye.163.com");mailSender.setPort(25);mailSender.setUsername("xxx@mydomain.com");mailSender.setPassword("123456");Properties javaMailProperties = mailSender.getJavaMailProperties();javaMailProperties.setProperty("mail.smtp.auth", "true"); javaMailProperties.setProperty("mail.debug", "true");//啟用調(diào)試javaMailProperties.setProperty("mail.smtp.timeout", "3000"); //設(shè)置超時時間3秒mailSender.setJavaMailProperties(javaMailProperties);try{MimeMessage mailMessage = mailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(mailMessage, true, "UTF-8");helper.setFrom("xxx@mydomain.com");helper.setTo("xxx@mydomain.com");helper.setSubject("測試郵件:您有一個新的未處理消息(使用明文發(fā)送)");helper.setText(String.format("hi,%s: <br/><br/><br/>很高興認(rèn)識你!", "張三"), true);mailSender.send(mailMessage);}catch (Exception e) {log.error("發(fā)送郵件失敗", e);}}}springboot mail插件發(fā)送郵件,配置如下(示例代碼在后面):
spring.mail.host=smtphz.qiye.163.com spring.mail.username=xxx@mydomain.com spring.mail.password=123456 spring.mail.port=25 spring.mail.protocol=smtp spring.mail.default-encoding=UTF-8 spring.mail.properties.mail.smtp.timeout=3000 spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.debug=true spring.mail.properties.mail.smtp.ssl.enable=false spring.mail.properties.mail.imap.ssl.socketFactory.fallback=false spring.mail.properties.mail.smtp.ssl.socketFactory.class=javax.net.ssl.SSLSocketFactory spring.mail.properties.mail.smtp.starttls.enable=false spring.mail.properties.mail.smtp.starttls.required=falseTLS加密
發(fā)送明文郵件時,需要設(shè)置好:
- 協(xié)議(默認(rèn)是smtp,可不用設(shè)置)
- host
- 端口(默認(rèn)情況下,TLS加密使用25端口)
- 用戶名
- 密碼
- 開啟身份驗證(mail.smtp.auth=true)
- 支持TLS加密(mail.smtp.starttls.required = true)
TLS加密使用25端口 ! TLS加密使用25端口 ! TLS加密使用25端口!
JavaMailSenderImpl發(fā)送郵件,示例代碼如下:
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.qiye.163.com");mailSender.setPort(25);mailSender.setUsername("xxx@mydomain.com");mailSender.setPassword("123456");Properties javaMailProperties = mailSender.getJavaMailProperties();javaMailProperties.setProperty("mail.smtp.auth", "true"); javaMailProperties.setProperty("mail.debug", "true");//啟用調(diào)試javaMailProperties.setProperty("mail.smtp.timeout", "3000"); //設(shè)置超時時間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", "javax.net.ssl.SSLSocketFactory");mailSender.setJavaMailProperties(javaMailProperties);try{MimeMessage mailMessage = mailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(mailMessage, true, "UTF-8");helper.setFrom("xxx@mydomain.com");helper.setTo("xxx@mydomain.com");helper.setSubject("測試郵件:您有一個新的未處理消息(使用TLS加密發(fā)送)");helper.setText(String.format("hi,%s: <br/><br/><br/>很高興認(rèn)識你!", "張三"), true);mailSender.send(mailMessage);}catch (Exception e) {log.error("發(fā)送郵件失敗", e);}}}springboot mail插件發(fā)送郵件,配置如下(示例代碼在后面):
spring.mail.host=smtphz.qiye.163.com spring.mail.username=xxx@mydomain.com spring.mail.password=123456 spring.mail.port=25 spring.mail.protocol=smtp spring.mail.default-encoding=UTF-8 spring.mail.properties.mail.smtp.timeout=3000 spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.debug=true spring.mail.properties.mail.smtp.ssl.enable=false spring.mail.properties.mail.imap.ssl.socketFactory.fallback=false spring.mail.properties.mail.smtp.ssl.socketFactory.class=javax.net.ssl.SSLSocketFactory spring.mail.properties.mail.smtp.starttls.enable=false spring.mail.properties.mail.smtp.starttls.required=trueSSL加密
發(fā)送明文郵件時,需要設(shè)置好:
- 協(xié)議(默認(rèn)是smtp,可不用設(shè)置)
- host
- 端口(默認(rèn)情況下,SSL加密使用456端口)
- 用戶名
- 密碼
- 開啟身份驗證(mail.smtp.auth=true)
- 支持SSL加密(mail.smtp.ssl.enable = true)
網(wǎng)易企業(yè)郵箱 SSL 端口994
JavaMailSenderImpl發(fā)送郵件,示例代碼如下:
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.qiye.163.com");mailSender.setPort(994);mailSender.setUsername("xxx@mydomain.com");mailSender.setPassword("123456");Properties javaMailProperties = mailSender.getJavaMailProperties();javaMailProperties.setProperty("mail.smtp.auth", "true"); javaMailProperties.setProperty("mail.debug", "true");//啟用調(diào)試javaMailProperties.setProperty("mail.smtp.timeout", "3000"); //設(shè)置超時時間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", "javax.net.ssl.SSLSocketFactory");mailSender.setJavaMailProperties(javaMailProperties);try{MimeMessage mailMessage = mailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(mailMessage, true, "UTF-8");helper.setFrom("xxx@mydomain.com");helper.setTo("xxx@mydomain.com");helper.setSubject("測試郵件:您有一個新的未處理消息(使用SSL加密發(fā)送)");helper.setText(String.format("hi,%s: <br/><br/><br/>很高興認(rèn)識你!", "張三"), true);mailSender.send(mailMessage);}catch (Exception e) {log.error("發(fā)送郵件失敗", e);}}}springboot mail插件發(fā)送郵件,SSL加密,配置如下(示例代碼在后面):
spring.mail.host=smtphz.qiye.163.com spring.mail.username=xxx@mydomain.com spring.mail.password=123456 spring.mail.port=25 spring.mail.protocol=smtp spring.mail.default-encoding=UTF-8 spring.mail.properties.mail.smtp.timeout=3000 spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.debug=true spring.mail.properties.mail.smtp.ssl.enable=true spring.mail.properties.mail.imap.ssl.socketFactory.fallback=false spring.mail.properties.mail.smtp.ssl.socketFactory.class=javax.net.ssl.SSLSocketFactory spring.mail.properties.mail.smtp.starttls.enable=false spring.mail.properties.mail.smtp.starttls.required=falsespringboot mail插件發(fā)送郵件 示例
@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@mydomain.com");helper.setTo("xxx@mydomain.com");helper.setSubject("測試郵件:您有一個新的未處理消息(使用 spring boot 發(fā)送)");helper.setText(String.format("hi,%s: <br/><br/><br/>很高興認(rèn)識你!", "張三"), true);mailSender.send(mailMessage);}catch (Exception e) {log.error("發(fā)送郵件失敗", e);}}}application-TestSendMail3.properties
spring.mail.host=smtphz.qiye.163.com spring.mail.username=xxx@mydomain.com spring.mail.password=123456 spring.mail.port=25 spring.mail.protocol=smtp spring.mail.default-encoding=UTF-8 spring.mail.properties.mail.smtp.timeout=3000 spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.debug=true spring.mail.properties.mail.smtp.ssl.enable=false spring.mail.properties.mail.imap.ssl.socketFactory.fallback=false spring.mail.properties.mail.smtp.ssl.socketFactory.class=javax.net.ssl.SSLSocketFactory spring.mail.properties.mail.smtp.starttls.enable=false spring.mail.properties.mail.smtp.starttls.required=true其它
網(wǎng)易企業(yè)郵箱從這里 查協(xié)議、host、端口
https://qiye.163.com/help/client.html?device=pc
網(wǎng)易企業(yè)郵箱錯誤碼: 420 ERR.LOGIN.DOMAINNOTEXIST 錯誤
查到的host不對。按照前面的說明查host。
網(wǎng)易企業(yè)郵其它錯誤碼
"ERR.LOGIN.USERORPASSNULL":"參數(shù)錯誤:用戶名或者密碼為空", "ERR.LOGIN.DOMAINNULL":"參數(shù)錯誤:未指定的域郵箱參數(shù)", "ERR.LOGIN.PASSERR":"用戶名和密碼不匹配", "ERR.LOGIN.ILLEGALACCOUNT":"該帳號屬于群發(fā)名單或者別名,不允許登錄", "ERR.LOGIN.USERNOTEXIST":"該帳號不存在,請你確認(rèn)域名和帳號", "ERR.LOGIN.SUPERADMINDOMAINERR":"該超級管理員并未申請任何域名郵箱", "ERR.LOGIN.SYSTEMBUSY":"登錄系統(tǒng)繁忙,請你稍后再試", "ERR.LOGIN.IPDENY":"登錄失敗,你的IP在黑名單中,請你聯(lián)系客服", "ERR.LOGIN.USRSTATUS1":"該帳號已被禁用,請聯(lián)系管理員", "ERR.LOGIN.USRSTATUS2":"帳號已過期,請聯(lián)系管理員", "ERR.LOGIN.USRSTATUS5":"該帳號已被管理員刪除,請聯(lián)系管理員", "SUC.LOGIN.USRUNLOCK":"該帳號已解除凍結(jié)狀態(tài),請你再次輸入用戶和密碼繼續(xù)", "ERR.LOGIN.DOMAINEXPED":"該域名郵箱已經(jīng)過期了", "ERR.LOGIN.DOMAINNOTREGISTER":"該域名尚未通過,請以超級管理員登錄", "ERR.LOGIN.DOMAINSTATUS1":"該域名郵箱已被禁用,請你聯(lián)系客服", "ERR.SESSIONNULL":"會話已經(jīng)失效,請你重新登錄操作", "ERR.SYSTEM":"系統(tǒng)繁忙,請你稍后再試", "ERR.ADMINREQUIRE":"非法權(quán)限,該帳號無法執(zhí)行這個操作", "ERR.PARAMNULL":"系統(tǒng)發(fā)生錯誤:參數(shù)為空", "ERR.ERR.PARAMTOOLONG":"參數(shù)過長", "ERR.ILLEGAL":"系統(tǒng)非法操作"。總結(jié)
以上是生活随笔為你收集整理的springboot mail插件/JavaMailSenderImpl 发邮件。163网易企业邮箱调用的坑。的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ExcelTab让Excel工作簿也玩多
- 下一篇: excel方差怎么算?用excel算方差