това е моят settings.py:
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.
В django изпратих имейл с този ред ([email protected] се заменя с gmail акаунт, който е в потвърдения имейл списък):
send_mail("Subject", "content", "[email protected]", [email], fail_silently=False)
Това не проработи. Изпращането на тестов имейл от конзолата на SES (изберете един от имейлите в потвърдените имейли и щракнете върху бутона за изпращане на тестов имейл) обаче работи.
Този документ казва че мога да изпращам имейл чрез командния ред с команда openssl. И така, направих ssh към машината EC2 и използвах:
openssl s_client -crlf -quiet -starttls smtp -connect email-smtp.us-east-1.amazonaws.com:25
Забележете, че използвах 25 тук, когато използвах порт 465, той изведе:
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 Невалидни идентификационни данни за удостоверяване. Възможно ли е да съм използвал грешни идентификационни данни? но копирам потребителското име и паролата направо от страницата за генериране на smtp потребител и парола.
Също така се опитах да прикача правилата на AmazonSESFullAccess към всички потребители на IAM, но нищо не се случи.
Използвам Django 1.8.2. Опитах Django-ses, но и той не работи (синтактична грешка при изпълнение на тестовете, не поддържа python 3?)
АКТУАЛИЗАЦИЯ
Промених порта на 587 и използвам USE_TLS True и сега мога да изпращам_mail от django shell. Поставих функцията в моето приложение 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 от обвивката и тя работи.
АКТУАЛИЗАЦИЯ
Оказва се, че мога също да използвам порт 465 и USE_SSL True и да мога да изпращам имейл от django shell. но все още не работи в views.py