Spring mail 郵件服務

業(yè)務發(fā)展的過程中桨螺,需要對業(yè)務的關鍵點進行監(jiān)控块仆,當監(jiān)控到業(yè)務出現(xiàn)異常的時候,大多數(shù)時候希望以郵件的方式通知 干系人。Spring為我們提供了 發(fā)郵件 的工具類與接口

applicationContext.xml 文件中添加:

<context:property-placeholder location="classpath*:mailUrl.properties" />
<!--email的配置-->
    <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host" value="${mail.host}" />
        <property name="username" value="${mail.username}" />
        <property name="password" value="${mail.password}" />
        <property name="defaultEncoding" value="UTF-8"></property>
        <property name="javaMailProperties">
            <props>
                <prop key="mail.smtp.auth">true</prop>
                <prop key="mail.from">${mail.username}</prop>
                <prop key="mail.transport.protocol">smtps</prop>
            </props>
        </property>
    </bean>

mailUrl.properties 文件的內(nèi)容:

mail.host=someonehost
mail.username=someoneMailUserName
mail.password=someoneMailPassWord

此時,spring中mail配置已經(jīng)做完了乌询,只需要創(chuàng)建一個service進行發(fā)送郵件就行

NotifyService 的內(nèi)容為:

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;

import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;
import java.io.File;
import java.util.Map;

/**
 * Created by shuai
 */
@Service
public class NotifyService {

    private static Logger logger = LoggerFactory.getLogger(NotifyService.class);

    @Autowired
    private JavaMailSender mailSender;

    public boolean notifyEmail(MailVo mail) {
        try {
            MimeMessage mimeMessage = mailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
            // 發(fā)送人
            if (null != mail.getMsgFrom()) {
                helper.setFrom(mail.getMsgFrom());
            }
            // 密送
            if (null != mail.getBcc()) {
                helper.setBcc(StringUtils.split(mail.getBcc(), ","));
            }
            // 抄送
            if (null != mail.getCc()) {
                helper.setCc(StringUtils.split(mail.getCc(), ","));
            }
            // 收件人
            if (null != mail.getMsgTo()) {
                helper.setTo(StringUtils.split(mail.getMsgTo(), ","));
            }
            // 郵件主題
            helper.setSubject(mail.getSubject());
            // 郵件的內(nèi)容
            helper.setText(mail.getText(), true);
            // 附件
            if (null != mail.getAttachmentList()) {
                for (Map.Entry<String, Object> entry : mail.getAttachmentList().entrySet()) {
                    if (entry.getValue() instanceof File) {
                        helper.addAttachment(MimeUtility.encodeText(entry.getKey()), (File) entry.getValue());
                    }
                }
            }
            // 圖片
            if (null != mail.getImagesList()) {
                for (Map.Entry<String, Object> entry : mail.getImagesList().entrySet()) {
                    if (entry.getValue() instanceof File) {
                        helper.addInline(entry.getKey(), (File) entry.getValue());
                    }
                }
            }
            // 發(fā)送郵件
            mailSender.send(mimeMessage);
            return true;
        } catch (Exception e) {
            logger.error("notify email error. informetion{}, 異常信息{}", mail, e);
            return false;
        }
    }
}

mailVo 文件的內(nèi)容為:

import java.io.Serializable;
import java.util.Map;

import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
/**
 * Created by shuai
 */
public class MailVo implements Serializable {

    private static final long serialVersionUID = 1L;
    // ID
    private long id;
    // 發(fā)送人
    private String msgFrom;
    // 收件人
    private String msgTo;
    // 密送
    private String bcc;
    // 抄送
    private String cc;
    // 主題
    private String subject;
    // 消息
    private String text;
    // 附件ID
    private String fileIds;
    // 圖片ID
    private String imgIds;
    // 附件
    private Map<String, Object> attachmentList;
    // 圖片
    private Map<String, Object> imagesList;
    // 狀態(tài)
    private String status;
    // 響應消息
    private String resInfo;

    // getAndSetMethod()...
      
    @Override
    public String toString() {
        return ReflectionToStringBuilder.toString(this);
    }
}

此時只需要調(diào)用 NotifyService 中的方法就行了。

MailVo mail = new MailVo();
mail.setMsgTo("someOneEmailAddress");
mail.setText("這是一個測試郵件發(fā)送的內(nèi)容");
mail.setSubject("測試的郵件Title");
// 發(fā)送郵件
notifyService.notifyEmail(mail);
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市做瞪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌右冻,老刑警劉巖装蓬,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異纱扭,居然都是意外死亡牍帚,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門乳蛾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來暗赶,“玉大人,你說我怎么就攤上這事屡久∫涫祝” “怎么了?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵被环,是天一觀的道長糙及。 經(jīng)常有香客問我,道長筛欢,這世上最難降的妖魔是什么浸锨? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮版姑,結果婚禮上柱搜,老公的妹妹穿的比我還像新娘。我一直安慰自己剥险,他們只是感情好聪蘸,可當我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般健爬。 火紅的嫁衣襯著肌膚如雪控乾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天娜遵,我揣著相機與錄音蜕衡,去河邊找鬼。 笑死设拟,一個胖子當著我的面吹牛慨仿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播纳胧,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼镰吆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了躲雅?” 一聲冷哼從身側響起鼎姊,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎相赁,沒想到半個月后相寇,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡钮科,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年唤衫,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绵脯。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡佳励,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蛆挫,到底是詐尸還是另有隱情赃承,我是刑警寧澤,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布悴侵,位于F島的核電站瞧剖,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏可免。R本人自食惡果不足惜抓于,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望浇借。 院中可真熱鬧捉撮,春花似錦、人聲如沸妇垢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至灼舍,卻和暖如春迎罗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背片仿。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留尤辱,地道東北人砂豌。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像光督,于是被迫代替她去往敵國和親阳距。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,658評論 2 350

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