SpringBoot整合Mail

Spring中默認有starter實現(xiàn)類Mail

依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

配置文件

# JavaMailSender 郵件發(fā)送的配置
spring.mail.host=smtp.qq.com
spring.mail.username=用戶qq郵箱
#QQ郵箱的授權(quán)碼
spring.mail.password=密碼
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.default-encoding=UTF-8

簡單郵件

public void sendSimpleMail(){
    try{
        SimpleMaileMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage .setFrom("sendFrom@qq.com");
        simpleMailMessage .setTo("sendTo@qq.com");
        simpleMailMessage.setSubject("主題");
        simpleMailMessage.setText("內(nèi)容");
        javaMailSender.send(simpleMailMessage);//發(fā)送
    }catch(Exception e){
        logger.error("發(fā)送失敗",e.getMessage());
    }
}

自定義發(fā)件人名稱

String nick = "";
            try {
                nick = javax.mail.internet.MimeUtility.encodeText("張三");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            // 設(shè)置發(fā)件人
            mimeMsg.setFrom(new InternetAddress("sendFrom@qq.com", nick));

html格式郵件

public void sendHTMLMail(MailBean mailBean) {
        MimeMessage mimeMailMessage = null;
        try {
            mimeMailMessage = javaMailSender.createMimeMessage();
            MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMailMessage, true);
            mimeMessageHelper.setFrom(MAIL_SENDER);
            mimeMessageHelper.setTo(mailBean.getRecipient());
            mimeMessageHelper.setSubject(mailBean.getSubject());
            mimeMessageHelper.setText("<h1>hello</h1>", true);
            javaMailSender.send(mimeMailMessage);
        } catch (Exception e) {
            logger.error("郵件發(fā)送失敗", e.getMessage());
        }
    }

帶附件格式的郵件

 public void sendAttachmentMail(MailBean mailBean) {
        MimeMessage mimeMailMessage = null;
        try {
            mimeMailMessage = javaMailSender.createMimeMessage();
            MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMailMessage, true);
            mimeMessageHelper.setFrom(MAIL_SENDER);
            mimeMessageHelper.setTo(mailBean.getRecipient());
            mimeMessageHelper.setSubject(mailBean.getSubject());
            mimeMessageHelper.setText(mailBean.getContent());
            //文件路徑  spring的FileSystemResource,使用絕對路徑訪問文件資源
            FileSystemResource file = new FileSystemResource(new File("src/main/resources/static/image/mail.png"));
            mimeMessageHelper.addAttachment("mail.png", file);

            javaMailSender.send(mimeMailMessage);
        } catch (Exception e) {
            logger.error("郵件發(fā)送失敗", e.getMessage());
        }
    }

發(fā)送帶靜態(tài)資源的郵件

    public void sendInlineMail(MailBean mailBean) {
        MimeMessage mimeMailMessage = null;
        try {
            mimeMailMessage = javaMailSender.createMimeMessage();
            MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMailMessage, true);
            mimeMessageHelper.setFrom(MAIL_SENDER);
            mimeMessageHelper.setTo(mailBean.getRecipient());
            mimeMessageHelper.setSubject(mailBean.getSubject());
            mimeMessageHelper.setText("<html><body>帶靜態(tài)資源的郵件內(nèi)容,這個一張IDEA配置的照片:<img src='cid:picture' /></body></html>", true);
            //文件路徑
            FileSystemResource file = new FileSystemResource(new File("src/main/resources/static/image/mail.png"));
            mimeMessageHelper.addInline("picture", file);

            javaMailSender.send(mimeMailMessage);
        } catch (Exception e) {
            logger.error("郵件發(fā)送失敗", e.getMessage());
        }
    }

基于Freemarker的模板郵件

public void sendTemplateMail(MailBean mailBean) {
        MimeMessage mimeMailMessage = null;
        try {
            mimeMailMessage = javaMailSender.createMimeMessage();
            MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMailMessage, true);
            mimeMessageHelper.setFrom(MAIL_SENDER);
            mimeMessageHelper.setTo(mailBean.getRecipient());
            mimeMessageHelper.setSubject(mailBean.getSubject());

            Map<String, Object> model = new HashMap<String, Object>();
            model.put("content", mailBean.getContent());
            model.put("title", "標題Mail中使用了FreeMarker");
            Template template = configuration.getTemplate("mail.ftl");
            String text = FreeMarkerTemplateUtils.processTemplateIntoString(template, model);
            mimeMessageHelper.setText(text, true);

            javaMailSender.send(mimeMailMessage);
        } catch (Exception e) {
            logger.error("郵件發(fā)送失敗", e.getMessage());
        }

    }

動態(tài)添加郵箱配置信息

和之前使用接口javaMailSender不同涣楷,這次使用的是接口的實現(xiàn)類揩晴。
使用JavaMailSenderImpl

public void sendSimpleMail() throws Exception {
    JavaMailSenderImpl mailSender = new JavaMailSenderImpl();//直接生產(chǎn)一個實例
    String users[] = {"xxxxx@qq.com","xxxxx@126.com"};
    mailSender.setHost("smtp.126.com");//動態(tài)添加配置
    mailSender.setPassword("xxxxx");
    mailSender.setPort(25);
    mailSender.setProtocol("smtp");
    mailSender.setUsername("xxxxx");
    SimpleMailMessage message = new SimpleMailMessage();
    message.setFrom("xxxxxxx");
    message.setTo(users); // 使用數(shù)組的形式還可以群發(fā)
    message.setSubject("羽毛球比賽");
    message.setText("報名參加羽毛球賽");
    mailSender.send(message);
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宰衙,一起剝皮案震驚了整個濱河市境蔼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件阐肤,死亡現(xiàn)場離奇詭異,居然都是意外死亡呼巴,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門御蒲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來衣赶,“玉大人,你說我怎么就攤上這事厚满「椋” “怎么了?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵碘箍,是天一觀的道長遵馆。 經(jīng)常有香客問我,道長丰榴,這世上最難降的妖魔是什么货邓? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮四濒,結(jié)果婚禮上换况,老公的妹妹穿的比我還像新娘。我一直安慰自己盗蟆,他們只是感情好戈二,可當我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著喳资,像睡著了一般觉吭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上仆邓,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天鲜滩,我揣著相機與錄音伴鳖,去河邊找鬼。 笑死绒北,一個胖子當著我的面吹牛黎侈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播闷游,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼峻汉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了脐往?” 一聲冷哼從身側(cè)響起休吠,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎业簿,沒想到半個月后瘤礁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡梅尤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年柜思,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片巷燥。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡赡盘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缰揪,到底是詐尸還是另有隱情陨享,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布钝腺,位于F島的核電站抛姑,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏艳狐。R本人自食惡果不足惜定硝,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望毫目。 院中可真熱鬧喷斋,春花似錦、人聲如沸蒜茴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽粉私。三九已至顽腾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背抄肖。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工久信, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人漓摩。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓裙士,卻偏偏與公主長得像,于是被迫代替她去往敵國和親管毙。 傳聞我的和親對象是個殘疾皇子腿椎,可洞房花燭夜當晚...
    茶點故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容