使用 python 3.7.3 发送带附件的电子邮件

Posted

技术标签:

【中文标题】使用 python 3.7.3 发送带附件的电子邮件【英文标题】:Send email with attachment using python 3.7.3 【发布时间】:2021-12-22 08:42:53 【问题描述】:

我正在使用 python 3.7.3 运行 python 脚本。下面是代码。这没有做任何事情。它只是显示消息“已发送电子邮件”,实际上并不发送电子邮件。

此代码以前用于 Python 2.7,只是将“multipart”更改为“Multipart”。我不得不将 M 更改为 m,因为它会引发错误。现在,它不会抛出该错误。

我已检查机器上的 telnet 是否已启动。

telnet localhost 11
Trying 111.1.1.1.......
Connected to localhost.
Escape character is '^]'.
220 abcdef.com ESMTP Exim 4.92 Tue, 09 Nov 2021 11:19:10 -0500
quit

 telnet
telnet> quit

请帮忙。提前谢谢你。

#Send email with attachment

sender = 'abc@test.com'
receivers = 'xyz@test.com'



msg = email.mime.multipart.MIMEMultipart()
msg['Subject'] = 'Test script'
msg['From'] = 'abc@test.com'
msg['To'] = 'xyz@test.com'


# The main body is just another attachment
body = email.mime.text.MIMEText("""Please find the updated data in attached csv""")
msg.attach(body)

# CSV attachment
filename='/home/abc/python_scripts/test.csv'
with open(filename, "rb") as fs:
    part = MIMEBase('application', "octet-stream")
    part.set_payload(fs.read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment', filename=os.path.basename(filename))
msg.attach(part)

try:

    server = smtplib.SMTP('localhost',11)
    server.sendmail(sender, receivers, msg.as_string())
    server.close()

    print('Email Sent')

except SMTPException:
    print('Something went wrong...')

【问题讨论】:

【参考方案1】:

上面的脚本工作得很好。似乎服务器未正确设置以从“@test.com”发送电子邮件。 请随意在您的脚本中使用上述代码。

【讨论】:

您能否分享您必须对服务器进行哪些更改才能允许从该域发送电子邮件?

以上是关于使用 python 3.7.3 发送带附件的电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

Python SMTP 发送带附件电子邮件

Python+flask+flask-email发送带附件的电子邮件

使用 SendGrid 发送带附件的电子邮件

如何使用 InputStream 和 Spring 发送带附件的电子邮件?

在 golang 中使用 gmail API 发送带附件的电子邮件

GMAIL API 在 C# 中发送带附件的电子邮件