Python发送邮件 - 使用冒号导致无输出
我遇到了一个很奇怪的问题,花了我一个多小时才搞明白。我有一个用Python写的cgi脚本,它可以接收表单数据并把这些数据转发到一个邮箱。问题是,如果字符串里有冒号,就会导致Python在邮件里什么都不输出。
有没有人知道这是为什么呢?
举个例子:
output = "Print- Customer"
这个是可以正常工作的:
output = "Print: Customer"
但是这个却什么都不打印。
我的邮件功能基本上是这样的:
server.sendmail(fromaddr, toaddrs, msg)
其中msg = output
我只是想知道,冒号在Python字符串输出中是不是个特殊字符。
2 个回答
2
让我来猜几种可能的情况:
- 邮件其实是发出去的,但内容看起来是空的(你的问题没有提到这一点)。
- 你没有使用Python自带的邮件发送库。
- 如果你在邮件客户端打开邮件,查看邮件头部,会看到有一行“
print:
”。
如果是这样的话,问题在于你没有在邮件头的最后加上“\r\n
”这对符号,导致邮件客户端把“print:
”当成邮件头,而把“print -
”当成邮件内容的一部分,这样就形成了一个格式不正确的邮件。
如果你在邮件头后面加上“\r\n
”,那么一切应该就正常了。
6
在Python的字符串输出中,冒号并不是一个特殊字符,但在电子邮件的头部信息中,它是有特别意义的。你可以试着在输出中插入一个空行:
output = "\nPrint: Customer"