Python SMTP发送邮件


Python SMTP发送邮件

SMTP(Simple Mail Transfer Protocol)是因特网上的标准电子邮件传输协议,它用于电子邮件的发送和接收。Python语言提供了Smtp类,使用户能够通过Python脚本自动发送电子邮件。

步骤

下面几个步骤演示了如何使用Python发送邮件:

  1. 连接邮件服务器
  2. 登录邮件服务器
  3. 编写邮件内容
  4. 发送邮件
  5. 关闭邮件服务器连接

连接邮件服务器

在Python中,可以通过以下代码连接邮件服务器:

import smtplib

mail_host = "smtp.example.com"
mail_port = 25 # 端口号
mail_user = "yourusername"
mail_pass = "yourpassword"

smtpObj = smtplib.SMTP(mail_host, mail_port)

SMTP()类实例化时,需要还需要传入两个参数,即邮件服务器的地址和端口号。常用的邮件服务器的地址如下:

  • 新浪邮箱:smtp.sina.com.cn
  • 阿里云邮箱:smtp.mxhichina.com
  • 谷歌邮箱:smtp.gmail.com
  • QQ邮箱:smtp.qq.com

登录邮件服务器

使用SMTP类实例化的smtpObj对象,我们需要通过login()方法进行登录。

smtpObj.login(mail_user, mail_pass)

其中mail_user是指邮箱账号,而mail_pass是指邮箱密码。

编写邮件内容

编写邮件内容的代码如下:

from email.mime.text import MIMEText

mail_content = '这是一封测试邮件' # 邮件正文
message = MIMEText(mail_content, 'plain', 'utf-8') # 实例化MIMEText对象
message['Subject'] = 'Python SMTP测试邮件' # 邮件主题
message['From'] = mail_user # 发送者邮箱
message['To'] = 'receiver@example.com' # 接收者邮箱,可以使用逗号分隔多个邮箱

以上代码中,我们使用了email库中的MIMEText模块,MIME是互联网上的多用途邮件扩展,在Python中,通过MIMEText模块可以创建一个文本类型的邮件对象。

发送邮件

使用sendmail()方法来发送邮件:

smtpObj.sendmail(sender, receivers, message.as_string())

其中,sender指发送者邮箱,receivers指接收者邮箱(可包含多个),message.as_string()message对象转化为字符串形式。整个代码如下:

import smtplib
from email.mime.text import MIMEText

mail_host = "smtp.example.com"
mail_port = 25 # 端口号
mail_user = "yourusername"
mail_pass = "yourpassword"
sender = mail_user # 发送者邮箱
receivers = ['receiver@example.com'] # 接收者邮箱,可以使用逗号分隔多个邮箱

smtpObj = smtplib.SMTP(mail_host, mail_port)
smtpObj.login(mail_user,mail_pass)

mail_content = '这是一封测试邮件' # 邮件正文
message = MIMEText(mail_content, 'plain', 'utf-8') # 实例化MIMEText对象
message['Subject'] = 'Python SMTP测试邮件' # 邮件主题
message['From'] = mail_user # 发送者邮箱
message['To'] = ','.join(receivers) # 接收者邮箱,可以使用逗号分隔多个邮箱

smtpObj.sendmail(sender, receivers, message.as_string())

smtpObj.quit()

关闭邮件服务器连接

发送完毕后,关闭邮件服务器连接。关闭连接时不需要传入任何参数:

smtpObj.quit()

收尾

Python SMTP发送邮件非常简单方便,只需要遵循以上步骤,并注意正确填写SMTP、用户名和密码即可。