以STMP协议使用阿里云邮件推送产品发送含附件邮件失败(吐槽)

2016年8月7日 8171点热度 0人点赞 0条评论

这几天我在准备新的项目,需要用到大量的邮件推送服务支撑,肯定不能用126、163、qq之类的,于是使用了阿里云的邮件推送服务,价格比较实惠。但是,从昨晚20点开始折腾到今早6:34,他喵的带附件的邮件无法被亚马逊的邮件服务器接收。一晚上呀!!!哥呀,我给自己的QQ、GMAIL邮箱发测试邮件,可以收到邮件,一切正常,就他喵的亚马逊收不到。

起初我以为自己程序写错了,MIME协议使用没问题呀,以下是程序:

 

# coding=utf-8
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email import encoders
import smtplib
from email.utils import parseaddr, formataddr
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email import utils
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.utils import parseaddr, formataddr
from email.mime.application import MIMEApplication


def _format_addr(s):
	name, addr = parseaddr(s)
	return formataddr((Header(name, 'utf-8').encode(), addr))


stmp_user = "kindle@mail.nanguoyu.us"
password = "我是密码君"
smtp_server = "smtpdm.aliyun.com"
from_addr = "卡尺姑娘<kindle@mail.nanguoyu.us>"
to_addr = "nanguoyu_alice@kindle.cn"
a = "nanguoyu_alice@kindle.cn"
filename = 'E:\\workplace\\tomato_kindle\\book\\论文写作国家标准.doc'
book = '论文写作国家标准.doc'
'''邮件正文'''
msg = MIMEMultipart('mixed')
msg['From'] = _format_addr(from_addr)
msg['To'] = _format_addr(to_addr)
msg['Subject'] = Header(book[:book.find('.')], 'utf-8').encode()
msg['Date'] = utils.formatdate(localtime=1)

msg.attach(MIMEText('我是正文君'.encode('utf-8'), _charset='utf-8'))


# 添加附件就是加上一个MIMEBase,从本地读取一个图片:
with open(filename, 'rb') as f:
	# 设置附件的MIME和文件名,这里是png类型:
	mime = MIMEBase('application', 'octet-stream', filename=book)
	# 加上必要的头信息:
	mime.add_header('Content-Disposition', 'attachment', filename=book)
	mime.add_header('Content-ID', '<0>')
	mime.add_header('X-Attachment-Id', '0')
	# 把附件的内容读进来:
	mime.set_payload(f.read())
	# 用Base64编码:
	encoders.encode_base64(mime)
	# 添加到MIMEMultipart:
	msg.attach(mime)

try:
	server = smtplib.SMTP(smtp_server, 25)
	server.set_debuglevel(1)
	server.login(stmp_user, password)
	server.sendmail(stmp_user, [to_addr], msg.as_string())
	server.quit()
except smtplib.SMTPException:
	print("Error: 无法发送邮件")

 

琢磨着一直这么着也不是办法,找出万年不用的126邮箱,我天竟然发过去了。

我已经不想在阿里云发工单了,看都不想看。

另,现在QQ邮箱已经屏蔽了我的邮件域名。23333333333333

Dong Wang

Master student of computer science at Uppsala University in Sweden. My primary research interests are deep learning, computer vision, federated learning and internet-of-things.

文章评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据