如何使用python发送电子邮件[关闭]

Posted

技术标签:

【中文标题】如何使用python发送电子邮件[关闭]【英文标题】:How to send an email with python [closed] 【发布时间】:2018-06-26 22:08:36 【问题描述】:

使用python发送电子邮件的过程是什么。我在研究中发现的结果要么与我尝试的不同,要么在我尝试实际使用它时不起作用。这似乎不是一项复杂的任务。

【问题讨论】:

你是用什么发送的?谷歌的api,微软? 我在用python? 您为此导入了哪些库?在代码的顶部,当您编写 import ... 时,您要导入的是什么?另外 - 您需要 (i) 解释您遇到的确切问题以及您遇到的任何错误,以及 (ii) 附上您的代码示例,否则这个问题将很快被否决或关闭。 您需要一个 SMTP 服务器,是的。例如常用的 Gmail。 SO 不是编码服务。如果您不会编程,我建议您使用 Google 获取免费教程并观看 YouTube 视频。 【参考方案1】:

我在 python3.6.3 中制作了它,之后我将代码重建为 python3.2.6,但它可以工作。 :)

首先我们要导入一些标准 Python 库中的东西。

import smtplib
from getpass import getpass
from email.mime.text import MIMEText

提示! 如果您想从 gmail 发送电子邮件,则必须启用不太安全 应用:https://myaccount.google.com/lesssecureapps


我们必须发一封电子邮件,所以:

sender = 'example_sender@gmail.com'
receiver = 'example_receiver@gmail.com'

content = """The receiver will see this message.
            Best regards"""

msg = MIMEText(content)
msg['From'] = sender
msg['To'] = receiver
msg['Subject'] = 'Simple app script'

提示!当然,您也可以使用以下命令从文件中读取内容:

with open('/path/to/your/file', 'r') as file:
    content = file.read()

现在我们可以处理“神奇”的服务器端了。


提示!您可以在电子邮件设置中轻松找到服务器名称。 (IMAP/POP 页) 这里有我找到的服务器列表: https://www.arclab.com/en/kb/email/list-of-smtp-and-pop3-servers-mailserver-list.html


gmail 的解决方案,但它可以与任何服务器一起使用:

smtp_server_name = 'smtp.gmail.com'
#port = '465' # for secure messages
port = '587' # for normal messages

提示!这些端口的差异有答案: What is the difference between ports 465 and 587?


我认为这个代码示例很简单。通过 smtplib.SMTP_SSL 我们只能通过安全端口 (465) 处理服务器。在其他情况下,我们使用不同的方法。

if port == '465':
    server = smtplib.SMTP_SSL(':'.format(smtp_server_name, port))
else :
    server = smtplib.SMTP(':'.format(smtp_server_name, port))
    server.starttls() # this is for secure reason

server.login(sender, getpass(prompt="Email Password: "))
server.send_message(msg)
server.quit()

当服务器要登录时,您必须在 shell 提示后输入密码。

就是这样。我从命令行在 Linux 上运行了它。

请随时提问! :)

PS。我在 Windows 7 上对 python 3.2.2 的全新安装进行了测试。一切正常。

【讨论】:

这个好像行得通,我回家测试一下。 我得到了这个:回溯(最近一次调用最后):文件“C:/Python32/email.py”,第 1 行,在 中导入 smtplib 文件“C:\Python32\lib\ smtplib.py”,第 47 行,在 中 import email.utils 文件“C:/Python32\email.py”,第 3 行,在 from email.mime.text import MIMEText ImportError: 没有名为 mime 的模块。文字 是的,它有效。我在 Windows 7 上尝试过,全新安装了 python 3.2.2。我的电子邮件收到了一条消息。 :) 尝试重新安装 python 或简单地安装新版本。 @Iszpiczakowski 我在 Windows 10 上【参考方案2】:

试试这个代码!

import smtplib

# Import the email modules we'll need
from email.mime.text import MIMEText

# Open a plain text file for reading.  For this example, assume that
# the text file contains only ASCII characters.
fp = open(textfile, 'rb')
# Create a text/plain message
msg = MIMEText(fp.read())
fp.close()

# me == the sender's email address
# you == the recipient's email address
msg['Subject'] = 'The contents of %s' % textfile
msg['From'] = me
msg['To'] = you

# Send the message via our own SMTP server, but don't include the
# envelope header.
s = smtplib.SMTP('localhost')
s.sendmail(me, [you], msg.as_string())
s.quit()

【讨论】:

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

如何正确地从本地主机发送电子邮件 [关闭]

如何配置 Django 通过 Postfix 发送邮件? [关闭]

通过电子邮件发送 .csv 后,如何使用 PHP 下载 .csv 文件? [关闭]

使用 Swift 发送电子邮件 [关闭]

如何在html中自动发送电子邮件[关闭]

ActionMailer在测试模式下发送真实的电子邮件! - 如何关闭?