Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 国产精品高清在线观看,国产日韩欧美不卡www,亚洲一区导航

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          (實用干貨) - Spring Boot集成發送郵件Mail完整示例代碼

          作中經常會遇到發郵件的功能,如郵件預警,注冊時發一個郵件確認等,這里給出在Spring Boot中發送郵件的完整集成示例

          郵件發送支持的內容類型如下:

          1. 發送簡單郵件。
          2. 發送html格式的郵件
          3. 發送帶附件簡單郵件
          4. 發送模板郵件

          1. pom.xml

          發送模板郵件需要用到spring-boot-starter-thymeleaf,其他其他郵件內容不需要該依賴

          <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-mail</artifactId>
          </dependency>
          <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-thymeleaf</artifactId>
          </dependency>

          2. application.properties

          spring.mail.host=smtp.163.com
          spring.mail.username=xxx@163.com
          # 注意這里的密碼不是郵箱的登錄密碼
          spring.mail.password=郵箱客戶端授權碼
          spring.mail.properties.mail.smtp.auth=true
          spring.mail.properties.mail.smtp.starttls.enable=true
          spring.mail.properties.mail.smtp.starttls.required=true

          注意:如果密碼不對在發送郵件中會報異常javax.mail.AuthenticationFailedException: 535 Error, 如果設置了也開啟了還是不行再重新設置一下

          3. MailUtil

          import org.slf4j.Logger;
          import org.slf4j.LoggerFactory;
          import org.springframework.beans.factory.annotation.Autowired;
          import org.springframework.mail.MailException;
          import org.springframework.mail.SimpleMailMessage;
          import org.springframework.mail.javamail.JavaMailSender;
          import org.springframework.mail.javamail.MimeMessageHelper;
          import org.springframework.stereotype.Component;
          import org.thymeleaf.TemplateEngine;
          import org.thymeleaf.context.Context;
          import javax.mail.MessagingException;
          import javax.mail.internet.MimeMessage;
          import java.io.File;
          @Component
          public class MailUtil {
           private final Logger logger = LoggerFactory.getLogger(getClass());
           @Autowired
           JavaMailSender mailSender;
           @Autowired
           TemplateEngine templateEngine;
           /**
           * 發送簡單郵件
           * @param from 發送人
           * @param to 接收人
           * @param carbonCopy 抄送人
           * @param subject 主題
           * @param content 內容
           */
           public void sendSimpleEmail(String from, String[] to, String[] carbonCopy, String subject, String content) {
           long startTimestamp = System.currentTimeMillis();
           logger.info("Start send mail ... ");
           try {
           SimpleMailMessage message = new SimpleMailMessage();
           message.setFrom(from);
           message.setTo(to);
           message.setCc(carbonCopy);
           message.setSubject(subject);
           message.setText(content);
           mailSender.send(message);
           logger.info("Send mail success, cost {} million seconds", System.currentTimeMillis() - startTimestamp);
           } catch (MailException e) {
           logger.error("Send mail failed, error message is : {} \n", e.getMessage());
           }
           }
           /**
           * 發送html郵件
           */
           public void sendHtmlEmail(String deliver, String[] receiver, String[] carbonCopy, String subject, String content, boolean isHtml) {
           long startTimestamp = System.currentTimeMillis();
           logger.info("Start send email ...");
           try {
           MimeMessage message = mailSender.createMimeMessage();
           MimeMessageHelper messageHelper = new MimeMessageHelper(message);
           messageHelper.setFrom(deliver);
           messageHelper.setTo(receiver);
           messageHelper.setCc(carbonCopy);
           messageHelper.setSubject(subject);
           messageHelper.setText(content, isHtml);
           mailSender.send(message);
           logger.info("Send email success, cost {} million seconds", System.currentTimeMillis() - startTimestamp);
           } catch (MessagingException e) {
           logger.error("Send email failed, error message is {} \n", e.getMessage());
           e.printStackTrace();
           }
           }
           /**
           * 發送帶附件的郵件
           */
           public void sendAttachmentFileEmail(String deliver, String[] receiver, String[] carbonCopy, String subject, String content, boolean isHtml, String fileName, File file) {
           long startTimestamp = System.currentTimeMillis();
           logger.info("Start send mail ...");
           try {
           MimeMessage message = mailSender.createMimeMessage();
           MimeMessageHelper messageHelper = new MimeMessageHelper(message, true);
           messageHelper.setFrom(deliver);
           messageHelper.setTo(receiver);
           messageHelper.setCc(carbonCopy);
           messageHelper.setSubject(subject);
           messageHelper.setText(content, isHtml);
           messageHelper.addAttachment(fileName, file);
           mailSender.send(message);
           logger.info("Send mail success, cost {} million seconds", System.currentTimeMillis() - startTimestamp);
           } catch (MessagingException e) {
           logger.error("Send mail failed, error message is {}\n", e.getMessage());
           e.printStackTrace();
           }
           }
           /**
           * 發送模板郵件
           */
           public void sendTemplateEmail(String deliver, String[] receiver, String[] carbonCopy, String subject, String template, Context context) {
           long startTimestamp = System.currentTimeMillis();
           logger.info("Start send mail ...");
           try {
           MimeMessage message = mailSender.createMimeMessage();
           MimeMessageHelper messageHelper = new MimeMessageHelper(message);
           String content = templateEngine.process(template, context);
           messageHelper.setFrom(deliver);
           messageHelper.setTo(receiver);
           messageHelper.setCc(carbonCopy);
           messageHelper.setSubject(subject);
           messageHelper.setText(content, true);
           mailSender.send(message);
           logger.info("Send mail success, cost {} million seconds", System.currentTimeMillis() - startTimestamp);
           } catch (MessagingException e) {
           logger.error("Send mail failed, error message is {} \n", e.getMessage());
           e.printStackTrace();
           }
           }
          }

          src/main/resource/templates/mailTemplate.html

          <!DOCTYPE html>
          <html xmlns:th="http://www.w3.org/1999/xhtml">
          <head>
           <meta charset="UTF-8">
           <title>Title</title>
          </head>
          <body>
          [[${content}]] <br/>
          [[${content}]] <br/>
          [[${content}]] <br/>
          </body>
          </html>

          4. Test

          @RunWith(SpringRunner.class)
          @SpringBootTest
          public class MailApplicationTests {
           @Autowired
           private MailUtil mailUtil;
           @Test
           public void sendSimpleEmail() {
           String deliver = "xxx@163.com";
           String[] receiver = {"xxx@gmail.com"};
           String[] carbonCopy = {"xxx@qq.com"};
           String subject = "This is a simple email";
           String content = "This is a simple content";
           try {
           mailUtil.sendSimpleEmail(deliver, receiver, carbonCopy, subject, content);
           } catch (Exception e) {
           assertFalse("Send simple email failed", true);
           e.printStackTrace();
           }
           }
           @Test
           public void sendHtmlMail(){
           String deliver = "xxx@163.com";
           String[] receiver = {"xxx@gmail.com"};
           String[] carbonCopy = {"xxx@qq.com"};
           String subject = "退信代碼說明";
           String content = "<h1>org.springframework.mail.MailSendException: Failed messages: " +
           "com.sun.mail.smtp.SMTPSendFailedException: 554 DT:SPM 163 smtp9,DcCowAAXf2r4c8da2cPWBQ--." +
           "33626S3 1523020853,please see " +
           "http://mail.163.com/help/help_spam_16.htm?ip=43.243.148.212&hostid=smtp9&time=1523020853</h1>";
           boolean isHtml = true;
           mailUtil.sendHtmlEmail(deliver, receiver, carbonCopy, subject, content, isHtml);
           }
           @Test
           public void sendAttachmentFileEmail() {
           String FILE_PATH = "/Users/mengday/Desktop/02.png";
           String deliver = "xxx@163.com";
           String[] receiver = {"xxx@gmail.com"};
           String[] carbonCopy = {"xxx@qq.com"};
           String subject = "退信代碼說明";
           String content = "<h1>org.springframework.mail.MailSendException: Failed messages: " +
           "com.sun.mail.smtp.SMTPSendFailedException: 554 DT:SPM 163 smtp9,DcCowAAXf2r4c8da2cPWBQ--." +
           "33626S3 1523020853,please see " +
           "http://mail.163.com/help/help_spam_16.htm?ip=43.243.148.212&hostid=smtp9&time=1523020853</h1>";
           boolean isHtml = true;
           File file = new File(FILE_PATH);
           String fileName = FILE_PATH.substring(FILE_PATH.lastIndexOf(File.separator));
           try {
           mailUtil.sendAttachmentFileEmail(deliver, receiver, carbonCopy, subject, content, isHtml, fileName, file);
           } catch (Exception e) {
           e.printStackTrace();
           assertFalse("Send attachment file email failed", true);
           }
           }
           @Test
           public void sendTemplateEmail() {
           String deliver = "xxx@163.com";
           String[] receiver = {"xxx@gmail.com"};
           String[] carbonCopy = {"xxx@qq.com"};
           String subject = "DT:SPM 發送的郵件內容包含了未被許可的信息,或被系統識別為垃圾郵件。請檢查是否有用戶發送病毒或者垃圾郵件";
           String template = "mailTemplate";
           String content = "554 DT:SPM 發送的郵件內容包含了未被許可的信息,或被系統識別為垃圾郵件。請檢查是否有用戶發送病毒或者垃圾郵件";
           Context context = new Context();
           context.setVariable("content", content);
           try {
           mailUtil.sendTemplateEmail(deliver, receiver, carbonCopy, subject, template, context);
           } catch (Exception e) {
           e.printStackTrace();
           assertFalse("Send template email failed", true);
           }
           }
          }

          注意:如果標題和內容過于簡單,或者包含test之類的內容,163會認為這是垃圾郵件,會造成發送失敗,報以下異常,解決辦法就是將發送的表體和內容寫的比較真實點

          Python中,可以使用smtplib庫和email庫來發送郵件。以下是一個基本的示例,展示如何使用這些庫來發送一封簡單的郵件。

          步驟 1: 安裝必要的庫

          smtplib和email是Python的標準庫,通常不需要單獨安裝。但是,如果你使用的是一個精簡的Python環境,可能需要確保這些庫是可用的。

          步驟 2: 編寫郵件發送腳本

          Python
          1import smtplib
          2from email.mime.text import MIMEText
          3from email.header import Header
          4
          5# 發件人郵箱
          6sender = 'your_email@example.com'
          7# 收件人郵箱
          8receiver = 'receiver_email@example.com'
          9# 發送郵件的SMTP服務器
          10smtp_server = 'smtp.example.com'
          11# 發件人的郵箱密碼或授權碼
          12password = 'your_password'
          13
          14# 郵件內容
          15mail_content = '這是郵件的正文內容。'
          16# 郵件主題
          17mail_subject = '郵件的主題'
          18
          19# 創建一個MIMEText對象
          20message = MIMEText(mail_content, 'plain', 'utf-8')
          21message['From'] = Header("發件人名稱", 'utf-8')
          22message['To'] = Header("收件人名稱", 'utf-8')
          23message['Subject'] = Header(mail_subject, 'utf-8')
          24
          25try:
          26    # 連接SMTP服務器
          27    smtpObj = smtplib.SMTP(smtp_server, 587)
          28    # 開啟TLS加密(某些服務器需要)
          29    smtpObj.starttls()
          30    # 登錄SMTP服務器
          31    smtpObj.login(sender, password)
          32    # 發送郵件
          33    smtpObj.sendmail(sender, receiver, message.as_string())
          34    print("郵件發送成功!")
          35except smtplib.SMTPException as e:
          36    print("Error: 無法發送郵件,錯誤信息:", e)
          37finally:
          38    # 關閉連接
          39    smtpObj.quit()

          注意事項:

          1. SMTP服務器和端口:不同的郵件服務商有不同的SMTP服務器地址和端口號。例如,Gmail的SMTP服務器是smtp.gmail.com,端口號是587。
          2. 授權碼:對于某些郵件服務商,如Gmail,你需要使用應用密碼(也叫授權碼)而不是你的登錄密碼來發送郵件,因為直接使用登錄密碼可能會被阻止。
          3. TLS/SSL加密:大多數現代郵件服務都要求使用TLS或SSL加密來保證通信安全。在連接SMTP服務器時,確保使用starttls()或SMTP_SSL類來啟用加密。
          4. 郵件格式:上面的例子使用的是純文本郵件。如果你想發送HTML格式的郵件或包含附件的郵件,可以使用email.mime.multipart.MIMEMultipart和相關的子類來構建郵件。

          通過調整上述代碼中的SMTP服務器、端口、用戶名、密碼以及郵件內容和接收者,你可以根據自己的需求發送郵件。

          為數據分析師,經常性的會需要到服務器上做一些取數/數據清洗的工作,但往往這些工作會特別耗時,如果我們可以在我們的腳本中加入郵件提醒的功能,提醒我們任務完成,那效率會提升很多

          一般發郵件方法

          我以前在通過Python實現自動化郵件功能的時候是這樣的:

          import smtplib
          from email.mime.text import MIMEText
          from email.header import Header
          # 發送郵箱服務器
          smtpserver = 'smtp.sina.com'
          # 發送郵箱用戶/密碼
          user = 'username@sina.com'
          password = '123456'
          # 發送郵箱
          sender = 'username@sina.com'
          # 接收郵箱
          receiver = 'receive@126.com'
          # 發送郵件主題
          subject = 'Python email test'
          # 編寫HTML類型的郵件正文
          msg = MIMEText('<html><h1>你好!</h1></html>','html','utf-8')
          msg['Subject'] = Header(subject, 'utf-8')
          # 連接發送郵件
          smtp = smtplib.SMTP()
          smtp.connect(smtpserver)
          smtp.login(user, password)
          smtp.sendmail(sender, receiver, msg.as_string())
          smtp.quit()
          

          其實,這段代碼也并不復雜,只要你理解使用過郵箱發送郵件,那么以下問題是你必須要考慮的:

          • 你登錄的郵箱帳號/密碼
          • 對方的郵箱帳號
          • 郵件內容(標題,正文,附件)
          • 郵箱服務器(SMTP.xxx.com/pop3.xxx.com)

          yagmail 實現發郵件

          • yagmail 可以更簡單的來實現自動發郵件功能。
          github項目地址: https://github.com/kootenpv/yagmail
          
          • 安裝
          pip install yagmail 
          
          • 簡單例子
          import yagmail
          #鏈接郵箱服務器
          yag = yagmail.SMTP( user="user@126.com", password="1234", host='smtp.126.com')
          # 郵箱正文
          contents = ['This is the body, and here is just text http://somedomain/image.png',
           'You can find an audio file attached.', '/local/path/song.mp3']
          # 發送郵件
          yag.send('taaa@126.com', 'subject', contents)
          

          總共四行代碼搞定,是不是比上面的例子簡單太多了。

          • 給多個用戶發送郵件,只需要將接收郵箱 變成一個list即可。
          yag.send(['aa@126.com','bb@qq.com','cc@gmail.com'], 'subject', contents)
          
          • 發送帶附件的郵件,只需要添加要發送的附件列表即可

          主站蜘蛛池模板: 日本在线视频一区二区三区| 成人午夜视频精品一区| 中文字幕一区二区在线播放| 亚洲乱码一区二区三区在线观看 | 秋霞鲁丝片一区二区三区| 无码人妻精品一区二区三区久久久| 奇米精品视频一区二区三区| 文中字幕一区二区三区视频播放 | 日韩精品一区在线| 日本人真淫视频一区二区三区| 无码欧精品亚洲日韩一区夜夜嗨 | 亚洲av无码一区二区三区天堂| 久久一区二区精品综合| 中文精品一区二区三区四区| 国产在线观看一区二区三区| 亚洲一区爱区精品无码| 无码精品人妻一区| 一区二区三区视频免费观看| 国产一区二区三区电影| 国产人妖视频一区在线观看| 国产精品亚洲一区二区三区在线观看 | 一区二区在线免费观看| 国产精品无码AV一区二区三区| 日韩内射美女人妻一区二区三区| 中文字幕精品无码一区二区 | 果冻传媒董小宛一区二区| 国产在线观看一区精品| 中文字幕精品亚洲无线码一区| 免费观看一区二区三区| 亚洲国产美国国产综合一区二区 | 国产精品一区二区AV麻豆| 波多野结衣一区在线| 国产AⅤ精品一区二区三区久久| 日韩精品区一区二区三VR| 久久91精品国产一区二区| 国产福利一区二区三区| 国产一区二区高清在线播放| 果冻传媒董小宛一区二区| 人妻体体内射精一区二区 | 亚洲日韩激情无码一区| 99久久人妻精品免费一区|