日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

邮件发送类_10 分钟实现 Spring Boot 发生邮件功能

發(fā)布時(shí)間:2023/12/10 javascript 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 邮件发送类_10 分钟实现 Spring Boot 发生邮件功能 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • 基礎(chǔ)知識(shí)
    • 什么是SMTP?
    • 什么是IMAP?
    • 什么是POP3?
    • IMAP和POP3協(xié)議有什么不同呢?
  • 進(jìn)階知識(shí)
    • 什么是JavaMailSender和JavaMailSenderImpl?
    • 如何通過JavaMailSenderImpl發(fā)送郵件?
    • 為什么JavaMailSenderImpl 能夠開箱即用 ?
  • 使用教程
    • 一、開啟郵件服務(wù)
    • 二、配置郵件服務(wù)
    • 三、發(fā)送郵件和附件
    • 四、測(cè)試發(fā)送郵件
    • 五、常見失敗編碼

  • 《Java 2019 超神之路》
  • 《Dubbo 實(shí)現(xiàn)原理與源碼解析 —— 精品合集》
  • 《Spring 實(shí)現(xiàn)原理與源碼解析 —— 精品合集》
  • 《MyBatis 實(shí)現(xiàn)原理與源碼解析 —— 精品合集》
  • 《Spring MVC 實(shí)現(xiàn)原理與源碼解析 —— 精品合集》
  • 《Spring Boot 實(shí)現(xiàn)原理與源碼解析 —— 精品合集》
  • 《數(shù)據(jù)庫(kù)實(shí)體設(shè)計(jì)合集》
  • 《Java 面試題 —— 精品合集》
  • 《Java 學(xué)習(xí)指南 —— 精品合集》

基礎(chǔ)知識(shí)

什么是SMTP?

SMTP全稱為Simple Mail Transfer Protocol(簡(jiǎn)單郵件傳輸協(xié)議),它是一組用于從源地址到目的地址傳輸郵件的規(guī)范,通過它來控制郵件的中轉(zhuǎn)方式。SMTP認(rèn)證要求必須提供賬號(hào)和密碼才能登陸服務(wù)器,其設(shè)計(jì)目的在于避免用戶受到垃圾郵件的侵?jǐn)_。

什么是IMAP?

IMAP全稱為Internet Message Access Protocol(互聯(lián)網(wǎng)郵件訪問協(xié)議),IMAP允許從郵件服務(wù)器上獲取郵件的信息、下載郵件等。IMAP與POP類似,都是一種郵件獲取協(xié)議。

什么是POP3?

POP3全稱為Post Office Protocol 3(郵局協(xié)議),POP3支持客戶端遠(yuǎn)程管理服務(wù)器端的郵件。POP3常用于“離線”郵件處理,即允許客戶端下載服務(wù)器郵件,然后服務(wù)器上的郵件將會(huì)被刪除。目前很多POP3的郵件服務(wù)器只提供下載郵件功能,服務(wù)器本身并不刪除郵件,這種屬于改進(jìn)版的POP3協(xié)議。

IMAP和POP3協(xié)議有什么不同呢?

兩者最大的區(qū)別在于,IMAP允許雙向通信,即在客戶端的操作會(huì)反饋到服務(wù)器上,例如在客戶端收取郵件、標(biāo)記已讀等操作,服務(wù)器會(huì)跟著同步這些操作。而對(duì)于POP協(xié)議雖然也允許客戶端下載服務(wù)器郵件,但是在客戶端的操作并不會(huì)同步到服務(wù)器上面的,例如在客戶端收取或標(biāo)記已讀郵件,服務(wù)器不會(huì)同步這些操作。

進(jìn)階知識(shí)

什么是JavaMailSender和JavaMailSenderImpl?

JavaMailSender和JavaMailSenderImpl 是Spring官方提供的集成郵件服務(wù)的接口和實(shí)現(xiàn)類,以簡(jiǎn)單高效的設(shè)計(jì)著稱,目前是Java后端發(fā)送郵件和集成郵件服務(wù)的主流工具。

如何通過JavaMailSenderImpl發(fā)送郵件?

非常簡(jiǎn)單,直接在業(yè)務(wù)類注入JavaMailSenderImpl并調(diào)用send方法發(fā)送郵件。其中簡(jiǎn)單郵件可以通過SimpleMailMessage來發(fā)送郵件,而復(fù)雜的郵件(例如添加附件)可以借助MimeMessageHelper來構(gòu)建MimeMessage發(fā)送郵件。例如:

@Autowiredprivate JavaMailSenderImpl mailSender;public void sendMail() throws MessagingException {//簡(jiǎn)單郵件SimpleMailMessage simpleMailMessage = new SimpleMailMessage();simpleMailMessage.setFrom("admin@163.com");simpleMailMessage.setTo("socks@qq.com");simpleMailMessage.setSubject("Happy New Year");simpleMailMessage.setText("新年快樂!");mailSender.send(simpleMailMessage);//復(fù)雜郵件MimeMessage mimeMessage = mailSender.createMimeMessage();MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage);messageHelper.setFrom("admin@163.com");messageHelper.setTo("socks@qq.com");messageHelper.setSubject("Happy New Year");messageHelper.setText("新年快樂!");messageHelper.addInline("doge.gif", new File("xx/xx/doge.gif"));messageHelper.addAttachment("work.docx", new File("xx/xx/work.docx"));mailSender.send(mimeMessage);}

為什么JavaMailSenderImpl 能夠開箱即用 ?

所謂開箱即用其實(shí)就是基于官方內(nèi)置的自動(dòng)配置,翻看源碼可知曉郵件自動(dòng)配置類(MailSenderPropertiesConfiguration) 為上下文提供了郵件服務(wù)實(shí)例(JavaMailSenderImpl)。具體源碼如下:

@Configuration @ConditionalOnProperty(prefix = "spring.mail", name = "host") class MailSenderPropertiesConfiguration {privatefinal MailProperties properties;MailSenderPropertiesConfiguration(MailProperties properties) {this.properties = properties;}@Bean@ConditionalOnMissingBeanpublic JavaMailSenderImpl mailSender() {JavaMailSenderImpl sender = new JavaMailSenderImpl();applyProperties(sender);return sender;}

其中MailProperties是關(guān)于郵件服務(wù)器的配置信息,具體源碼如下:

@ConfigurationProperties(prefix = "spring.mail") publicclass MailProperties {privatestaticfinal Charset DEFAULT_CHARSET = StandardCharsets.UTF_8;private String host;private Integer port;private String username;private String password;private String protocol = "smtp";private Charset defaultEncoding = DEFAULT_CHARSET;private Map<String, String> properties = new HashMap<>(); }

使用教程

一、開啟郵件服務(wù)

登陸網(wǎng)易郵箱163,在設(shè)置中打開并勾選POP3/SMTP/IMAP服務(wù),然后會(huì)得到一個(gè)授權(quán)碼,這個(gè)郵箱和授權(quán)碼將用作登陸認(rèn)證。

二、配置郵件服務(wù)

首先咱們通過 Spring Initializr 創(chuàng)建工程springboot-send-mail,如圖所示:

然后在pom.xml 引入web、thymeleaf 和spring-boot-starter-mail等相關(guān)依賴。例如:

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency><dependency><groupId>org.webjars</groupId><artifactId>webjars-locator-core</artifactId></dependency><dependency><groupId>org.webjars</groupId><artifactId>jquery</artifactId><version>3.3.1</version></dependency><dependency><groupId>org.webjars</groupId><artifactId>bootstrap</artifactId><version>3.3.7</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>

根據(jù)前面提到的配置項(xiàng)(MailProperties)填寫相關(guān)配置信息,其中spring.mail.username 表示連接郵件服務(wù)器時(shí)認(rèn)證的登陸賬號(hào),可以是普通的手機(jī)號(hào)或者登陸賬號(hào),并非一定是郵箱,為了解決這個(gè)問題,推薦大家在spring.mail. properties.from填寫郵件發(fā)信人即真實(shí)郵箱。

然后在application.yml添加如下配置:

spring:mail:host: smtp.163.com #SMTP服務(wù)器地址username: socks #登陸賬號(hào)password: 123456 #登陸密碼(或授權(quán)碼)properties:from: socks@163.com #郵件發(fā)信人(即真實(shí)郵箱)thymeleaf:cache: falseprefix: classpath:/views/servlet:multipart:max-file-size: 10MB #限制單個(gè)文件大小max-request-size: 50MB #限制請(qǐng)求總量

透過前面的進(jìn)階知識(shí),我們知道在發(fā)送郵件前,需要先構(gòu)建 SimpleMailMessage或 MimeMessage 郵件信息類來填寫郵件標(biāo)題、郵件內(nèi)容等信息,最后提交給JavaMailSenderImpl發(fā)送郵件,這樣看起來沒什么問題,也能實(shí)現(xiàn)既定目標(biāo),但在實(shí)際使用中會(huì)出現(xiàn)大量零散和重復(fù)的代碼,還不便于保存郵件到數(shù)據(jù)庫(kù)。

那么優(yōu)雅的發(fā)送郵件應(yīng)該是如何的呢?應(yīng)該屏蔽掉這些構(gòu)建信息和發(fā)送郵件的細(xì)節(jié),不管是簡(jiǎn)單還是復(fù)雜郵件,都可以通過統(tǒng)一的API來發(fā)送郵件。例如:mailService.send(mailVo) 。

例如通過郵件信息類(MailVo) 來保存發(fā)送郵件時(shí)的郵件主題、郵件內(nèi)容等信息 :

package com.hehe.vo;publicclass MailVo {private String id;//郵件idprivate String from;//郵件發(fā)送人private String to;//郵件接收人(多個(gè)郵箱則用逗號(hào)","隔開)private String subject;//郵件主題private String text;//郵件內(nèi)容private Date sentDate;//發(fā)送時(shí)間private String cc;//抄送(多個(gè)郵箱則用逗號(hào)","隔開)private String bcc;//密送(多個(gè)郵箱則用逗號(hào)","隔開)private String status;//狀態(tài)private String error;//報(bào)錯(cuò)信息@JsonIgnoreprivate MultipartFile[] multipartFiles;//郵件附件//省略GET&SET方法 }

三、發(fā)送郵件和附件

除了發(fā)送郵件之外,還包括檢測(cè)郵件和保存郵件等操作,例如:

  • 檢測(cè)郵件 checkMail(); 首先校驗(yàn)郵件收信人、郵件主題和郵件內(nèi)容這些必填項(xiàng),若為空則拒絕發(fā)送。
  • 發(fā)送郵件 sendMimeMail(); 其次通過MimeMessageHelper來解析MailVo并構(gòu)建MimeMessage傳輸郵件。
  • 保存郵件 sendMimeMail(); 最后將郵件保存到數(shù)據(jù)庫(kù),便于統(tǒng)計(jì)和追查郵件問題。

本案例郵件業(yè)務(wù)類 MailService 的具體源碼如下:

package com.hehe.service;/*** 郵件業(yè)務(wù)類 MailService*/ @Service publicclass MailService {private Logger logger = LoggerFactory.getLogger(getClass());//提供日志類@Autowiredprivate JavaMailSenderImpl mailSender;//注入郵件工具類/*** 發(fā)送郵件*/public MailVo sendMail(MailVo mailVo) {try {checkMail(mailVo); //1.檢測(cè)郵件sendMimeMail(mailVo); //2.發(fā)送郵件return saveMail(mailVo); //3.保存郵件} catch (Exception e) {logger.error("發(fā)送郵件失敗:", e);//打印錯(cuò)誤信息mailVo.setStatus("fail");mailVo.setError(e.getMessage());return mailVo;}}//檢測(cè)郵件信息類private void checkMail(MailVo mailVo) {if (StringUtils.isEmpty(mailVo.getTo())) {thrownew RuntimeException("郵件收信人不能為空");}if (StringUtils.isEmpty(mailVo.getSubject())) {thrownew RuntimeException("郵件主題不能為空");}if (StringUtils.isEmpty(mailVo.getText())) {thrownew RuntimeException("郵件內(nèi)容不能為空");}}//構(gòu)建復(fù)雜郵件信息類private void sendMimeMail(MailVo mailVo) {try {MimeMessageHelper messageHelper = new MimeMessageHelper(mailSender.createMimeMessage(), true);//true表示支持復(fù)雜類型mailVo.setFrom(getMailSendFrom());//郵件發(fā)信人從配置項(xiàng)讀取messageHelper.setFrom(mailVo.getFrom());//郵件發(fā)信人messageHelper.setTo(mailVo.getTo().split(","));//郵件收信人messageHelper.setSubject(mailVo.getSubject());//郵件主題messageHelper.setText(mailVo.getText());//郵件內(nèi)容if (!StringUtils.isEmpty(mailVo.getCc())) {//抄送messageHelper.setCc(mailVo.getCc().split(","));}if (!StringUtils.isEmpty(mailVo.getBcc())) {//密送messageHelper.setCc(mailVo.getBcc().split(","));}if (mailVo.getMultipartFiles() != null) {//添加郵件附件for (MultipartFile multipartFile : mailVo.getMultipartFiles()) {messageHelper.addAttachment(multipartFile.getOriginalFilename(), multipartFile);}}if (StringUtils.isEmpty(mailVo.getSentDate())) {//發(fā)送時(shí)間mailVo.setSentDate(new Date());messageHelper.setSentDate(mailVo.getSentDate());}mailSender.send(messageHelper.getMimeMessage());//正式發(fā)送郵件mailVo.setStatus("ok");logger.info("發(fā)送郵件成功:{}->{}", mailVo.getFrom(), mailVo.getTo());} catch (Exception e) {thrownew RuntimeException(e);//發(fā)送失敗}}//保存郵件private MailVo saveMail(MailVo mailVo) {//將郵件保存到數(shù)據(jù)庫(kù)..return mailVo;}//獲取郵件發(fā)信人public String getMailSendFrom() {return mailSender.getJavaMailProperties().getProperty("from");} }搞定了發(fā)送郵件最核心的業(yè)務(wù)邏輯,接下來咱們寫一個(gè)簡(jiǎn)單頁面用來發(fā)送郵件。

首先寫好跟頁面交互的控制器 MailController,具體源碼如下:

@RestController publicclass MailController {@Autowiredprivate MailService mailService;/*** 發(fā)送郵件的主界面*/@GetMapping("/")public ModelAndView index() {ModelAndView mv = new ModelAndView("mail/sendMail");//打開發(fā)送郵件的頁面mv.addObject("from", mailService.getMailSendFrom());//郵件發(fā)信人return mv;}/*** 發(fā)送郵件*/@PostMapping("/mail/send")public MailVo sendMail(MailVo mailVo, MultipartFile[] files) {mailVo.setMultipartFiles(files);return mailService.sendMail(mailVo);//發(fā)送郵件和附件} }

然后在/resources/views/mail目錄新建sendMail.html,具體源碼如下:

<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"><head><meta charset="UTF-8"/><title>發(fā)送郵件</title><link th:href="@{/webjars/bootstrap/css/bootstrap.min.css}" rel="stylesheet" type="text/css"/><script th:src="@{/webjars/jquery/jquery.min.js}"></script><script th:href="@{/webjars/bootstrap/js/bootstrap.min.js}"></script></head><body> <div class="col-md-6" style="margin:20px;padding:20px;border: #E0E0E0 1px solid;"><marquee behavior="alternate" onfinish="alert(12)" id="mq"onMouseOut="this.start();$('#egg').text('嗯 真聽話!');"onMouseOver="this.stop();$('#egg').text('有本事放開我呀!');"><h5 id="egg">祝大家新年快樂!</h5><img id="doge" src="http://pics.sc.chinaz.com/Files/pic/faces/3709/7.gif" alt=""></marquee><form class="form-horizontal" id="mailForm"><div class="form-group"><label class="col-md-2 control-label">郵件發(fā)信人:</label><div class="col-md-6"><input class="form-control" id="from" name="from" th:value="${from}" readonly="readonly"></div></div><div class="form-group"><label class="col-md-2 control-label">郵件收信人:</label><div class="col-md-6"><input class="form-control" id="to" name="to" title="多個(gè)郵箱使用,隔開"></div></div><div class="form-group"><label class="col-md-2 control-label">郵件主題:</label><div class="col-md-6"><input class="form-control" id="subject" name="subject"></div></div><div class="form-group"><label class="col-md-2 control-label">郵件內(nèi)容:</label><div class="col-md-6"><textarea class="form-control" id="text" name="text" rows="5"></textarea></div></div><div class="form-group"><label class="col-md-2 control-label">郵件附件:</label><div class="col-md-6"><input class="form-control" id="files" name="files" type="file" multiple="multiple"></div></div><div class="form-group"><label class="col-md-2 control-label">郵件操作:</label><div class="col-md-3"><a class="form-control btn btn-primary" onclick="sendMail()">發(fā)送郵件</a></div><div class="col-md-3"><a class="form-control btn btn-default" onclick="clearForm()">清空</a></div></div></form><script th:inline="javascript"> var appCtx = [[${#request.getContextPath()}]];function sendMail() {var formData = new FormData($('#mailForm')[0]);$.ajax({url: appCtx + '/mail/send',type: "POST",data: formData,contentType: false,processData: false,success: function (result) {alert(result.status === 'ok' ? "發(fā)送成功!" : "你被Doge嘲諷了:" + result.error);},error: function () {alert("發(fā)送失敗!");}});}function clearForm() {$('#mailForm')[0].reset();}setInterval(function () {var total = $('#mq').width();var width = $('#doge').width();var left = $('#doge').offset().left;if (left <= width / 2 + 20) {$('#doge').css('transform', 'rotateY(180deg)')}if (left >= total - width / 2 - 40) {$('#doge').css('transform', 'rotateY(-360deg)')}});</script> </div> </body> </html>

四、測(cè)試發(fā)送郵件

如果是初學(xué)者,建議大家先下載源碼,修改配置后運(yùn)行工程,成功后再自己重新寫一遍代碼,這樣有助于加深記憶。

啟動(dòng)工程并訪問:http://localhost:8080 然后可以看到發(fā)送郵件的主界面如下:

然后填寫你的小號(hào)郵箱,點(diǎn)擊發(fā)送郵件,若成功則可以登陸小號(hào)郵箱查看郵件和剛才上傳的附件。

至此發(fā)送郵件代碼全部完成,歡迎大家下載并關(guān)注Github 源碼。

五、常見失敗編碼

如果企業(yè)定制了郵件服務(wù)器,自然會(huì)記錄郵件日志,根據(jù)錯(cuò)誤編碼存儲(chǔ)日志有利于日常維護(hù)。

例如這些由網(wǎng)易郵箱提供的錯(cuò)誤編碼標(biāo)識(shí):

421

  • 421 HL:REP 該IP發(fā)送行為異常,存在接收者大量不存在情況,被臨時(shí)禁止連接。請(qǐng)檢查是否有用戶發(fā)送病毒或者垃圾郵件,并核對(duì)發(fā)送列表有效性;
  • 421 HL:ICC 該IP同時(shí)并發(fā)連接數(shù)過大,超過了網(wǎng)易的限制,被臨時(shí)禁止連接。請(qǐng)檢查是否有用戶發(fā)送病毒或者垃圾郵件,并降低IP并發(fā)連接數(shù)量;
  • 421 HL:IFC 該IP短期內(nèi)發(fā)送了大量信件,超過了網(wǎng)易的限制,被臨時(shí)禁止連接。請(qǐng)檢查是否有用戶發(fā)送病毒或者垃圾郵件,并降低發(fā)送頻率;
  • 421 HL:MEP 該IP發(fā)送行為異常,存在大量偽造發(fā)送域域名行為,被臨時(shí)禁止連接。請(qǐng)檢查是否有用戶發(fā)送病毒或者垃圾郵件,并使用真實(shí)有效的域名發(fā)送;

450

  • 450 MI:CEL 發(fā)送方出現(xiàn)過多的錯(cuò)誤指令。請(qǐng)檢查發(fā)信程序;
  • 450 MI:DMC 當(dāng)前連接發(fā)送的郵件數(shù)量超出限制。請(qǐng)減少每次連接中投遞的郵件數(shù)量;
  • 450 MI:CCL 發(fā)送方發(fā)送超出正常的指令數(shù)量。請(qǐng)檢查發(fā)信程序;
  • 450 RP:DRC 當(dāng)前連接發(fā)送的收件人數(shù)量超出限制。請(qǐng)控制每次連接投遞的郵件數(shù)量;
  • 450 RP:CCL 發(fā)送方發(fā)送超出正常的指令數(shù)量。請(qǐng)檢查發(fā)信程序;
  • 450 DT:RBL 發(fā)信IP位于一個(gè)或多個(gè)RBL里。請(qǐng)參考http://www.rbls.org/關(guān)于RBL的相關(guān)信息;
  • 450 WM:BLI 該IP不在網(wǎng)易允許的發(fā)送地址列表里;
  • 450 WM:BLU 此用戶不在網(wǎng)易允許的發(fā)信用戶列表里;

451

  • 451 DT:SPM ,please try again 郵件正文帶有垃圾郵件特征或發(fā)送環(huán)境缺乏規(guī)范性,被臨時(shí)拒收。請(qǐng)保持郵件隊(duì)列,兩分鐘后重投郵件。需調(diào)整郵件內(nèi)容或優(yōu)化發(fā)送環(huán)境;
  • 451 Requested mail action not taken: too much fail authentication 登錄失敗次數(shù)過多,被臨時(shí)禁止登錄。請(qǐng)檢查密碼與帳號(hào)驗(yàn)證設(shè)置;
  • 451 RP:CEL 發(fā)送方出現(xiàn)過多的錯(cuò)誤指令。請(qǐng)檢查發(fā)信程序;
  • 451 MI:DMC 當(dāng)前連接發(fā)送的郵件數(shù)量超出限制。請(qǐng)控制每次連接中投遞的郵件數(shù)量;
  • 451 MI:SFQ 發(fā)信人在15分鐘內(nèi)的發(fā)信數(shù)量超過限制,請(qǐng)控制發(fā)信頻率;
  • 451 RP:QRC 發(fā)信方短期內(nèi)累計(jì)的收件人數(shù)量超過限制,該發(fā)件人被臨時(shí)禁止發(fā)信。請(qǐng)降低該用戶發(fā)信頻率;
  • 451 Requested action aborted: local error in processing 系統(tǒng)暫時(shí)出現(xiàn)故障,請(qǐng)稍后再次嘗試發(fā)送;

500

  • 500 Error: bad syntaxU 發(fā)送的smtp命令語法有誤;
  • 550 MI:NHD HELO命令不允許為空;
  • 550 MI:IMF 發(fā)信人電子郵件地址不合規(guī)范。請(qǐng)參考http://www.rfc-editor.org/關(guān)于電子郵件規(guī)范的定義;
  • 550 MI:SPF 發(fā)信IP未被發(fā)送域的SPF許可。請(qǐng)參考http://www.openspf.org/關(guān)于SPF規(guī)范的定義;
  • 550 MI:DMA 該郵件未被發(fā)信域的DMARC許可。請(qǐng)參考http://dmarc.org/關(guān)于DMARC規(guī)范的定義;
  • 550 MI:STC 發(fā)件人當(dāng)天的連接數(shù)量超出了限定數(shù)量,當(dāng)天不再接受該發(fā)件人的郵件。請(qǐng)控制連接次數(shù);
  • 550 RP:FRL 網(wǎng)易郵箱不開放匿名轉(zhuǎn)發(fā)(Open relay);
  • 550 RP:RCL 群發(fā)收件人數(shù)量超過了限額,請(qǐng)減少每封郵件的收件人數(shù)量;
  • 550 RP:TRC 發(fā)件人當(dāng)天內(nèi)累計(jì)的收件人數(shù)量超過限制,當(dāng)天不再接受該發(fā)件人的郵件。請(qǐng)降低該用戶發(fā)信頻率;
  • 550 DT:SPM 郵件正文帶有很多垃圾郵件特征或發(fā)送環(huán)境缺乏規(guī)范性。需調(diào)整郵件內(nèi)容或優(yōu)化發(fā)送環(huán)境;
  • 550 Invalid User 請(qǐng)求的用戶不存在;
  • 550 User in blacklist 該用戶不被允許給網(wǎng)易用戶發(fā)信;
  • 550 User suspended 請(qǐng)求的用戶處于禁用或者凍結(jié)狀態(tài);
  • 550 Requested mail action not taken: too much recipient 群發(fā)數(shù)量超過了限額;

552

  • 552 Illegal Attachment 不允許發(fā)送該類型的附件,包括以.uu .pif .scr .mim .hqx .bhx .cmd .vbs .bat .com .vbe .vb .js .wsh等結(jié)尾的附件;
  • 552 Requested mail action aborted: exceeded mailsize limit 發(fā)送的信件大小超過了網(wǎng)易郵箱允許接收的最大限制;

553

  • 553 Requested action not taken: NULL sender is not allowed 不允許發(fā)件人為空,請(qǐng)使用真實(shí)發(fā)件人發(fā)送;
  • 553 Requested action not taken: Local user only SMTP類型的機(jī)器只允許發(fā)信人是本站用戶;
  • 553 Requested action not taken: no smtp MX only MX類型的機(jī)器不允許發(fā)信人是本站用戶;
  • 553 authentication is required SMTP需要身份驗(yàn)證,請(qǐng)檢查客戶端設(shè)置;

554

  • 554 DT:SPM 發(fā)送的郵件內(nèi)容包含了未被許可的信息,或被系統(tǒng)識(shí)別為垃圾郵件。請(qǐng)檢查是否有用戶發(fā)送病毒或者垃圾郵件;
  • 554 DT:SUM 信封發(fā)件人和信頭發(fā)件人不匹配;
  • 554 IP is rejected, smtp auth error limit exceed 該IP驗(yàn)證失敗次數(shù)過多,被臨時(shí)禁止連接。請(qǐng)檢查驗(yàn)證信息設(shè)置;
  • 554 HL:IHU 發(fā)信IP因發(fā)送垃圾郵件或存在異常的連接行為,被暫時(shí)掛起。請(qǐng)檢測(cè)發(fā)信IP在歷史上的發(fā)信情況和發(fā)信程序是否存在異常;
  • 554 HL:IPB 該IP不在網(wǎng)易允許的發(fā)送地址列表里;
  • 554 MI:STC 發(fā)件人當(dāng)天內(nèi)累計(jì)郵件數(shù)量超過限制,當(dāng)天不再接受該發(fā)件人的投信。請(qǐng)降低發(fā)信頻率;
  • 554 MI:SPB 此用戶不在網(wǎng)易允許的發(fā)信用戶列表里;
  • 554 IP in blacklist 該IP不在網(wǎng)易允許的發(fā)送地址列表里。

來源:yizhiwazi

http://jianshu.com/p/5eb000544dd7

  • 《Java 2019 超神之路》
  • 《Dubbo 實(shí)現(xiàn)原理與源碼解析 —— 精品合集》
  • 《Spring 實(shí)現(xiàn)原理與源碼解析 —— 精品合集》
  • 《MyBatis 實(shí)現(xiàn)原理與源碼解析 —— 精品合集》
  • 《Spring MVC 實(shí)現(xiàn)原理與源碼解析 —— 精品合集》
  • 《Spring Boot 實(shí)現(xiàn)原理與源碼解析 —— 精品合集》
  • 《數(shù)據(jù)庫(kù)實(shí)體設(shè)計(jì)合集》
  • 《Java 面試題 —— 精品合集》
  • 《Java 學(xué)習(xí)指南 —— 精品合集》

總結(jié)

以上是生活随笔為你收集整理的邮件发送类_10 分钟实现 Spring Boot 发生邮件功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。