我在 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 的全新安装进行了测试。一切正常。