使用阿里云郵件推送服務(wù)群發(fā)郵件

EDM(電子郵件營(yíng)銷)已經(jīng)誕生了很多年合敦,在國(guó)內(nèi)隨著很多IM工具的普及退疫,曾經(jīng)有人斷言:郵件將在不久的將來(lái)消失融柬,然而從目前來(lái)看并沒(méi)有消失万伤。實(shí)際上郵件在很多特定場(chǎng)景是有她的重要用途的。

在亞馬孫上購(gòu)物完成之后月劈,亞馬遜會(huì)根據(jù)我的歷史購(gòu)物記錄配合自身的推薦系統(tǒng)度迂,向我推薦可能感興趣的書籍,這樣可以有效地促成轉(zhuǎn)化猜揪。網(wǎng)站注冊(cè)惭墓,忘記密碼等服務(wù)也有很多用郵件來(lái)完成。

最近我有一項(xiàng)需求湿右,我想利用郵件群發(fā)來(lái)做推廣诅妹,就是流傳已久的EDM營(yíng)銷。原本我以為這事其實(shí)沒(méi)什么難度毅人,找下第三方郵件發(fā)送,熟悉下sdk群發(fā)郵件就行了尖殃,任何事情如果自己沒(méi)做過(guò)丈莺,其實(shí)是不了解細(xì)節(jié)的,郵件群發(fā)存在很多細(xì)節(jié)需要注意送丰,記錄下這次郵件群發(fā)的思考缔俄。

首先挑選郵件群發(fā)第三方服務(wù),我沒(méi)有看很多第三方服務(wù),就看了兩家俐载,一個(gè)是搜狐蟹略,另外一個(gè)是阿里云。比對(duì)下來(lái)阿里云的價(jià)格更加便宜遏佣,所以我就選擇了阿里云的郵件推送服務(wù)挖炬。阿里云的價(jià)格如下:

屏幕快照 2018-07-15 14.25.04.png

每天200封免費(fèi),超出部分才計(jì)費(fèi)状婶,初始值每天2000封意敛,這個(gè)數(shù)量是隨著發(fā)送質(zhì)量動(dòng)態(tài)調(diào)整的,這個(gè)需要特別注意膛虫,要發(fā)送經(jīng)過(guò)驗(yàn)證可達(dá)的真實(shí)郵箱草姻,否則會(huì)被降低每日發(fā)送數(shù)量,嚴(yán)重的可能被封稍刀。被封之后撩独,可以申請(qǐng)解封,但是每個(gè)賬號(hào)只有兩次機(jī)會(huì)账月,這個(gè)特別需要注意跌榔。我就因?yàn)闆](méi)有仔細(xì)去了解這個(gè)規(guī)則,被封了一次捶障,如何確保郵箱質(zhì)量僧须,我在下文將會(huì)提到。

想要發(fā)送郵件首先你得有個(gè)域名项炼。第一步就是到阿里萬(wàn)網(wǎng)申請(qǐng)一個(gè)域名担平,申請(qǐng)域名的步驟這里就不做概述了。使用阿里云的郵件推送服務(wù)锭部,需要申請(qǐng)開(kāi)通這個(gè)功能暂论,到申請(qǐng)開(kāi)通入口,點(diǎn)擊申請(qǐng)開(kāi)通按鈕拌禾。

進(jìn)入到阿里云管理控制臺(tái)—>郵件推送—>發(fā)信域名頁(yè)面取胎,點(diǎn)擊右上角的新建域名:

WechatIMG189.jpeg

點(diǎn)擊新建域名之后,在輸入框中輸入自己的發(fā)送域名湃窍,這里不建議使用企業(yè)郵箱作為域名闻蛀,這也是阿里云的建議,原因其實(shí)很簡(jiǎn)單您市,如果大量發(fā)送營(yíng)銷推廣郵件觉痛,會(huì)導(dǎo)致郵箱使用異常。所以建議使用二級(jí)域名作為發(fā)送域名茵休,例如:mail.taobao.com薪棒。

WechatIMG190.jpeg

發(fā)信域名添加完成之后手蝎,主界面就會(huì)出現(xiàn)一條數(shù)據(jù)。我們需要針對(duì)這個(gè)發(fā)信域名做配置:

WechatIMG191.jpeg

點(diǎn)擊配置鏈接俐芯,將會(huì)出現(xiàn)一個(gè)配置參數(shù)頁(yè)面棵介,參數(shù)頁(yè)面看上去很復(fù)雜,有人可能看到就想放棄了吧史。其實(shí)很簡(jiǎn)單邮辽。配置頁(yè)面總共有4個(gè)參數(shù),其中3個(gè)參數(shù)是必須的扣蜻。我們只需要把這3項(xiàng)參數(shù)復(fù)制到萬(wàn)網(wǎng)的解析記錄中去就可以了逆巍。我們來(lái)看下配置參數(shù):(配置參數(shù)說(shuō)明圖)

WechatIMG192.jpeg

其中1 ,2莽使,3參數(shù)是必須的锐极,第四個(gè)可以忽略。接下來(lái)我們要做的就是將上圖中配置界面的參數(shù)復(fù)制到域名解析列表中芳肌。打開(kāi)阿里萬(wàn)網(wǎng)的域名列表(阿里云管理控制臺(tái)—>域名與網(wǎng)站(萬(wàn)網(wǎng))—>域名)灵再,如圖:

WechatIMG193.jpeg

點(diǎn)擊解析鏈接,進(jìn)入到解析設(shè)置頁(yè)面亿笤,進(jìn)入頁(yè)面之后翎迁,點(diǎn)擊右上角的添加記錄按鈕,在彈出框中進(jìn)行設(shè)置净薛,彈出框界面如下:

WechatIMG194.jpeg

簡(jiǎn)單說(shuō)下這幾個(gè)參數(shù)汪榔,記錄類型:記錄類型就是將上文中提到過(guò)的(配置參數(shù)說(shuō)明圖)中的4種類型,全部添加進(jìn)來(lái)肃拜。主機(jī)記錄也是參照上文(配置參數(shù)說(shuō)明圖)的主機(jī)記錄痴腌,將圖中的主機(jī)記錄復(fù)制過(guò)來(lái)即可。解析線路保持默認(rèn)即可燃领。記錄值:記錄值就是在(配置參數(shù)說(shuō)明圖)中有一個(gè)”記錄值”的一列士聪,只需要把這一列的值復(fù)制過(guò)來(lái)就行了,有木有很簡(jiǎn)單猛蔽。

總共需要添加4次記錄就完成了解析設(shè)置剥悟,添加完成之后,界面是這樣的:

WechatIMG195.jpeg

域名解析完成之后曼库,下一步就是發(fā)信地址(阿里云管理控制臺(tái)-->郵件推送-->發(fā)信地址)的配置了:

WechatIMG196.jpeg

新建發(fā)信地址如下:

WechatIMG197.jpeg

發(fā)信域名選項(xiàng)選擇已經(jīng)配置完成的發(fā)信域名即可区岗,賬號(hào)輸入,例如我的賬號(hào)是這樣的:service@mail.taobao.com凉泄□镂荆回信地址如果沒(méi)有就不必填寫,我沒(méi)用過(guò)回信地址后众,所以我在這里是沒(méi)有填寫的胀糜。發(fā)信類型選擇批量郵件。

發(fā)信地址設(shè)置完成蒂誉,列表頁(yè)面就會(huì)出現(xiàn)剛才添加的記錄了:

WechatIMG198.jpeg

這里需要注意一點(diǎn)教藻,上圖中有一個(gè)選項(xiàng):設(shè)置SMTP密碼。如果你想用smtp協(xié)議來(lái)發(fā)送郵件右锨,那么就需要設(shè)置smtp密碼括堤。發(fā)送郵件有兩種方式,一種是smtp绍移,另一種是使用阿里云自身的sdk悄窃,使用sdk用的是阿里云提供的密鑰。如果選擇smtp方式發(fā)送蹂窖,那么就設(shè)置下smtp密碼轧抗。

至此,所有的設(shè)置步驟已經(jīng)完成了瞬测,接下來(lái)就是發(fā)送的過(guò)程了横媚。我是使用了smtp方式作為郵件發(fā)送的。主要考慮是以下幾點(diǎn)月趟。用阿里云的sdk發(fā)送灯蝴,需要用到accessSecret,accessSecret擁有賬號(hào)的所有權(quán)限孝宗,我的代碼又是托管到git服務(wù)器上的穷躁,所以為了安全起見(jiàn)用了smtp方式。

阿里云本身也提供了子賬號(hào)的accessSecret權(quán)限因妇,建立子賬號(hào)后问潭,可以規(guī)定子賬號(hào)的權(quán)限,比如可以建立一個(gè)只能發(fā)送郵件的子賬號(hào)accessSecret沙峻。這樣就可以保證安全性睦授。

smtp發(fā)送的代碼非常簡(jiǎn)單,主要用到了第三方的類庫(kù)摔寨,代碼如下:

public class MailService {
    private static MailService mailService;

    public static MailService getInstance(String username, String pwd, String smtp,String port) {
        if (mailService== null) {
            mailService= new MailService(username, pwd, smtp,port);
            return mailService;
        } else {
            return mailService;
        }
    }

    private final transient Properties props = System.getProperties();

    /**
/     * 郵件服務(wù)器登錄驗(yàn)證/
/     */
private transient MailAuthenticator authenticator;

    /**
/     * 郵箱session/
/     */
private transient Session session;

    private MailService(String username, String pwd, String smtp,String port) {
        authenticator = new MailAuthenticator(username, pwd);
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.host", smtp);
        props.put("mail.smtp.port",port);
        session = Session.getInstance(props, authenticator);
    }

    //**/
/     * 發(fā)送郵件/
/     */
/     */*@param*/recipient 收件人郵箱地址/
/     */*@param*/subject   郵件主題/
/     */*@param*/content   郵件內(nèi)容/
/     */*@throws*/AddressException/
/     */*@throws*/MessagingException/
/     *//
public void send(String recipient, String subject, String content)
            throws MessagingException {
        final MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(authenticator.getUsername()));
        message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(recipient));
        message.setSubject(subject);
        message.setContent(content, "text/html;charset=utf-8");
        Transport.send(message);
    }

    //**/
/     * 群發(fā)郵件/
/     */
/     */*@param*/recipients 收件人們/
/     */*@param*/subject    主題/
/     */*@param*/content    內(nèi)容/
/     */*@throws*/AddressException/
/     */*@throws*/MessagingException/
/     *//
public void send(List<String> recipients, String subject, String content) throws MessagingException {
        final MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(authenticator.getUsername()));
        final int num = recipients.size();
        InternetAddress[] addresses = new InternetAddress[num];
        for (int i = 0; i < num; i++) {
            addresses[i] = new InternetAddress(recipients.get(i));
        }
        message.setRecipients(MimeMessage.RecipientType.TO, addresses);
        message.setSubject(subject);
        message.setContent(content, "text/html;charset=utf-8");
        Transport.send(message);
    }
}

以上需要引用java.mail類庫(kù):

<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.5.6</version>
</dependency>

阿里云的配置信息如下:
mail.aliyunUsername=service@mail.taobao.com
mail.aliyunAuthorizationCode=你的smtp密碼
mail.aliyunSmtp=smtpdm.aliyun.com
mail.aliyunPort=25

以上就是使用阿里云發(fā)送郵件的全過(guò)程了去枷,總體上還是比較簡(jiǎn)單的。下面再來(lái)說(shuō)說(shuō)需要注意的地方是复。

阿里云每日的發(fā)送量是有限的删顶,這個(gè)根據(jù)你的郵箱發(fā)送質(zhì)量決定,初始值是2000淑廊,之后會(huì)根據(jù)你的郵箱質(zhì)量動(dòng)態(tài)調(diào)整逗余。起初我發(fā)送了很多沒(méi)有驗(yàn)證過(guò)的郵箱導(dǎo)致我被封,所以在大量發(fā)送郵件之前季惩,請(qǐng)確保你的郵箱是真實(shí)可達(dá)的录粱。

那么如何驗(yàn)證郵箱的真實(shí)有效性呢腻格?這還真是個(gè)問(wèn)題,思路可以參考下阮一峰的這篇文章:如何驗(yàn)證 Email 地址啥繁。我在看完此篇文章之后菜职,覺(jué)得應(yīng)該沒(méi)什么問(wèn)題,覺(jué)得有效性是個(gè)可以用代碼解決的問(wèn)題旗闽,我嘗試了之前阿里云后臺(tái)發(fā)送失敗的一些郵箱酬核,按照博客中的協(xié)議嘗試了下,沒(méi)想到返回的是200适室。

就是說(shuō)用協(xié)議去驗(yàn)證郵箱地址的時(shí)候嫡意,返回了200,但是郵箱地址其實(shí)是不存在的捣辆,這個(gè)我用qq郵箱發(fā)送過(guò)蔬螟,確實(shí)是不存在的。然后我嘗試使用了第三方的服務(wù)罪帖,例如Verify Email促煮,這個(gè)網(wǎng)站是按照調(diào)用次數(shù)收費(fèi)的,收費(fèi)價(jià)格如下:

WechatIMG199.jpeg

看到了這個(gè)價(jià)格整袁,屌絲的我已經(jīng)承受不起了菠齿,因?yàn)槲业泥]箱數(shù)量有幾十萬(wàn),所以費(fèi)用可能會(huì)非常高坐昙,但是郵箱的轉(zhuǎn)化率實(shí)際上是比較低的绳匀,所以權(quán)衡成本,這個(gè)服務(wù)我是用不了的炸客。此外我還發(fā)現(xiàn)有些不存在的qq郵箱疾棵,這個(gè)網(wǎng)站的驗(yàn)證結(jié)果是成功的。這說(shuō)明這個(gè)網(wǎng)站的驗(yàn)證服務(wù)其實(shí)是有失敗率的痹仙。

我又看了利劍郵箱驗(yàn)證和Fast Email Verifier是尔,這兩款軟件的測(cè)試結(jié)果都不理想。最后我在網(wǎng)上找到了一款email驗(yàn)證开仰∧饷叮總體說(shuō)來(lái)這款軟件是最讓我滿意的一款,擁有非常高的準(zhǔn)確率众弓,當(dāng)然是收費(fèi)的恩溅,我花了100元,終身使用谓娃。我覺(jué)得物有所值脚乡。在這之前我覺(jué)得驗(yàn)證郵箱的有效性其實(shí)不是非常難,沒(méi)想到這個(gè)事情是有技術(shù)壁壘的滨达,出乎我的意料奶稠。

這款軟件唯一不足的地方就是沒(méi)有sdk俯艰,采用手動(dòng)倒入email地址,然后批量導(dǎo)出有效或者無(wú)效的地址窒典,然后自己再將這些地址倒入到自己的數(shù)據(jù)庫(kù)中蟆炊,進(jìn)行郵件群發(fā)稽莉,我在使用了這款軟件之后瀑志,阿里云后臺(tái)的數(shù)據(jù)準(zhǔn)確性如下圖:

WechatIMG200.jpeg

可以看到無(wú)效地址非常低。

第二個(gè)需要注意的地方就是郵件模板污秆。郵件模板我之前也是覺(jué)得非常簡(jiǎn)單劈猪,不就是一個(gè)簡(jiǎn)單的html嗎? 真的如此嗎良拼?事實(shí)并不是這樣战得,每個(gè)郵件服務(wù)商針對(duì)郵件都喜歡做不同的處理,導(dǎo)致你發(fā)出的郵件庸推,客戶看到的跟你的實(shí)際上會(huì)有些區(qū)別常侦。可以參考下這篇HTML Email 編寫指南 贬媒。

那么我們?nèi)绾巫鲆粋€(gè)html模板呢聋亡,當(dāng)然是使用一個(gè)成熟的郵件模板了,這樣少了很多煩惱和兼容性的問(wèn)題际乘。這類模板網(wǎng)上有很多坡倔,可以自行搜索,我使用了這個(gè)郵件模板脖含,覺(jué)得還不錯(cuò)罪塔。

郵件群發(fā)到這里就介紹完了,主要介紹了阿里云的配置养葵,還有遇到的問(wèn)題和需要注意的地方征堪,碼字不易,如果對(duì)你有幫助关拒,歡迎點(diǎn)贊佃蚜。詳細(xì)可以查看阿里云郵件推送文檔

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末夏醉,一起剝皮案震驚了整個(gè)濱河市爽锥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌畔柔,老刑警劉巖氯夷,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異靶擦,居然都是意外死亡腮考,警方通過(guò)查閱死者的電腦和手機(jī)雇毫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)踩蔚,“玉大人棚放,你說(shuō)我怎么就攤上這事∠诿觯” “怎么了飘蚯?”我有些...
    開(kāi)封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)福也。 經(jīng)常有香客問(wèn)我局骤,道長(zhǎng),這世上最難降的妖魔是什么暴凑? 我笑而不...
    開(kāi)封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任峦甩,我火速辦了婚禮,結(jié)果婚禮上现喳,老公的妹妹穿的比我還像新娘凯傲。我一直安慰自己,他們只是感情好嗦篱,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布冰单。 她就那樣靜靜地躺著,像睡著了一般默色。 火紅的嫁衣襯著肌膚如雪球凰。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天腿宰,我揣著相機(jī)與錄音呕诉,去河邊找鬼。 笑死吃度,一個(gè)胖子當(dāng)著我的面吹牛甩挫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播椿每,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼伊者,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了间护?” 一聲冷哼從身側(cè)響起亦渗,我...
    開(kāi)封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎汁尺,沒(méi)想到半個(gè)月后法精,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年搂蜓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了狼荞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡帮碰,死狀恐怖相味,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情殉挽,我是刑警寧澤丰涉,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站此再,受9級(jí)特大地震影響昔搂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜输拇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望贤斜。 院中可真熱鬧策吠,春花似錦、人聲如沸瘩绒。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)锁荔。三九已至蟀给,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間阳堕,已是汗流浹背跋理。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留恬总,地道東北人前普。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像壹堰,于是被迫代替她去往敵國(guó)和親拭卿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

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