我正在尝试通过Amazon SES从我的django应用发送邮件,但我不断收到以下错误:
smtplib.SMTPSenderRefused:(501,b'Invalid MAIL FROM address提供”,'=?utf-8?q?AKIAWMDVL5UEWNT3ODOO?=')
这些是我正在使用的设置:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'email-smtp.ap-south-1.amazonaws.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'smtp credential key'
EMAIL_HOST_PASSWORD = 'smtp credential password'
EMAIL_USE_TLS = True
这是代码:
class CompanyCreateAPIView(APIView):
permission_classes = (permissions.AllowAny,)
def post(self, request):
email = request.data["company_email"]
phone = request.data["company_phone"]
def random_with_N_digits(n):
range_start = 10 ** (n - 1)
range_end = (10 ** n) - 1
return randint(range_start, range_end)
code = random_with_N_digits(4)
subject = 'Comapny Creation'
message = 'Company Code is {}'.format(code)
email_from = settings.EMAIL_HOST_USER
recipient_list = [str(email), ]
send_mail(subject, message, email_from, recipient_list)
我尝试更改端口,但是它不起作用,我已经在SES中验证了电子邮件地址。我丢失了什么?
您可能不希望将SMTP凭据用户名用作“电子邮件发件人”值。那应该是人类可读的内容,无论您希望收件人将什么作为电子邮件的发件人地址。该地址和/或域也需要在SES设置中列入白名单。
在Django的settings.py
中,将DEFAULT_FROM_EMAIL
设置设置为该地址:
DEFAULT_FROM_EMAIL
除非您要对特定电子邮件覆盖DEFAULT_FROM_EMAIL = '[email protected]'
,否则不要将email_from
作为显式设置传递给它(例如,对于某些电子邮件,从send_mail
发送,对于其他类型的电子邮件,从info@...
发送)。