一、SendCloud介紹
? ? ? SendCloud由搜狐武漢研發(fā)中心孵化的項(xiàng)目,是致力于為開發(fā)者提供高質(zhì)量的觸發(fā)郵件服務(wù)的云端郵件發(fā)送平臺,為開發(fā)者提供便利的API接口來調(diào)用服務(wù),讓郵件準(zhǔn)確迅速到達(dá)用戶收件箱并獲得強(qiáng)大的追蹤數(shù)據(jù)。
二、SendCloud使用
? ? ? SendCloud使用前需要先了解幾個(gè)常用的功能以及定義。
? ? ? 1.郵件模板:你要發(fā)送給客戶的郵件的內(nèi)容,可以是html也可以是文本,如果是html可以寫入變量格式為%變量名%,在發(fā)送時(shí)SendCloud會(huì)將變量動(dòng)態(tài)替換成對應(yīng)的值。
? ? ? 2.地址列表:當(dāng)需要發(fā)送同一個(gè)模板給大量客戶時(shí)可以創(chuàng)建一個(gè)地址列表,將客戶的郵箱地址以及模板中的變量對應(yīng)的值寫入列表,執(zhí)行發(fā)送后SendCloud會(huì)對列表中的郵箱地址進(jìn)行逐一的郵件發(fā)送。
? ? ? SendCloud的API調(diào)用就是簡單的post或者get請求,具體的方法請參照如下地址
? ? ? 當(dāng)然SendCloud也可以進(jìn)行短信的批量發(fā)送,但是我沒有用過,所以不做說明。
三、SendCloud投遞回應(yīng)
? ? ? SendCloud自身擁有投遞回應(yīng)的處理機(jī)制,可以用過api調(diào)用。再這里就不多說了。我主要說的是SendCloud提供的自定義的郵件觸發(fā)機(jī)制——WebHook
? ? ? webHook主要的目的是由開發(fā)者來處理用戶的請求,比如點(diǎn)擊,取消訂閱等等,它的機(jī)制也很簡單,在用戶執(zhí)行某一個(gè)請求時(shí)會(huì)向你指定的地址發(fā)送一個(gè)http的post請求,并附帶一些參數(shù)(參數(shù)主要包括,驗(yàn)證信息,請求類型,請求時(shí)間等等),開發(fā)者可以根據(jù)這些參數(shù)自己定義處理方法。
? ? ? 有一下幾點(diǎn)需要注意:
? ? ? 1.給webHook提供的地址要有返回值,哪怕返回一個(gè)空字符串,如果沒有則在sendcloud發(fā)送測試的時(shí)候通不過。
? ? ? 2.簽名驗(yàn)證使用的是hmacsha256,并且簽名的拼接是timestamp在前token在后生成的簽名才能跟signature對的上。
? ? ? 3.第三個(gè)是個(gè)人的觀點(diǎn),最好不要把點(diǎn)擊,打開這樣高頻率的事件加到webhook中。這樣會(huì)增加服務(wù)器的壓力。
四、SendCloud注意事項(xiàng)
? ? ? SendCloud的使用很方便,但是在使用過程中可能會(huì)有一些意想不到的問題,我就說一下我遇到的問題。
? ? ? 1.不要同時(shí)調(diào)用同一個(gè)模板進(jìn)行郵件發(fā)送。為了是發(fā)送更加快速,開發(fā)者往往使用多進(jìn)行進(jìn)行發(fā)送,這樣會(huì)出現(xiàn)一個(gè)問題就是進(jìn)程A對模板進(jìn)行的編輯替換,此時(shí)進(jìn)程B剛好進(jìn)行調(diào)用發(fā)送。導(dǎo)致的結(jié)果就是進(jìn)程A的模板信息被進(jìn)程B發(fā)送給了進(jìn)程B所要發(fā)送的聯(lián)系人。
? ? ? 2.模板中變量不能太多。郵件模板允許添加動(dòng)態(tài)的變量以%變量名%的格式存在,發(fā)送時(shí)會(huì)將變量替換成對應(yīng)的值,但是SendCloud有一個(gè)隱藏規(guī)定就是變量的占比不能超過整個(gè)模板的25%,否則將不能替換成功(但api調(diào)用沒有問題且沒有錯(cuò)誤提示)。
? ? ? 3.向地址列表中添加用戶郵箱地址時(shí)一次不要過多。開發(fā)者通過api向地址列表中添加需要發(fā)送的郵箱地址,這個(gè)過程中每一次的調(diào)用不要填寫過多的地址,SendCloud的機(jī)制是加入此次添加的郵箱地址中只要有一個(gè)有問題,那么所有的郵箱地址都將添加失敗。因此條件允許的情況下,為了保證添加郵箱地址的準(zhǔn)確性,建議一個(gè)一個(gè)的去添加。
? ? ? 4.api調(diào)用時(shí)需要捕獲超時(shí)異常。大部分的SendCloud發(fā)送都是使用的定時(shí)腳本,執(zhí)行定時(shí)腳本時(shí)如果不進(jìn)行異常的捕獲,某一次調(diào)用api時(shí)系統(tǒng)超時(shí),那么整個(gè)腳本都會(huì)停止。因此要做一下異常的捕獲和處理。