Stu*_*Cat 10 python email smtplib
我当前的脚本允许我发送电子邮件很好,但只有一些它不喜欢的字符,特别是':'在这个示例中.
import smtplib, sys
mensaje = sys.argv[1]
def mailto(toaddrs, msg):
fromaddr = 'myemailblabla'
username = 'thisismyemail'
password = '122344'
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.login(username, password)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()
mailto('test@gmail.com', mensaje)
Run Code Online (Sandbox Code Playgroud)
如果我写一个示例消息,例如,让我们说它"Hi there\n how are you?"工作正常,但让我说我尝试发送一个网址http://www.neopets.com,电子邮件发送空白.我相信':'这个问题的原因,所以我试图逃避它,但没有.
msw*_*msw 15
问题是,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.com
http: //www.example.com
Run Code Online (Sandbox Code Playgroud)
虽然这是合法邮件标题,但邮件传输代理和邮件用户代理应忽略他们不理解的明显标题字段.并且因为RFC822标头一直持续到第一个空行并且http:看起来像标题行,所以它被解析为好像它是标题.如果给出换行符:
mensaje = '\nhttp://www.example.com'
Run Code Online (Sandbox Code Playgroud)
然后它按预期工作.虽然电子邮件技术上只需要smtplib邮件内容提供的"信封",如果您希望收件人(及其邮件程序)能够很好地处理邮件,您应该使用电子邮件模块生成正文.
添加
基于doctest,smtplib.py它看起来好像这是一个有意的功能,允许调用者sendmail()附加到标题:
>>> msg = '''\\
... From: Me@my.org
... Subject: testin'...
...
... This is a test '''
>>> s.sendmail("me@my.org", tolist, msg)
Run Code Online (Sandbox Code Playgroud)
其中From:和Subject:线是我上面提到的"漂亮"标题的一部分.