问题是,
smtplib没有在邮件标题和邮件正文之间放置空白行,如我的测试的“显示原始”形式所示:
Return-Path: <me@gmail.com>Received: **REDACTED** Fri, 03 Aug 2012 06:56:20 -0700 (PDT)Message-ID: <501bd884.850c320b@mx.google.com>Date: Fri, 03 Aug 2012 06:56:20 -0700 (PDT)From: me@gmail.comhttp: //www.example.com
尽管这是合法的邮件头,但邮件传输代理和邮件用户代理应忽略它们不理解的明显的头字段。并且因为RFC822标头一直持续到第一行空白行,并且
http:看起来像标头行,所以将其解析为标头。如果给定换行符:
mensaje = 'nhttp://www.example.com'
然后它按预期工作。尽管从技术上来说,电子邮件只需要
smtplib邮件内容所提供的“信封”,但是如果您希望收件人(及其邮件发件人)能够很好地对待邮件,则应该使用电子邮件模块生成正文。
添加
基于其中的doctest,
smtplib.py这似乎是一项有意功能,允许的调用方
sendmail()追加到标头:
>>> msg = '''\ ... From: Me@my.org ... Subject: testin'... ... ... This is a test ''' >>> s.sendmail("me@my.org", tolist, msg)上面的
From:和
Subject:行是我上面提到的“ nice”标题的一部分。



