如何使用python发送电子邮件

时间:2018-01-17 22:31:42

标签: python python-3.x email

我没有使用python发送电子邮件的经验,我一直在做一些研究,似乎你需要一些服务器。他们从一开始就没有解释如何做到这一点我很困惑,有人可以告诉我怎么做?

我使用的是Windows 10和python 3.2.2

2 个答案:

答案 0 :(得分:5)

我是在python3.6.3中创建的,之后我将代码重建为python3.2.6,但它确实有效。 :)

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

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

提示!   如果你想从gmail发送电子邮件,你必须启用不太安全的   app: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。我在新安装的python 3.2.2上在Windows 7上测试过它。一切正常。

答案 1 :(得分:1)

试试这个代码!

[[1, 2], [2, 3], [3, 4]]