Python发送邮件 - 使用冒号导致无输出

5 投票
2 回答
1271 浏览
提问于 2025-04-17 01:21

我遇到了一个很奇怪的问题,花了我一个多小时才搞明白。我有一个用Python写的cgi脚本,它可以接收表单数据并把这些数据转发到一个邮箱。问题是,如果字符串里有冒号,就会导致Python在邮件里什么都不输出。

有没有人知道这是为什么呢?

举个例子:

output = "Print- Customer"

这个是可以正常工作的:

output = "Print: Customer"

但是这个却什么都不打印。

我的邮件功能基本上是这样的:

server.sendmail(fromaddr, toaddrs, msg)

其中msg = output

我只是想知道,冒号在Python字符串输出中是不是个特殊字符。

2 个回答

2

让我来猜几种可能的情况:

  1. 邮件其实是发出去的,但内容看起来是空的(你的问题没有提到这一点)。
  2. 你没有使用Python自带的邮件发送库。
  3. 如果你在邮件客户端打开邮件,查看邮件头部,会看到有一行“print:”。

如果是这样的话,问题在于你没有在邮件头的最后加上“\r\n”这对符号,导致邮件客户端把“print:”当成邮件头,而把“print -”当成邮件内容的一部分,这样就形成了一个格式不正确的邮件。

如果你在邮件头后面加上“\r\n”,那么一切应该就正常了。

6

在Python的字符串输出中,冒号并不是一个特殊字符,但在电子邮件的头部信息中,它是有特别意义的。你可以试着在输出中插入一个空行:

output = "\nPrint: Customer"

撰写回答