python自动化发邮件(带附件及正文显示图片)

一、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()

在这里插入图片描述

  • 6
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值