你好,我的網站需要發送啟用郵件,目前使用的是smtp,很多都進了垃圾箱,我註冊了amazon ses,但搞不得怎麼使用,我想請教下php環境下如何使用amazon ses的,我見 segmentfault這個網站也是使用了這個服務
另外補充兩個問題,如何設定寄件者名字,如上述圖片中的SegmentFault問答社區
還有就是如何發html郵件,我這樣設定不行的:
$m->setMessageFromString('','我是哥This is the message body.
');
收到的郵件只有:我是哥This is the message body.後面的內容則沒有
回複內容:
你好,我的網站需要發送啟用郵件,目前使用的是smtp,很多都進了垃圾箱,我註冊了amazon ses,但搞不得怎麼使用,我想請教下php環境下如何使用amazon ses的,我見 segmentfault這個網站也是使用了這個服務
另外補充兩個問題,如何設定寄件者名字,如上述圖片中的SegmentFault問答社區
還有就是如何發html郵件,我這樣設定不行的:
$m->setMessageFromString('','我是哥This is the message body.
');
收到的郵件只有:我是哥This is the message body.後面的內容則沒有
要使用ses服務首先你得確保開通了此服務,假設你已經申請開通了ses,並已經擷取了"Access Key"和"Secret Key"
然後你需要先下載一個庫檔案http://aws.amazon.com/code/Amazon-SES...,第一次使用需要先驗證你是否是寄件匣的所有者,你需要執行下列代碼
require_once 'ses.php';$ses = new SimpleEmailService('Access Key Here', 'Secret Key Here');// 這裡填你需要作為寄件匣的郵箱地址,這個地址必須存在,因為它會發一封郵件過去驗證print_r($ses->verifyEmailAddress('user@example.com'));
如果成功的話,會返回類似下面的內容
Array( [RequestId] => 1b086469-291d-11e0-85af-df1284f62f28)
這時候,登入到你剛才填寫的郵箱裡去,你會收到一封驗證郵件,點擊郵件裡的驗證鏈結接即可完成驗證步驟。
但是注意,這時候你還只能向自己發送郵件,不能其他任何第三方郵箱發送,因為此時你只是開發人員狀態,如果你需要向其他使用者發送郵件,你需要向亞馬遜“提出生產環境許可權申請(Request Production Access)”。
點擊這個連結提交申請,可能需要你填寫每天發送的限額,你可以根據自己的需要申請,反正以後也是可以調整的。
需要注意的是你的限額不是一部到位的,也就是說如果你提出每天發送1萬封郵件的限額,那麼你第一天大概只能發送100封,然後第二天發送500封,以此類推,大概一周后你就可以發送一萬封郵件了。這也是為了防止垃圾郵件製造者濫用這一服務。申請是人工審核的,所以需要等待一會,不過也沒有幾個小時。
當這一切都完成的了後,你就可以正常使用ses了,這裡有php代碼的樣本,非常簡單http://www.orderingdisorder.com/aws/s...
update
發送中文的問題,只需要設定下編碼即可
$m = new SimpleEmailServiceMessage();$m->addTo('recipient@example.com');$m->setFrom('user@example.com');$m->setSubject('我是中文標題');$m->setMessageFromString('我是中文內容.');// 再這裡設定標題和內容編碼$m->setSubjectCharset('UTF-8');$m->setMessageCharset('UTF-8');print_r($ses->sendEmail($m));
update
如果需要發送的是html內容,則需要使用setMessageFromString的第二個參數,這是專門用來發送html內容的,比如
// 第一個參數可以留空$m->setMessageFromString(NULL, '這是html的測試
只是一個測試
');
如果要設定發送人名稱的話,可以在setFrom的時候按照'寄件者名稱 <郵箱地址>'的格式來設定,比如
$m->setFrom('Joyqi ');
但是如果你要把上面的Joyqi換成中文的話就會出現亂碼,這時候你需要自己用base64_encode手動編碼下,並指定編碼格式,比如
// 編碼函數function address_encode($str) { return '=?UTF-8?B?' . base64_encode($str) . '?=';}$m->setFrom(address_encode('測試中文寄件者') . ' ');
好的,謝謝了,下載一個庫檔案,這個庫頁面打不開,是不是ses.php?如果是的話我去其他地方下載,你最後提到的例子串連裡面有
很簡單,很好用!
Notice: Undefined property: SimpleEmailServiceRequest::$resource in C:\xampp\htdocs\husili\email\ses.php on line 491
Warning: SimpleEmailService::sendEmail(): 60 SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in C:\xampp\htdocs\husili\email\ses.php on line 357