# 背景知识
-
SMTP
Simple Mail Transfer Protocol(SMTP) ,简单邮件传输协议,其是一种 TCP/IP 协议,用于发送电子邮件。大多数邮箱都是使用 SMTP,例如 Gmail、Outlook、AppleMail、163 等。SMTP 服务器一般使用 25 端口来发送电子邮件。
发送过程:
- 邮件服务器利用 SMTP 将消息从邮件客户端发送到另一个电子邮件服务器
- 邮件服务器利用 SMTP 作为中继,转发电子邮件到其接收的电子邮件服务器
- 接收邮件服务器使用邮件客户端通过 IMAP 下载传入的邮件,并将其放入收件人邮箱
-
IMAP
Internet Message Access Protocol(IMAP),交互式网络存储协议,用于管理和检索电子邮件,并在不同设备之间同步。邮件客户端(例如手机端或者网页端邮箱)可以通过这种协议从邮件服务器中获取并下载邮件信息,不同客户端的邮件状态会保持一致。
可以理解为所有的邮件都保存在邮件服务器中,而 IMAP 作为一个中介,让邮件客户端可以读取服务器中的邮件。这也是邮件附件如果短时间不下载,会被清除的原因。因为电子邮件并未在本地保存。
# 发送脚本
一个简单的发邮件脚本,修改一下,可以实现批量脚本发送。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText
msg = MIMEMultipart()
msg['From'] = 'your_email' msg['To'] = 'receiver_email' msg['Subject'] = 'Subject: Test Email'
body = 'This is the body of the email!' msg.attach(MIMEText(body, 'plain'))
smtp_server = 'smtp.163.com' smtp_port = 25 smtp_username = 'your_email' smtp_password = 'smtp_token'
smtp_conn = smtplib.SMTP(smtp_server, smtp_port) smtp_conn.login(smtp_username, smtp_password)
smtp_conn.sendmail(msg['From'], msg['To'], msg.as_string())
smtp_conn.quit()
|