4

ドキュメントによると、そのユーザーが Gmail または Google Apps アカウントを持っている場合、現在ログインしているユーザーの代わりに GAE を使用して電子メール メッセージを送信することが可能です。

セキュリティ上の理由から、メッセージの送信者アドレスは、アプリケーションの管理者の電子メール アドレス、またはアプリの有効な電子メール受信アドレスである必要があります (メールの受信を参照)。ユーザーのアカウントが Gmail アカウントであるか、Google Apps によって管理されているドメインにある場合、送信者は、現在ログインしているユーザーの Google アカウントのメール アドレスにすることもできます。

次のコードは、Gmail ユーザーに代わってメールを送信する場合に機能しますが、Google Apps ユーザーには機能しません。Google Apps ユーザーからメールを送信しようとすると、「承認されていない送信者」エラーが発生します。

current_user = users.get_current_user()
message = mail.EmailMessage()
message.sender = current_user.email()
message.subject = 'subject text'
message.to = 'joe@example.com'
message.body = 'body text'
if message.is_initialized():
    try:
        message.send()
    except Exception, e:
        logging.error('Unable to send email update: %s' % e)
else:
    logging.error('Email message improperly initialized')

私は何が欠けていますか?知っておくべき他の依存関係はありますか?

編集:

完全なスタック トレース:

Unauthorized sender
Traceback (most recent call last):
  File "/base/data/home/apps/s~core-comps/1.358275951854397525/handler_cs_ticket.py", line 274, in sendEmailCopyToClient
    message.send()
  File "/base/python_runtime/python_lib/versions/1/google/appengine/api/mail.py", line 900, in send
    raise ERROR_MAP[e.application_error](e.error_detail)
InvalidSenderError: Unauthorized sender
4

1 に答える 1

2

問題は、アプリケーションが Federated Login を使用していることにあるようです。これは実験的な機能であり、Google Apps アカウントに代わって送信すると機能しません。これは、管理コンソールの「アプリケーション設定」ページで変更できます。

これをドキュメントに追加します。

于 2012-04-17T20:48:34.770 に答える