5

これが私の電子メール関連の dev_appserver オプションです。

--smtp_host=smtp.gmail.com --smtp_port=25 --smtp_user=me@mydomain.com --smtp_password="password"

現在、これはまだ機能せず、Google が新しい dev_appserver をリリースするたびに、api/mail_stub.py を編集して、このS/O answerに従ってローカルで動作させる必要があります。

ただし、この回避策でさえ機能しなくなりました。次の例外が発生します。

SMTPSenderRefused: (555, '5.5.2 Syntax error. mw9sm14633203wib.0 - gsmtp', <email.header.Header instance at 0x10c9c9248>)

私より賢い人は、それを修正する方法を知っていますか?

更新name@domain.com山かっこスタイル ( ) を使用するのではなく 、単純な文字列 ( ) の「プレーンな」形式で電子メールアドレス (送信者と受信者など) を使用して、dev_appserver で送信する電子メールを取得できましたName <name@domain.com>。これは本番環境では問題になりません。受信者と送信者の電子メール アドレスは、mail.send_mail通話で山かっこを使用できます。dev_appserver と本番環境の間でこの異なる動作についてチケットを作成しました: https://code.google.com/p/googleappengine/issues/detail?id=10211&thanks=10211&ts=1383140754

4

2 に答える 2

2

「送信者」が文字列ではなく「email.header.Header」インスタンスとして開発サーバーに保存されるようになったためです(SDK 1.8.3以降だと思います)。

私のテストから、「Name」のような「From」文字列がsmtplib.SMTP.sendmailに渡されると、文字列を解析して、SMTP 送信者として使用する山括弧内の部分を見つけ、「」を与えます。ただし、このパラメーターが「email.header.Header」である場合は、単に文字列に変換され、それ以上の解析なしで使用され、">" が指定されるため、問題が発生します。

このパラメータを文字列に変換するために、Issue Trackerに google/appengine/api/mail_stub.py に投稿したばかりのパッチを次に示します (私にとってはうまくいきます)。

--- google/appengine/api/mail_stub-orig.py      2014-12-12 20:04:53.612070031 +0000
+++ google/appengine/api/mail_stub.py   2014-12-12 20:05:07.532294605 +0000
@@ -215,7 +215,7 @@


       tos = [mime_message[to] for to in ['To', 'Cc', 'Bcc'] if mime_message[to]]
-      smtp.sendmail(mime_message['From'], tos, mime_message.as_string())
+      smtp.sendmail(str(mime_message['From']), tos, mime_message.as_string())
     finally:
       smtp.quit()
于 2014-12-12T20:33:34.413 に答える