一、准备工作
在使用Python的SMTP库进行邮件发送之前,我们需要进行一些准备工作,具体如下:
1. 准备一封待发送的邮件。可以是纯文本邮件或HTML格式邮件。在代码中需要指定发送方、接收方、邮件主题、邮件内容等信息。
2. 配置邮件服务器信息。我们需要获取邮件服务器的域名、端口号以及登录邮件服务器所需要的账号和密码。
3. 导入Python的smtplib库。这是Python内置的SMTP协议实现模块,可以用于发送邮件。
import smtplib
from email.mime.text import MIMEText
from email.header import Header
导入smtplib库以及使用MIMEText类和Header类来构造邮件内容和邮件头信息。
二、构造邮件内容
在构造邮件内容时,我们需要指定邮件的类型(是纯文本邮件还是HTML格式邮件)以及内容。
1. 纯文本邮件
# 构造纯文本邮件内容
msg = MIMEText('这是一封纯文本邮件', 'plain', 'utf-8')
2. HTML格式邮件
# 构造HTML格式邮件内容
html = """
Hello World!
这是一封HTML格式邮件
"""
msg = MIMEText(html, 'html', 'utf-8')
在创建邮件内容时,我们指定了邮件的类型(plain或html)和编码方式(utf-8)。
三、构造邮件头
邮件头是由多个字段组成的,包括发件人、收件人、主题、日期等信息。
# 构造邮件头
msg['From'] = Header('发件人名称', 'utf-8')
msg['To'] = Header('收件人名称', 'utf-8')
msg['Subject'] = Header('邮件主题', 'utf-8')
在构造邮件头时,我们使用Header类来指定邮件头信息。
四、连接邮件服务器
在发送邮件之前,我们需要连接到邮件服务器上。如果是使用SSL加密的SMTP服务器,需要使用SMTP_SSL类进行连接;否则可以使用SMTP类。
1. 使用SMTP_SSL连接SMTP服务器(使用QQ邮箱为例)
# 配置SMTP服务器信息
smtp_server = 'smtp.qq.com'
smtp_port = 465
smtp_user = 'xxx@qq.com'
smtp_password = 'xxx'
# 连接SMTP服务器
server = smtplib.SMTP_SSL(smtp_server, smtp_port)
server.login(smtp_user, smtp_password)
2. 使用SMTP连接SMTP服务器(使用163邮箱为例)
# 配置SMTP服务器信息
smtp_server = 'smtp.163.com'
smtp_port = 25
smtp_user = 'xxx@163.com'
smtp_password = 'xxx'
# 连接SMTP服务器
server = smtplib.SMTP(smtp_server, smtp_port)
server.login(smtp_user, smtp_password)
五、发送邮件
连接到SMTP服务器之后,我们就可以发送邮件了。
# 发送邮件
server.sendmail(smtp_user, ['xxx@xxx.com'], msg.as_string())
# 关闭连接
server.quit()
在sendmail方法中,我们需要指定发件人、收件人以及邮件内容。如果有多个收件人,可以使用列表来指定。msg.as_string()方法可以将邮件内容转换为字符串类型,方便发送。
六、完整代码示例
下面是一个完整的使用SMTP库进行邮件发送的示例代码:
import smtplib
from email.mime.text import MIMEText
from email.header import Header
# 配置SMTP服务器信息
smtp_server = 'smtp.qq.com'
smtp_port = 465
smtp_user = 'xxx@qq.com'
smtp_password = 'xxx'
# 构造邮件内容
html = """
Hello World!
这是一封HTML格式邮件
"""
msg = MIMEText(html, 'html', 'utf-8')
# 构造邮件头
msg['From'] = Header('发件人名称', 'utf-8')
msg['To'] = Header('收件人名称', 'utf-8')
msg['Subject'] = Header('邮件主题', 'utf-8')
# 连接SMTP服务器
server = smtplib.SMTP_SSL(smtp_server, smtp_port)
server.login(smtp_user, smtp_password)
# 发送邮件
server.sendmail(smtp_user, ['xxx@xxx.com'], msg.as_string())
# 关闭连接
server.quit()
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/242014.html