准备工作
- SMTP 服务器:您需要知道要使用的 SMTP 服务器地址、端口以及是否需要加密(如 SSL 或 TLS)
- 认证信息:大多数 SMTP 服务器要求发送者提供用户名和密码进行身份验证
- 收件人邮箱:指定接收邮件的目标邮箱地址
- 发件人邮箱:指定发送邮件的来源邮箱地址
安装必要的库
对于基本的 SMTP 发送,Python 内置的
smtplib
和
编写发送邮件的 Python 脚本
发送简单文本邮件
import smtplib
from email.mime.text import MIMEText
from email.header import Header
def send_simple_email(smtp_server, smtp_port, sender_email, sender_password, receiver_email, subject, body):
"""
使用SMTP协议发送简单的纯文本邮件。
参数:
- smtp_server (str): SMTP服务器地址。
- smtp_port (int): SMTP服务器端口号。
- sender_email (str): 发件人的电子邮件地址。
- sender_password (str): 发件人的电子邮件密码或应用专用密码。
- receiver_email (str): 收件人的电子邮件地址。
- subject (str): 邮件主题。
- body (str): 邮件正文内容。
"""
# 创建一个MIMEText对象,设置邮件内容为纯文本格式
message = MIMEText(body, 'plain', 'utf-8')
# 设置邮件头信息
message['From'] = Header(sender_email, 'utf-8') # 发件人
message['To'] = Header(receiver_email, 'utf-8') # 收件人
message['Subject'] = Header(subject, 'utf-8') # 主题
try:
# 根据SMTP服务器是否使用SSL来选择连接方式
if smtp_port == 465: # 如果是SSL端口
server = smtplib.SMTP_SSL(smtp_server, smtp_port)
else: # 否则假设是TLS端口
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls() # 开启TLS加密
# 登录SMTP服务器
server.login(sender_email, sender_password)
# 发送邮件
server.sendmail(sender_email, [receiver_email], message.as_string())
print("邮件发送成功")
except Exception as e:
print(f"发送邮件失败: {e}")
finally:
# 关闭SMTP服务器连接
server.quit()
# 测试函数
if __name__ == "__main__":
# 填写您的SMTP服务器信息和个人信息
smtp_server = "smtp.example.com" # SMTP服务器地址
smtp_port = 587 # SMTP服务器端口号(非SSL)
sender_email = "your_email@example.com" # 发件人邮箱
sender_password = "your_password" # 发件人密码或应用专用密码
receiver_email = "recipient@