springboot mail插件/JavaMailSenderImpl 发邮件。163网易企业邮箱调用的坑。
生活随笔
收集整理的這篇文章主要介紹了
springboot mail插件/JavaMailSenderImpl 发邮件。163网易企业邮箱调用的坑。
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
- spring boot 2.0.0.RELEASE
- spring 5.0.4.RELEASE
- 網易企業郵箱 2019年版
- 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.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");//啟用調試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@mydomain.com");helper.setTo("xxx@mydomain.com");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.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加密
發送明文郵件時,需要設置好:
- 協議(默認是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.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");//啟用調試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", "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加密發送)");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.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加密
發送明文郵件時,需要設置好:
- 協議(默認是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.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");//啟用調試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", "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加密發送)");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.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插件發送郵件 示例
@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 發送)");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.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其它
網易企業郵箱從這里 查協議、host、端口
https://qiye.163.com/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":"系統非法操作"。總結
以上是生活随笔為你收集整理的springboot mail插件/JavaMailSenderImpl 发邮件。163网易企业邮箱调用的坑。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ExcelTab让Excel工作簿也玩多
- 下一篇: 查看进程状态信息命令 jps - (Ja