您的位置:

使用Python SMTP发送电子邮件的指南

一、SMTP协议简介

SMTP(Simple Mail Transfer Protocol)是一种用于发送电子邮件的标准协议。SMTP服务器提供了一种用于发送邮件的简单而强大的方式。使用Python可以轻松地通过SMTP协议发送电子邮件。在Python中,smtplib是负责与SMTP服务器通信的模块。

二、SMTP连接

在Python中,使用smtplib.SMTP类来连接SMTP服务器,SMTP类的构造函数需要两个参数:SMTP服务器的主机名和端口号。SMTP服务器的主机名可以是IP地址或域名。下面是连接SMTP服务器的代码示例:

import smtplib

smtp_server = "smtp.qq.com"
smtp_port = 465
smtp_username = "example@qq.com"
smtp_password = "password"

smtp_conn = smtplib.SMTP_SSL(smtp_server, smtp_port)
smtp_conn.login(smtp_username, smtp_password)

三、发送邮件

通过SMTP连接对象,可以使用sendmail方法发送邮件。该方法需要三个参数:发件人地址、收件人地址和邮件内容。

import smtplib

smtp_server = "smtp.qq.com"
smtp_port = 465
smtp_username = "example@qq.com" # 发件人地址
smtp_password = "password" # 邮箱密码
to_addr = "example2@qq.com" # 收件人地址
subject = "Python SMTP邮件测试" # 邮件主题
body = "这是一封PythonSMTP邮件测试。\n" # 邮件内容

msg = "From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n%s" % (smtp_username, to_addr, subject, body)

smtp_conn = smtplib.SMTP_SSL(smtp_server, smtp_port)
smtp_conn.login(smtp_username, smtp_password)
smtp_conn.sendmail(smtp_username, to_addr, msg)
smtp_conn.quit()

四、邮件内容设置

发送邮件时,需要设置邮件主题和内容。邮件主题和内容都可以包含HTML标签。可以使用email.mime模块中的MIMEText类来创建邮件主题和内容。

import smtplib
from email.mime.text import MIMEText

smtp_server = "smtp.qq.com"
smtp_port = 465
smtp_username = "example@qq.com" # 发件人地址
smtp_password = "password" # 邮箱密码
to_addr = "example2@qq.com" # 收件人地址

# 邮件主题
subject = "Python SMTP邮件测试"

# 邮件内容
content = "

这是一封PythonSMTP邮件测试。

邮件内容可以包含HTML标签。

" msg = MIMEText(content, "html", "utf-8") msg["Subject"] = subject msg["From"] = smtp_username msg["To"] = to_addr smtp_conn = smtplib.SMTP_SSL(smtp_server, smtp_port) smtp_conn.login(smtp_username, smtp_password) smtp_conn.sendmail(smtp_username, to_addr, msg.as_string()) smtp_conn.quit()

五、邮件附件

有时需要在邮件中添加附件。可以使用email.mime模块中的MIMEMultipart类来创建带有附件的邮件。

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication

smtp_server = "smtp.qq.com"
smtp_port = 465
smtp_username = "example@qq.com" # 发件人地址
smtp_password = "password" # 邮箱密码
to_addr = "example2@qq.com" # 收件人地址

# 邮件主题
subject = "Python SMTP邮件测试"

# 邮件内容
content = "

这是一封PythonSMTP邮件测试。

邮件内容可以包含HTML标签。

" # 创建一个带有附件的邮件 msg = MIMEMultipart() msg["Subject"] = subject msg["From"] = smtp_username msg["To"] = to_addr # 添加邮件内容 text = MIMEText(content, "html", "utf-8") msg.attach(text) # 添加附件 file_path = "test.zip" with open(file_path, "rb") as f: att = MIMEApplication(f.read()) att.add_header("Content-Disposition", "attachment", filename=file_path) msg.attach(att) smtp_conn = smtplib.SMTP_SSL(smtp_server, smtp_port) smtp_conn.login(smtp_username, smtp_password) smtp_conn.sendmail(smtp_username, to_addr, msg.as_string()) smtp_conn.quit()

六、小结

使用Python SMTP发送邮件非常简单,只需要连接SMTP服务器,设置邮件主题和内容,然后发送即可。使用email.mime模块可以创建带有附件的邮件。