使用java實(shí)現(xiàn)BBS論壇發(fā)送郵件過程詳解
SpringBoot實(shí)踐,開發(fā)社區(qū)登錄模塊今日份開啟 發(fā)送郵件三個步驟:
1、郵箱設(shè)置
首先需要注冊一個新浪郵箱 18215626061@sina.cn
然后進(jìn)入設(shè)置開啟POP3/SMTP服務(wù),務(wù)必記住授權(quán)碼
左下角點(diǎn)開啟
2、Spring Email
導(dǎo)入jar包
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> <version>2.4.4</version> </dependency>
然后在IDEA中的application中配置郵箱的相關(guān)設(shè)置
可以創(chuàng)建.properties也可以創(chuàng)建.yaml。分別如下:
此處password為授權(quán)碼 有的郵箱的密碼需要隱匿的設(shè)置為授權(quán)碼,否則會錯誤,這里不用授權(quán)碼的話可以換回密碼。
這里我們創(chuàng)建一個util包,然后創(chuàng)建MailClient類,這里因?yàn)榘l(fā)郵件的時候是要委托新浪郵箱,所以這里是一個Client類。來進(jìn)行委托的業(yè)務(wù)處理。
此處用到的最關(guān)鍵的核心組件是:
JavaMailSender
JavaMailSender
JavaMailSender
我自己記不住,所以多些幾遍加深記憶。 Java實(shí)現(xiàn)發(fā)送email用到的是與郵件發(fā)送相關(guān)的類,那么就是MailSender類。
發(fā)送郵件涉及的關(guān)鍵字:發(fā)送人,發(fā)送到哪里(To),郵件主題,還有郵件內(nèi)容。分別用(from,to,subject,context)表示。
JavaMailSender的源碼如下
可以看到第一步是有一個MimeMessage所以看如下代碼
@Component public class MailClient { private staticfinal Logger logger= LoggerFactory.getLogger(MailClient.class); @Autowired private JavaMailSender javaMailSender; @Value("${spring.mail.username}") private String from; public voidsendMail(String to,String subject,String context){ try { MimeMessage message= javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message); helper.setFrom(from); helper.setTo(to); helper.setSubject(subject); helper.setText(context,true);//不加true表示是默認(rèn)文本,加了true表示支持html文本 javaMailSender.send(helper.getMimeMessage()); } catch (MessagingException e) { logger.error("發(fā)送郵件失敗"+e.getMessage()); } } }
測試類
@RunWith(SpringRunner.class) @SpringBootTest @ContextConfiguration(classes = CommunityApplication.class) public class MailTests { @Autowired private MailClient mainClient; @Test public void testTextMail(){ mainClient.sendMail("596844484@qq.com","java yyds", "Welcome"); } }
然后果不其然出現(xiàn)了錯誤
然后果不其然出現(xiàn)了錯誤
然后果不其然出現(xiàn)了錯誤
產(chǎn)生這個錯誤的原因去查了查是因?yàn)槭跈?quán)碼的問題,解決這個問題可以閱讀文章末尾補(bǔ)充文章
然后經(jīng)過種種我把新浪微博換成了網(wǎng)易163的郵箱
并按照解決辦法去修改。測試成功
3、使用Thymeleaf模板發(fā)送html文本
先寫一個html文件
附上代碼
@Autowired private TemplateEngine templateEngine; @Test //注意這里的Context 是Thymeleaf下的 public void testTextMailHtml(){ Context context=new Context(); context.setVariable("username", "小傻瓜"); //從這里取值 String process = templateEngine.process("/mail/demo", context); System.out.println(process); mailClient.sendMail("18215626061@sina.com","java yyds", "Welcome"); }
下面讓我們想一想開始發(fā)郵箱時的為什么會報錯。
報錯信息如下圖:
查了查資料,才發(fā)現(xiàn),如果是163郵箱發(fā)送郵件,password配置的需要是163的授權(quán)碼。如下圖:
這樣就解決了報錯問題。
以上就是使用JavaMailSender發(fā)送郵箱的過程。歡迎各位讀者指正。更多關(guān)于java的資料請關(guān)注腳本之家其它相關(guān)文章!,希望大家以后多多支持腳本之家!
相關(guān)文章
JAVA中字符串函數(shù)subString的用法小結(jié)
本篇文章主要是對JAVA中字符串函數(shù)subString的用法進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-02-02Java中類與對象的相關(guān)知識點(diǎn)總結(jié)
對象是類實(shí)例化出來的,對象中含有類的屬性,類是對象的抽象,下面這篇文章主要給大家介紹了關(guān)于Java中類與對象的一些相關(guān)知識點(diǎn),需要的朋友可以參考下2021-11-11Java如何利用狀態(tài)模式(state pattern)替代if else
這篇文章主要給大家介紹了關(guān)于Java如何利用狀態(tài)模式(state pattern)替代if else的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11東方通TongWeb結(jié)合Spring-Boot使用的實(shí)現(xiàn)
本文主要介紹了東方通TongWeb結(jié)合Spring-Boot使用的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07Feign實(shí)現(xiàn)多文件上傳,Open?Feign多文件上傳問題及解決
這篇文章主要介紹了Feign實(shí)現(xiàn)多文件上傳,Open?Feign多文件上傳問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11java List去掉重復(fù)元素的幾種方式(小結(jié))
這篇文章主要介紹了java List去掉重復(fù)元素的幾種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06