当前位置: 首页 > 知识库问答 >
问题:

从AWS使用SES发送电子邮件时出现"连接意外关闭"错误

许庆
2023-03-14

所以我正试图用SMTP和AWS向我自己发送电子邮件。我在配置中使用的电子邮件经过验证,因为我仍然在SES中使用沙盒模式。在运行脚本时,我不断收到错误连接意外关闭即使我尝试与OpenSSL连接,但它已连接,但显示在服务器响应中未找到STARTTLS,仍在尝试 连接后出错。

这是我的代码:

MAIL = {}
MAIL['USERNAME'] = 'AKIAXARHTFGFKCDAO7PD'
MAIL['PASSWORD'] = 'BE0tXPq8wteiKZYtgD2TgtfFTGhgFGOhUp3F0lG0uqn'
MAIL['HOST'] = 'email-smtp.eu-central-1.amazonaws.com'
MAIL['PORT'] = 465


# Set user code
            code = random.randrange(000000, 999999)
            # Send email to user
            print(code)
            print(current_user.email)
            msg = MIMEMultipart('alternative')
            msg['Subject'] = 'Ruby - Verification code'
            msg['From'] = 'amng835@gmail.com'
            msg['To'] = current_user.email
            msg.attach(MIMEText(f'Your verification code is: {code}', 'plain'))
            try:
                server = smtplib.SMTP(MAIL['HOST'], MAIL['PORT'])
                server.ehlo()
                server.starttls()
                server.ehlo()
                server.login(MAIL('MAIL_USERNAME'), MAIL('MAIL_PASSWORD'))
                server.sendmail('amng835@gmail.com', current_user.email, msg.as_string())
                server.close()
            except Exception as error:
                print('Failed to send message to user')
                print(error)

OpenSSL输出:

命令:

openssl s_client -connect email-smtp.eu-central-1.amazonaws.com:465 -starttls smtp

输出:

CONNECTED(00000005)
Didn't find STARTTLS in server response, trying anyway...
write:errno=0
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 372 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---

我的文档来源:https://docs.aws.amazon.com/ses/latest/DeveloperGuide/examples-send-using-smtp.html


共有1个答案

臧烨烁
2023-03-14

端口465似乎有一些问题。将代码更改为下面的代码,它将正常工作。

MAIL['PORT'] = 587
 类似资料:
  • 试图使用AWS简单电子邮件服务(SES)从apache airflow发送电子邮件,但返回的错误并不能帮助我解决问题。我认为这是SES中的一个配置问题,但我不确定要更改什么。 一般信息: 新的SES实例,已验证的电子邮件 气流1.10。10在Ubuntu 18.04(本地笔记本电脑)上运行 在一个单独的AWS帐户上,EC2实例也存在同样的情况 使用python操作符运行1 DAG,效果良好 发送电

  • 我们已将电子邮件服务从Mandrill更改为Amazon SES。我们将它与SMTP一起使用。 在Mandrill中,我们可以访问一些详细信息,例如: 邮件的原始内容 交货日期 是收件人查看的邮件 是否点击了邮件中的链接 但是在

  • 我使用AWS SES服务发送电子邮件与验证的测试电子邮件地址在SES和使用相同的来源。 我正试图将电子邮件发送到其他电子邮件地址,但无法发送。这是给我的错误“电子邮件地址未经验证。以下身份未通过在US-EAST-1地区的检查”。 发送电子邮件的代码参考:https://aws.amazon.com/premiumsupport/knowledge-center/lambda-send-email-

  • 我正在尝试用我的验证地址发送电子邮件(usertest@gmail.com),使用带有后缀的Ubuntu AWS实例 1)我从这个网站下载了一个“亚马逊简单电子邮件服务脚本” 我遵循指南,我可以使用以下行发送电子邮件: ./ses-send-email.pl--详细-k AWS证书-s"SES测试"-fusertest@gmail.comusertest@gmail.com 所以一切都很好。 2)

  • 我已经证实了以下几点 AWS SES不在沙箱中。我可以通过控制台发送电子邮件到未经验证的电子邮件标识。 我的Lambda函数有一个角色附加了对SES和Lambda的完全访问权限(因为它最初的基本测试给了完全的权限) 下面是AWS文档中的基本代码,只是硬编码了我的电子邮件id。但我无法收到任何电子邮件。lambda代码运行成功,但我没有收到电子邮件。 附加我的云监视日志以供参考

  • 我使用AWS SES发送电子邮件使用我的域名。发送工作正常。但是现在我想接收所有使用我的域名发送的电子邮件,比如SES中的abc@example.com。 我试图接收电子邮件使用规则集定义执行Lambda函数或存储电子邮件在S3桶。 当我尝试使用gmail发送电子邮件到我的域电子邮件时,S3桶中没有收到它,Lambda函数也没有执行。 到目前为止,我已经做了以下几件事: > 在DNS设置中为我的域