发送邮件一般使用SMTP协议,使用Python的内置模块email即可生成邮件内容信息,内置模块smtplib可以登录并发送邮件。
SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。
SMTP 认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。
增加 SMTP 认证的目的是为了使用户避免受到垃圾邮件的侵扰。
使用脚本发送邮件先要知道邮箱服务器地址和端口,如以下就是网易163免费邮箱相关服务器信息:
https://help.mail.163.com/faqDetail.do?code=d7a5dc8471cd0c0e8b4b8f4f8e49998b374173cfe9171305fa1ce630d7f67ac22dc0e9af8168582a
自动给多个邮箱地址按预定格式发送包含附件的邮件的Python代码:
上述代码运行后,无须登录自己的邮箱,即可给多个设定好的邮箱地址发送邮件。
附代码:
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
import smtplib # SMTP即简单邮件传输协议
# 1 邮件信息
email_from = "wwuhnwu@163.com"
sender = email_from
email_to = ["wwuhnwu@163.com","2283517648@qq.com"]
receiver = ",".join(email_to)
password = "******"
email_subject = "Update data from wwu"
body = """
Dear all,
Attached please find!
"""
annex_path = "D:\Users\wwuhnwu01\Desktop\website.rar"
annex_name = "website.rar"
# 2 生成邮件(email模块)
message = MIMEMultipart()
message.attach(MIMEText(body,'plain','utf-8'))
message['From'] = Header(sender,'utf-8')
message['To'] = Header(receiver,'utf-8')
message['Subject'] = Header(email_subject,'utf-8')
att1 = MIMEText(open(annex_path, 'rb').read(), 'base64', 'utf-8')
att1["Content-Type"] = 'application/octet-stream'
att1["Content-Disposition"] = 'attachment; filename=' + annex_name
message.attach(att1)
# 3 发送邮件(smtplib模块)
try:
smtp = smtplib.SMTP_SSL("smtp.163.com",465)
smtp.login(email_from,password)
print("login successfully!")
smtp.sendmail(email_from,email_to,message.as_string())
print("sent successfully!")
smtp.quit
except Exception:
print(traceback.print_exc())
print("sending failed!")
-End-
领取专属 10元无门槛券
私享最新 技术干货