springboot集成javaMail發(fā)送郵件(附源碼)

背景:

boss想做一個數(shù)據庫定時查詢,如果查詢出異常結果就將異常信息都發(fā)送到指定郵箱中,于是用到了javaMail,下面就是利用springboot整合javaMail實現(xiàn)該需求。(為了能讓大家更快的完成javaMail的集成,后續(xù)的集成步驟中有關db操作均跳過)

相關源碼下載

集成步驟:

  • 1 設置郵箱smtp服務器,并記錄開啟服務的授權密碼,此部分操作不做贅述,大家可以參考開啟郵箱的smtp服務器(以163郵箱為例)進行操作

  • 2 新建springboot項目,添加web、thymeleaf、javaMail依賴

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.dhcc</groupId>
    <artifactId>mail_demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>mail_demo</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.10.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!--Thymeleaf-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

        <!--javaMail-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

  • 3 項目配置
    application.properties中進行如下配置
server.port=9888

#javaMail配置(下面的 spring.mail.host 為發(fā)送郵箱的郵箱服務器)
spring.mail.host=smtp.163.com
spring.mail.username=xxx@163.com
spring.mail.password=password
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true

ps:上面提到的spring.mail.host為發(fā)送郵箱的郵箱服務器

  • 4 編寫發(fā)送郵件的工具類SendMail
public class SendMail {
    //發(fā)送普通文本格式郵件
    public static void sendTextMail(MimeMessage message,String username,String recipient,String subject,List<String> content){
        try {
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(username);
            helper.setTo(recipient);
            helper.setSubject(subject);
            StringBuffer sb = new StringBuffer();
            sb.append(content);
            helper.setText(sb.toString());
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }

    //發(fā)送html格式郵件
    public void sendHtmlMail(MimeMessage message,String username,String recipient, String subject, String content) {
        try {
            //true表示需要創(chuàng)建一個multipart message
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(username);
            helper.setTo(recipient);
            helper.setSubject(subject);
            helper.setText(content, true);
            System.out.println("html格式郵件發(fā)送中...");
        } catch (MessagingException e) {
            System.out.println("html格式郵件發(fā)送失敗!");
        }
    }
}
}
  • 5 編寫service層,調用發(fā)送郵件方法
public interface MailService {
    /**
     * @Author: hobbes
     * @Description: 獲得錯誤領導項目,并發(fā)送提示郵件
     * @Date: 創(chuàng)建于 11:53 2018/2/12 0012
     * @Param:
     * @return
     */
    String checkProject();
}
@Service
public class MailServiceImpl implements MailService {
    
    @Autowired
    private JavaMailSender javaMailSender;

    @Override
    public String checkProject(){
        try {
            SendMail sendMail = new SendMail();
            MimeMessage message = javaMailSender.createMimeMessage();
            String content = "<html><head><style>td{border:solid #add9c0; border-width:0px 1px 1px 0px; padding:10px 0px;} table{border:solid #add9c0; border-width:1px 0px 0px 1px;}</style></head><body style=''><h3>截止 " + format.format(new Date()) + " 業(yè)績核算系統(tǒng)中錯誤領導項目,項目信息如下:</h3>" +
                    "<table><tr><th>合同號</th><th>項目名稱</th><th>客戶名稱</th><th>合同總金額(元)</th><th>合同實收款(元)</th><th>簽訂日期</th><th>項目所屬領導</th><th>提交人</th></tr>" +
                    "<tr><td>1</td><td>1</td><td>1</td><td>1</td><td>1</td><td>1</td><td>1</td><td>1</td></tr>" +
                    "</table></body></html>";
            sendMail.sendHtmlMail(message, "郵件發(fā)送者郵箱", "郵件接收者郵箱", "郵件標題", content);
            javaMailSender.send(message);
        }catch(Exception e){
            //跳轉至郵件發(fā)送失敗頁面
            return "CheckError";
        }
        //跳轉至郵件發(fā)送成功頁面
        return "CheckSuccess";
    }
}

ps:此處只給出了調用發(fā)送html格式郵件的方法,普通文本格式郵件的調用更簡單,可以對照著寫

  • 6 controller層調用發(fā)送郵件的service
@Controller
@RequestMapping("/mail")
public class MailController {
    @Autowired
    private JavaMailSender javaMailSender;
    @Autowired
    private MailService mailService;

    @RequestMapping("/checkProject")
    public String checkProject(){
        return mailService.checkProject();
    }

}
  • 7 啟動項目,訪問localhost:9888/mail/checkProject


    運行成功.png

總結:

springboot和javaMail的集成很簡單,主要就是獲得發(fā)送者郵箱的smtp服務器地址和授權密碼,做配置之后,調用自己手動封裝好的發(fā)送郵件方法即可。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容