使用java發送郵件過程詳解
SpringBoot實踐,開發社區登錄模塊今日份開啟 發送郵件三個步驟:
1、郵箱設置
首先需要註冊一個新浪郵箱 [email protected]
然後進入設置開啟POP3/SMTP服務,務必記住授權碼
左下角點開啟
2、Spring Email
導入jar包
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> <version>2.4.4</version> </dependency>
然後在IDEA中的application中配置郵箱的相關設置
可以創建.properties也可以創建.yaml。分別如下:
此處password為授權碼 有的郵箱的密碼需要隱匿的設置為授權碼,否則會錯誤,這裡不用授權碼的話可以換回密碼。
這裡我們創建一個util包,然後創建MailClient類,這裡因為發郵件的時候是要委托新浪郵箱,所以這裡是一個Client類。來進行委托的業務處理。
此處用到的最關鍵的核心組件是:
JavaMailSender
JavaMailSender
JavaMailSender
我自己記不住,所以多些幾遍加深記憶。 Java實現發送email用到的是與郵件發送相關的類,那麼就是MailSender類。
發送郵件涉及的關鍵字:發送人,發送到哪裡(To),郵件主題,還有郵件內容。分別用(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表示是默認文本,加瞭true表示支持html文本 javaMailSender.send(helper.getMimeMessage()); } catch (MessagingException e) { logger.error("發送郵件失敗"+e.getMessage()); } } }
測試類
@RunWith(SpringRunner.class) @SpringBootTest @ContextConfiguration(classes = CommunityApplication.class) public class MailTests { @Autowired private MailClient mainClient; @Test public void testTextMail(){ mainClient.sendMail("[email protected]","java yyds", "Welcome"); } }
然後果不其然出現瞭錯誤
然後果不其然出現瞭錯誤
然後果不其然出現瞭錯誤
產生這個錯誤的原因去查瞭查是因為授權碼的問題:附上解決鏈接
https://blog.csdn.net/qq_27101653/article/details/84836829
然後經過種種我把新浪微博換成瞭網易163的郵箱
並按照解決辦法去修改。測試成功
3、使用Thymeleaf模板發送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("[email protected]","java yyds", "Welcome"); }
以上就是使用JavaMailSender發送郵箱的過程。歡迎各位讀者指正。更多關於java的資料請關註WalkonNet其它相關文章!,希望大傢以後多多支持WalkonNet!
推薦閱讀:
- None Found