это мой settings.py:Django & Amazon SES SMTP. Не удается отправить электронную почту
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'email-smtp.us-east-1.amazonaws.com'
EMAIL_PORT = '465'
EMAIL_HOST_USER = config_data['EMAIL_HOST_USER']
EMAIL_HOST_PASSWORD = config_data['EMAIL_HOST_PASSWORD']
EMAIL_USE_SSL = True
Я проверил адреса электронной почты и также генерироваться SMTP учетные данные, которые я скачал учетные данные, содержащие имя пользователя IAM, Smtp имя пользователя, пароль Smtp. Я использовал имя пользователя smtp для EMAIL_HOST_USER и smtp-пароль для EMAIL_HOST_PASSWORD.
В Джанго, я послал по электронной почте с этой линией ([email protected] заменяется учетной записью GMAIL, которая находится в проверенном списке адресов электронной почты):
send_mail("Subject", "content", "[email protected]", [email], fail_silently=False)
Это не сработало. Отправка тестового письма с консоли SES (выберите одно из сообщений электронной почты в проверенных письмах и нажмите кнопку отправки тестовой электронной почты).
Этот document говорит, что я могу отправлять электронную почту через командную строку с помощью команды openssl. Таким образом, я сделал SSH к EC2 машине, и использование:
openssl s_client -crlf -quiet -starttls smtp -connect email-smtp.us-east-1.amazonaws.com:25
Обратите внимание, что я использовал 25 здесь, когда я использовал порт 465, он outputed:
didn't found starttls in server response, try anyway...
write:errno=32
Так вместо этого я попробовал порт 25, это связано (250 OK), а затем я напечатал:
AUTH LOGIN
334 VXNlcm5hbWU6
SMTP_USER
334 UGFzc3dvcmQ6
SMTP_PASSWORD
но выводимый: 535 Проверка подлинности учетных данных Invalid. Может быть, я использовал неправильные учетные данные? но я копирую имя пользователя и пароль прямо с страницы пользователя smtp и генерации пароля.
Я также попытался установить политику AmazonSESFullAccess всем пользователям IAM, но ничего не произошло.
Я использую Django 1.8.2. Пробовал Django-SES, но он не работает слишком (синтаксическая ошибка при выполнении тестов, он не поддерживает Python 3?)
UPDATE
Я изменил порт 587 и использовать USE_TLS Правда, и теперь я может send_mail из оболочки django. Я поставил функцию в моем приложении views.py:
def test_email(request):
send_mail("title", "content", "[email protected]", ["[email protected]"], fail_silently=False)
return get_return_object(request, status_code=1)
и urls.py Я положил это внутри urlpatterns:
url(r'^test_email/$', views.test_email, name="test_email"),
и когда я посетил URL, ничего не происходит. Я вызываю ту же функцию test_email из оболочки, и она работает.
UPDATE
Оказывается, что я могу также использовать порт 465 и USE_SSL Истинную и быть в состоянии send_mail от Джанго оболочки. но до сих пор она не работает в views.py
могли бы вы поставить сообщение об ошибке? Попробуйте создать новые учетные данные. –
, см. Обновленный раздел. Я изменил порт, и теперь я могу отправить почту из оболочки, но по какой-то причине я не могу отправить ее по URL-адресу – bysreg