How to use SES, and Using SMTP to Send Email with Amazon SES
(1) 使用SES(Simple Email Service)發郵件的時候,我們需要添加一個發件者郵箱(verify email sender),SES使用這個發件者郵箱作爲發件者,添加完認證發信者之後,需要登錄發信者郵箱點擊確認連接。
SNS(簡單消息服務)還有個類似的功能,叫topic,類似郵件組,將多個verified receivers添加到一個topic,然後在CloudWatch或者其他的服務調用,來發羣郵件。這次先不討論SNS。
可以使用下面這小段代碼來添加verified sender
import boto.ses conn = boto.ses.connect_to_region('us-east-1') conn.verify_email_address('[email protected]')
對了,截止我寫這些時,SES只支持三個地區,Virginia,Ireland,Oregon(分別對應us-east-1, eu-west-1, us-west-2)
(2) 接來下我們收集SMTP credential相關信息
在SMTP Settings裏面我們可以看到SMTP相關信息,例如Virginia地區的:
Server Name: email-smtp.us-east-1.amazonaws.com Port: 25, 465 or 587 Use Transport Layer Security (TLS): Yes Authentication: Your SMTP credentials - see below.
然後在下面創建SMTP credential點擊創建,他就自動創建了一個IAM角色並授權,併產生一組了類似AccessKey的信息,不過名字變成Username和password,形如:
IAM User Name,Smtp Username,Smtp Password "ses-smtp-user.xxxx",AKIxxx,Aqbxxxxxxxxxxxxxxxxxx
(3) 這樣使用SMTP發郵件的信息收集全了。可使用ConfigObj來加載配置文件中的Credential,並用smtplib來創建發郵件的對象
import smtplib from configobj import ConfigObj cfg = ConfigObj(config_path) cfg_dict = cfg.dict() host = cfg_dict["server"] from_addr = cfg_dict["from_addr"] username = cfg_dict["username"] password = cfg_dict["password"] server = smtplib.SMTP(host) server.starttls() server.login(username, password) server.sendmail(from_addr, receivers, BODY) server.quit()
配置文件形如:
server = email-smtp.us-east-1.amazonaws.com from_addr = [email protected] username = AKIxxx password = Aqbxxxxxxxxxxxxxxxxxx