要在網(wǎng)絡(luò)上實(shí)現(xiàn)郵件功能,必須要有專門的郵件服務(wù)器。這些郵件服務(wù)器類似于現(xiàn)實(shí)生活中的郵局,它主要負(fù)責(zé)接收用戶投遞過來的郵件,并把郵件投遞到郵件接收者的電子郵箱中。
SMTP服務(wù)器地址:
一般是 smtp.xxx.com,比如163郵箱是smtp.163.com,qq郵箱是smtp.qq.com。
SMTP協(xié)議:
通常把處理用戶smtp請(qǐng)求(郵件發(fā)送請(qǐng)求)的服務(wù)器稱之為SMTP服務(wù)器(郵件發(fā)送服務(wù)器)。
POP3協(xié)議:
通常把處理用戶pop3請(qǐng)求(郵件接收請(qǐng)求)的服務(wù)器稱之為POP3服務(wù)器(郵件接收服務(wù)器)。
163郵箱在:設(shè)置—POP3中,打開相應(yīng)的配置屬性;
QQ郵箱:設(shè)置—賬戶安全中,打開相應(yīng)的配置信息;
<!--郵件服務(wù)--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.3</version> </dependency>
#郵箱的賬號(hào)(163郵箱)spring.mail.host= smtp.163.comspring.mail.username=comlydms@163.comspring.mail.password=158143484fsspring.mail.properties.mail.smtp.auth=truespring.mail.properties.mail.starttls.enable=truespring.mail.properties.mail.starttls.required=true
/** * 測(cè)試普通郵件調(diào)用 */ @RequestMapping(value = "/simpleEmail", method = {RequestMethod.POST}) public ApiResult sendSimpleEmail() { mailService.sendSimpleMail("395096666@qq.com", "這是一個(gè)測(cè)試郵件", "這是一個(gè)測(cè)試郵件"); return ApiResult.succ("調(diào)用成功"); }
private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private JavaMailSender sender; @Value("${spring.mail.username}") private String fromMail; /** * 發(fā)送普通郵件 * * @param toMail 收件方 * @param subject 標(biāo)題 * @param content 郵件內(nèi)容 */ public void sendSimpleMail(String toMail, String subject, String content) { SimpleMailMessage simpleMailMessage = new SimpleMailMessage(); simpleMailMessage.setFrom(fromMail); simpleMailMessage.setTo(toMail); simpleMailMessage.setSubject(subject); simpleMailMessage.setText(content); try { sender.send(simpleMailMessage); logger.info("發(fā)送給:{}簡(jiǎn)單郵件已經(jīng)發(fā)送。 subject:{}", toMail, subject); } catch (Exception e) { logger.info("發(fā)送給:{}send mail error subject:{}", toMail, subject); e.printStackTrace(); } }
/** * 測(cè)試Html格式調(diào)用 */ @RequestMapping(value = "/htmlEmail", method = {RequestMethod.POST}) public ApiResult sendHtmlEmail() {// 1、拼接模擬的數(shù)據(jù) English english = new English(); english.setEnglish("my"); english.setChinese("我的"); english.setCodechinese("自己的東西"); ArrayList<English> en = new ArrayList<>(); en.add(english); en.add(english);// 2.1、寫html開始內(nèi)容 String start = "<!DOCTYPE html><html><head><meta charset=\"utf-8\"><title></title></head><body><font color=\"red\">定時(shí)發(fā)送</font><table border=\"1\"><tr><th>英文</th><th>標(biāo)準(zhǔn)注解</th><th>代碼中注解</th></tr>";// 2-2、表html中間內(nèi)容 String prime = ""; for (int i = 0; i < en.size(); i++) { English english1 = en.get(i); String center = "<tr><td>English</td><td>Chinese</td><td>CodeChinese</td></tr>"; String one = center.replaceFirst("English", english1.getEnglish()); String two = one.replaceFirst("Chinese", english1.getChinese()); String result = two.replaceFirst("CodeChinese", english1.getCodechinese()); prime = prime + result; }// 2-3、寫html結(jié)尾內(nèi)容 String end = "</table></body></html>";// 3、拼接html String html = start + prime + end;// 4、發(fā)送郵件 mailService.sendHtmlMail("395096666@qq.com", "定時(shí)郵件發(fā)送", html); return ApiResult.succ("調(diào)用成功"); }
private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private JavaMailSender sender; @Value("${spring.mail.username}") private String fromMail; /** * 發(fā)送帶Html格式郵件 * * @param toMail 收件方 * @param subject 標(biāo)題 * @param content 郵件內(nèi)容 */ public void sendHtmlMail(String toMail, String subject, String content) {// 1、封裝數(shù)據(jù) MimeMessage mimeMessage = sender.createMimeMessage(); try { MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true); mimeMessageHelper.setTo(toMail); mimeMessageHelper.setFrom(fromMail); mimeMessageHelper.setText(content, true); mimeMessageHelper.setSubject(subject);// 2、發(fā)送郵件 sender.send(mimeMessage); logger.info("發(fā)送給:{}html郵件已經(jīng)發(fā)送。 subject:{}", toMail, subject); } catch (Exception e) { logger.info("發(fā)送給:{}html send mail error subject:{}", toMail, subject); e.printStackTrace(); } }
/** * 測(cè)試Html帶圖片 */ @RequestMapping(value = "/htmlPotoEmail", method = {RequestMethod.POST}) public ApiResult sendHtmlPoto() {// 1、創(chuàng)建html格式的數(shù)據(jù) String html = "<!DOCTYPE html>\r\n" + "<html>\r\n" + "<head>\r\n" + "<meta charset=\"UTF-8\">\r\n" + "<title>Insert title here</title>" + "\r\n" + "</head>\r\n" + "<body>\r\n" + "<img src=\"cid:image1\"/> " + "<img src=\"cid:image2\"/> " + " <font color=\"red\">發(fā)送html</font>\r\n" + "</body>\r\n" + "</html>";// 2、封裝html中的圖片數(shù)據(jù) List<InlineResource> list = new ArrayList<>();// 2-1獲取圖片的地址 String path = WordSmsController.class.getClassLoader().getResource("image.jpg").getPath();// 2-2、將圖片的地址封裝到實(shí)體類中 InlineResource resource = new InlineResource("image1", path); InlineResource resource2 = new InlineResource("image2", path); list.add(resource2); list.add(resource);// 3、發(fā)送郵件 mailService.sendHtmlPhotoMail("395096666@qq.com", "這是一個(gè)測(cè)試郵件", html, list); return ApiResult.succ("調(diào)用成功"); }
private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private JavaMailSender sender; @Value("${spring.mail.username}") private String fromMail; /** * 發(fā)送靜態(tài)資源(一般是圖片)的郵件 * * @param * @param subject * @param content 郵件內(nèi)容,需要包括一個(gè)靜態(tài)資源的id,比如:<img src=\"cid:image\" > * @param */ public void sendHtmlPhotoMail(String to, String subject, String content, List<InlineResource> resourceist) {// 1、編寫發(fā)送的數(shù)據(jù) MimeMessage me
聯(lián)系客服