Почта Google App Engine.Отправить возвращает "TypeError: unhashable instance" в python2.7/smtplib.py


Я пытаюсь локально отправлять почту через сервер разработки Google App Engine:

dev_appserver.py --show_mail_body true --smtp_host=xxx --smtp_port=25 --smtp_user=xxx --smtp_password=xxx app.yaml


if err := mail.Send(c, &mail.Message{
    Sender:  "xxx@xxx.com",
    To:       []string{"xxx@xxx.com"},
    Subject:  "Test",
    Body:     "Text Body",
    HTMLBody: "HTML Body",
}); err != nil {
    c.Errorf("%v", err)
}

К сожалению, это приводит к следующей ошибке:

  File "/usr/local/Cellar/python/2.7.8_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/smtplib.py", line 731, in sendmail
    senderrs[each] = (code, resp)
TypeError: unhashable instance

Может кто - нибудь помочь мне это исправить? --enable_sendmail true работает кстати. обратная связь .

1 2

1 ответ:

Этот бит smtplib.py обрабатывает ошибку из rcpt(), которая пыталась отправить rcpt TO:xxx@xxx.com в smtp. Итак, есть два вопроса: на что жалуется rcpt и что с unhashable instance. Для последнего я рекомендую подать отчет об ошибке. Код не должен этого делать. Для первого было бы очень соблазнительно поместить некоторую простую отладку print в smtplib.py прямо над senderrs[each] = (code, resp). Возможно, существует какая-то простая восходящая ошибка, которую smpt показывает вам, обход которой может устранить необходимость в сортировке unhashable экземпляр (который, как я предполагаю, вызван кодом на стороне GAE).