一、python自动发送邮件-(附件及正文图片)
带附件邮件(1)
前言:一般我们发送邮件,整体的逻辑是这样的,先登录邮箱,发件人,收件人,主题,附件,内容
尝试自动发邮件,并且携带附件,代码如下
from smtplib import SMTP_SSL
from email.header import Header
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
send_usr = '手机号@139.com' # 发件人
send_pwd = '08034427124dfxxxxxx' # 授权码,邮箱设置
reverse = '136xxxx@139.com' # 接收者
content = '2022<p>python官网链接如下:</p>' \
'<p><a href="https://www.python.org">python</a></p>'
#content 内容设置
headers = '2022主题'
email_server = 'smtp.139.com'
email_title = '大东Ts' # 邮件主题
def send_email():
msg = MIMEMultipart() # 构建主体
msg['Subject'] = Header(email_title,'utf-8') # 邮件主题
msg['From'] = send_usr # 发件人
msg['To'] = Header('大东Ts','utf-8') # 收件人--这里是昵称
msg.attach(MIMEText(content,'html','utf-8')) # 构建邮件正文
attchment = MIMEApplication(open(r'D:/test.xlsx','rb').read()) # 文件
attchment.add_header('Content-Disposition','attachment',filename='test.xlsx')
msg.attach(attchment) # 添加附件到邮件
smtp = SMTP_SSL(email_server) #指定邮箱服务器
smtp.ehlo(email_server) # 部分邮箱需要
smtp.login(send_usr,send_pwd) # 登录邮箱
smtp.sendmail(send_usr,reverse,msg.as_string()) # 分别是发件人、收件人、格式
smtp.quit() # 结束服务
print('邮件发送完成--')
send_email()
截图如下:
正文带图片(2)
代码如下:
from smtplib import SMTP_SSL
from email.header import Header
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.mime.image import MIMEImage
send_usr = '手机号@139.com' # 发件人
send_pwd = '08034427124dfxxxxxx' # 授权码,邮箱设置
reverse = 'xxxxxxxxxx@139.com' # 接收者
content = '2022<p>python官网链接如下:</p>' \
'<p><a href="https://www.python.org">python</a></p>'
#content 内容设置
html_img = f'<p>{content}<br><img src="cid:image1"></br></p>' # html格式添加图片
email_server = 'smtp.139.com'
email_title = '大东Ts' # 邮件主题
def send_email():
msg = MIMEMultipart() # 构建主体
msg['Subject'] = Header(email_title,'utf-8') # 邮件主题
msg['From'] = send_usr # 发件人
msg['To'] = Header('大东Ts','utf-8') # 收件人--这里是昵称
# msg.attach(MIMEText(content,'html','utf-8')) # 构建邮件正文,不能多次构造
attchment = MIMEApplication(open(r'D:/test.xlsx','rb').read()) # 文件
attchment.add_header('Content-Disposition','attachment',filename='test.xlsx')
msg.attach(attchment) # 添加附件到邮件
f = open("E:\\test001.jpeg", 'rb') #打开图片
msgimage = MIMEImage(f.read())
f.close()
msgimage.add_header('Content-ID', '<image1>') # 设置图片
msg.attach(msgimage)
msg.attach(MIMEText(html_img,'html','utf-8')) # 添加到邮件正文
try:
smtp = SMTP_SSL(email_server) #指定邮箱服务器
smtp.ehlo(email_server) # 部分邮箱需要
smtp.login(send_usr,send_pwd) # 登录邮箱
smtp.sendmail(send_usr,reverse,msg.as_string()) # 分别是发件人、收件人、格式
smtp.quit() # 结束服务
print('邮件发送完成--')
except:
print('发送失败')
send_email()
截图如下:
以上两种方式,分别是邮件带附件跟带图片的格式,如果你仅仅只是需要发送普通文件,那么也可以参考以下代码
普通文本邮件
from smtplib import SMTP_SSL
from email.header import Header
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
# 发送普通文本邮件
send_usr = '手机号@139.com' # 发件人
send_pwd = '08034427124dfxxxxxx' # 授权码,邮箱设置
reverse = 'xxxxxxxx@139.com' # 接收者
#content1 内容设置
content1 = "普通文件正文"
email_server = 'smtp.139.com'
email_title = '大东Ts' # 邮件主题
def send_email():
msg = MIMEMultipart() # 构建主体
msg['Subject'] = Header(email_title,'utf-8') # 邮件主题
msg['From'] = send_usr # 发件人
msg['To'] = Header('大东Ts','utf-8') # 收件人--这里是昵称
msg.attach(MIMEText(content1,'plain','utf-8')) # 构建邮件正文,不能多次构造
try:
smtp = SMTP_SSL(email_server) #指定邮箱服务器
smtp.ehlo(email_server) # 部分邮箱需要
smtp.login(send_usr,send_pwd) # 登录邮箱
smtp.sendmail(send_usr,reverse,msg.as_string()) # 分别是发件人、收件人、格式
smtp.quit() # 结束服务
print('邮件发送完成--')
except:
print('发送失败')
send_email()