我正在使用sendmail在本地运行时从AppEngine发送邮件(即dev_appserver.py)。这是我的代码:
mail.send_mail(
sender="SenderName <sender@domain.name",
to= "ReceiverName <receiver@domain.name>",
subject=subject,
body=text,
html=html)
当我执行此代码时,使用正确的电子邮件和其他参数,我收到此错误:
/bin/sh: Syntax error: end of file unexpected
ERROR 2010-12-23 19:31:16,459 mail_stub.py:177] Error sending mail using sendmail: [Errno 32] Broken pipe
经过一番调查后发现,由于“发件人”和“收件人”电子邮件的语法错误(即管道损坏)。如果我只保留电子邮件(而不是名称),问题就解决了。这告诉我AppEngine正在将参数转储到sendmail而没有合适的引号。如下所示:
sendmail .... SenderName <sender@domain.name> ReceiverName <receiver@domain.com>
显然,这会导致参数冲突,因为shell无法知道这是发件人电子邮件的一部分,这导致了问题。
知道如何解决这个问题吗?我想在电子邮件中保留姓名。
顺便说一下,当我将代码上传到AppEngine时,这样可以正常工作,但我想在本地解决它,以避免每次测试时都要更改代码。
答案 0 :(得分:2)
App Engine问题跟踪器中存在此问题,该跟踪器包含一个补丁,用于在http://code.google.com/p/googleappengine/issues/detail?id=3106
处添加地址周围的引号