为什么我的EC2可以通过Gmail发送电子邮件,但不能从自定义域发送电子邮件?

时间:2019-05-02 23:45:48

标签: python django amazon-ec2

我的django邮件有问题,显然我可以使用gmail帐户发送电子邮件,没有问题,但是我无法从自定义域电子邮件发送任何电子邮件。 有一个小问题,我的SMTP SSL电子邮件在本地有效,但是在EC2实例上加载后它什么也没发送。

我尝试从SMTPSSL更改为仅SMTP,但仍然无法正常工作,我也尝试了一个heroku实例,但是再次,heroku实例甚至没有从gmail作为EC2实例发送。

ACCOUNT_EMAIL = os.environ['ACCOUNT_EMAIL']
ACCOUNT_PASSWORD = os.environ['ACCOUNT_PASSWORD']
# EMAIL_PROVIDER = 'smtp.gmail.com' //gmail configurations
# EMAIL_SERVER_PORT = 587
EMAIL_PROVIDER = 'krishna.hosting-mexico.net'
EMAIL_SERVER_PORT = 465
SECURITY_EMAIL_SENDER = ACCOUNT_EMAIL


def send_driver_welcome_email(user_email):
    from_email_address = EMAIL
    from_email_address_password = PASSWORD
    htmly     = get_template('driver_welcome_email.html')

    message = MIMEMultipart('alternative')
    message['Subject'] = 'Bienvenido a TAXI 2.0'
    message['From'] = from_email_address
    message['To'] = user_email

    html_content = htmly.render(None)

    part1 = MIMEText(html_content, 'html')

    message.attach(part1)

    server = smtplib.SMTP(EMAIL_PROVIDER, EMAIL_SERVER_PORT)
    #server = smtplib.SMTP_SSL(EMAIL_PROVIDER, EMAIL_SERVER_PORT) //This works locally
    server.ehlo()
    server.starttls()
    server.login(from_email_address, from_email_address_password)
    server.sendmail(from_email_address, user_email, message.as_string())
    server.quit()

在我的控制台上,我得到了错误:(今天的测试)

...
Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/django/core/handlers/exception.py", line 39, in inner
    response = get_response(request)
  File "/usr/lib/python3.7/site-packages/django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/usr/lib/python3.7/site-packages/django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/lib/python3.7/site-packages/django/contrib/auth/decorators.py", line 23, in _wrapped_view
    return view_func(request, *args, **kwargs)
  File "/home/mauricio/Documents/vast-reef-49088/touchtaxiapp/views.py", line 104, in manager_add_driver
    send_driver_welcome_email(user_form.cleaned_data['username'].lower())
  File "/home/mauricio/Documents/vast-reef-49088/touchtaxiapp/apis.py", line 115, in send_driver_welcome_email
    server = smtplib.SMTP(EMAIL_PROVIDER, EMAIL_SERVER_PORT)
  File "/usr/lib/python3.7/smtplib.py", line 251, in __init__
    (code, msg) = self.connect(host, port)
  File "/usr/lib/python3.7/smtplib.py", line 338, in connect
    (code, msg) = self.getreply()
  File "/usr/lib/python3.7/smtplib.py", line 394, in getreply
    raise SMTPServerDisconnected("Connection unexpectedly closed")
smtplib.SMTPServerDisconnected: Connection unexpectedly closed
[02/May/2019 19:30:43] "POST /manager/driver/add/ HTTP/1.1" 500 109428

我不知道为什么会这样,而且Google并没有太大帮助,因为很多页面建议使用SES,但是我没有使用它的兴趣,因为我想使用我的网站域和无需为亚马逊支付任何应有的费用。

1 个答案:

答案 0 :(得分:0)

因此,如果有人遇到相同的问题,只需将端口更改为587,即可在Heroku和EC2实例上正常工作。

此外,请记住,我的解决方案不会将已发送的电子邮件复制到域的“发送”文件夹中。

相关问题