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

截图如下:

PythonPOST上传附件401 python发送邮件带附件_PythonPOST上传附件401


正文带图片(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()

截图如下:

PythonPOST上传附件401 python发送邮件带附件_html_02


PythonPOST上传附件401 python发送邮件带附件_PythonPOST上传附件401_03

以上两种方式,分别是邮件带附件跟带图片的格式,如果你仅仅只是需要发送普通文件,那么也可以参考以下代码

普通文本邮件

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

PythonPOST上传附件401 python发送邮件带附件_html_04