抱歉,遲到了近一年的更新,這一年挺忙的,發生了不少事情,就厚臉皮拖更了,抱歉。
如今狀態回來了,打算分享下近期學到的東西,這一年期間學到的東西可能會隨意更新,其實也就是玩了下C# + unity3D,原本打算作個長期項目,可是申報比賽連預選都沒有過,預選都是墊底的。項目展現視頻見這個。還有就是和學院老師作了智慧博物館的項目,文物的建模與AR以及互動小遊戲都有參與。html
挺長時間了,一直在學Spring、SpringMVC、SpringBoot、Mybatis這些,可是感受學了蠻久但不精通,也就不敢亂分享高深的。如今在作一個系統,須要發送郵件給用戶,網上找了一圈相關博客,參考大佬作了本身的一個記錄。也藉機迴歸一週一更的狀態,不寫點東西對不起你們,嘿嘿。java
在咱們平時,時常須要利用郵箱註冊各類各樣的帳號或者接收一些通知信息。這使得一個功能完善的系統必然會有一個郵件發送功能。下面就是我近期學習的一個郵件發送系統demo。git
Spring項目中,郵件發送使用Spring提供的org.springframework.mail.javamail.JavaMailSender,它提供了一些簡單易用的方法,能夠發送簡單郵件、帶附件的郵件、HTML格式的郵件、以及依靠固定模板的郵件。github
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
請修改username及password爲你的發件郵箱,各平臺發件密碼規格不同,切須要卡通smtp功能,請看各平臺要求。
以前用QQ郵箱要求配置後,測試好屢次都沒法發送,建議使用其餘郵箱,筆者用163郵箱,但各位注意163郵箱默認在郵件後附帶推廣,記得在設置中關閉,以前測試的時候很坑。web
server: port: 8080 spring: mail: host: smtp.163.com username: 123456789@163.com password: 123456789 properties: mail: smtp: auth: true starttls: enable: true required: true
// 簡單郵件 @RequestMapping("sendSimpleEmail") public String sendSimpleEmail() { try { SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(from); message.setTo(toEmail); // 接收地址,可傳入數組進行羣發 message.setSubject("新年好"); // 標題 message.setText("新年快樂,完事大吉\n 新年新氣象"); // 內容 javaMailSender.send(message); return "發送成功"; } catch (Exception e) { e.printStackTrace(); return e.getMessage(); } }
啓動項目,發送 http://localhost:8080/email/sendSimpleEmail 便可發送郵件
結果以下:
spring
請看如下代碼,或GitHub地址clone項目查看,有完整註釋。數組
package com.mxwbq.demo.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.FileSystemResource; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.thymeleaf.TemplateEngine; import org.thymeleaf.context.Context; import javax.mail.internet.MimeMessage; import java.io.File; /** * Created by mxwbq on 2019/3/29. */ @RestController @RequestMapping("/email") public class EmailController { @Autowired private JavaMailSender javaMailSender; @Value("${spring.mail.username}") private String from; // 目標郵箱地址,記得更換 private String toEmail = "123456789@163.com"; @Autowired private TemplateEngine templateEngine; // 簡單郵件 @RequestMapping("sendSimpleEmail") public String sendSimpleEmail() { try { SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(from); message.setTo(toEmail); // 接收地址,可傳入數組進行羣發,下同 message.setSubject("新年好"); // 標題 message.setText("新年快樂,完事大吉\n 新年新氣象"); // 內容 javaMailSender.send(message); return "發送成功"; } catch (Exception e) { e.printStackTrace(); return e.getMessage(); } } // 發送Html格式郵件 @RequestMapping("sendHtmlEmail") public String sendHtmlEmail() { MimeMessage message = null; try { message = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(from); helper.setTo(toEmail); // 接收地址 helper.setSubject("HTML格式的郵件"); // 標題 // 帶HTML格式的內容 StringBuffer sb = new StringBuffer( "<h1><p style='color:#42b983'>使用Spring Boot發送HTML格式郵件</p></h1>" + "<p>這裏是正文:</p>" + "<p>這裏是聽雨軒地址:www.nucode.cn</p>"); helper.setText(sb.toString(), true); // 第二個參數 true 表明規定郵件格式爲HTML javaMailSender.send(message); return "發送成功"; } catch (Exception e) { e.printStackTrace(); return e.getMessage(); } } // 發送郵件攜帶附件 @RequestMapping("sendAttachmentsMail") public String sendAttachmentsMail() { MimeMessage message = null; try { message = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(from); helper.setTo(toEmail); // 接收地址 helper.setSubject("帶附件的郵件"); // 標題 helper.setText("詳情參見附件內容!"); // 內容 // 傳入附件 FileSystemResource file = new FileSystemResource(new File("src\\main\\resources\\static\\file\\SpringBoot_Email文檔.docx")); helper.addAttachment("SpringBoot_Email文檔.docx", file); javaMailSender.send(message); return "發送成功"; } catch (Exception e) { e.printStackTrace(); return e.getMessage(); } } // 發送附帶靜態資源的郵件 @RequestMapping("sendInlineMail") public String sendInlineMail() { MimeMessage message = null; try { message = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(from); helper.setTo(toEmail); // 接收地址 helper.setSubject("帶靜態資源的郵件"); // 標題 helper.setText("<html><body>生日快樂:<img src='cid:img'/></body></html>", true); // 內容 // 傳入附件 FileSystemResource file = new FileSystemResource(new File("src/main/resources/static/img/禮物.jpg")); helper.addInline("img", file); javaMailSender.send(message); return "發送成功"; } catch (Exception e) { e.printStackTrace(); return e.getMessage(); } } // 發送模板郵件 @RequestMapping("sendTemplateEmail") public String sendTemplateEmail(String registerURL) { MimeMessage message = null; try { message = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(from); helper.setTo(toEmail); // 接收地址 helper.setSubject("郵件模板測試"); // 標題 // 處理郵件模板 Context context = new Context(); context.setVariable("registerURL", registerURL); String template = templateEngine.process("register", context); helper.setText(template, true); javaMailSender.send(message); return "發送成功"; } catch (Exception e) { e.printStackTrace(); return e.getMessage(); } } }
https://github.com/mxbq/SpringBoot_Studyapp
本文參考自MrBird大佬的博客:https://mrbird.cc/Spring-Boot-Email.html,有刪改及自我實操問題彙總。ide
新的開始,再也不頹廢。
謝謝你們spring-boot
以上