使用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