2012-04-16 59 views
4

發送電子郵件據有可能代表在當前登錄用戶發送使用GAE的電子郵件中的文件,如果用戶有一個Gmail或谷歌Apps帳戶:代表谷歌Apps的用戶

爲了安全起見,郵件的發件人地址必須是應用程序管理員的 電子郵件地址或應用程序的任何有效的 電子郵件接收地址(請參閱接收郵件)。如果用戶的帳戶是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 = '[email protected]' 
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 
+0

不要使用'logging.error',使用'logging.exception',它會爲你記錄堆棧跟蹤。請不要,不要,除了例外,電子!儘管如此,請在你的問題中包括完整的堆棧跟蹤。 – 2012-04-17 06:22:43

+0

您是否嘗試過很多Google Apps帳戶? 如果您向我發送(通過電子郵件很好,我是名字+ google.com上的最後一個首字母),那麼您可以嘗試跟蹤此問題。謝謝! – 2012-04-17 13:12:43

+0

@Moishe - 感謝您的提供,我通過電子郵件向您發送了帳戶詳細信息,並且我已經通過多個Google Apps帳戶嘗試了此操作。 – 2012-04-17 18:00:19

回答

2

它看起來像問題是,你的應用程序正在使用聯合登錄,這是一個實驗性的功能,並且不會發送代表谷歌的工作應用帳戶。您可以在管理控制檯的「應用程序設置」頁面中更改此設置。

我會將其添加到文檔中。