使用SES發郵件

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章