python+smtplib库实现邮件发送

目录

准备条件

代码


准备条件

qq邮箱需要注册用户授权码,开启SMTP服务:

python+smtplib库实现邮件发送_第1张图片

python+smtplib库实现邮件发送_第2张图片

 python+smtplib库实现邮件发送_第3张图片

代码

import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage


def send_mail(sender, send_password, addressee, host='smtp.qq.com', port=465, code=1):
    '''
    # Python使用纯文本或html发送电子邮件, 但不能同时使用两者(邮件正文,不能多次构造)
    :param sender: 发件人邮箱
    :param send_password: 发件人邮箱密码,qq邮箱为授权码
    :param addressee:收件人邮箱,多个人就是要list
    :param host:邮箱服务地址,发件人邮箱中的SMTP服务器,QQ邮箱服务器smtp.qq.com,136邮箱服务器smtp.136.com
    :param port:邮箱服务地址端口,默认25,一般配置465不会错
    :param code:选择发送邮件的方式sendmail或send_message
    :return:
    '''

    # 1、纯文本内容
    plain_message = MIMEText('邮件正文内容:\n\t测试发送邮件的内容', 'plain', 'utf-8')

    # 2、发送HTML格式的邮件,可支持添加图片,表格在正文中直接显示
    mail_message = '''
        

测试邮件

点击跳转百度

''' # 邮件附件 file1_path = r'D:\zhuomian\test_file\学习培训导入.xlsx' attachment = MIMEText(open(file1_path, 'rb').read(), 'base64', 'utf-8') attachment.add_header('Content-Disposition', 'attachment', filename=('utf-8', '', '测试学习.xlsx')) # 发送图片,和HTML格式配合使用 with open(r'D:\zhuomian\test_file\ddj50.png', 'rb') as img_file: # 读取图片 msgImage = MIMEImage(img_file.read()) # 构建邮件 message = MIMEMultipart() # 构建主体 # message.attach(plain_message) # 添加纯文本内容,与HTML二选一使用 message.attach(MIMEText(mail_message, 'html', 'utf-8')) # 添加html内容,与纯文本二选一使用 message.attach(attachment) # 添加附件 msgImage.add_header('Content-ID', '') # 定义图片ID,在HTML文本中引用 message.attach(msgImage) # 添加图片 # 发送邮件 try: if code == 1: # sendmail方法发送邮件 message['Subject'] = Header('这是邮件主题测试:测试一下', 'utf-8') # 发送邮件主题 message['From'] = Header('宝瑞', 'utf-8') # 设置发件人昵称 message['To'] = Header('大宝贝', 'utf-8') # 设置收件人昵称 server = smtplib.SMTP_SSL(host, port) # (连接邮箱的SMTP服务器,参数为服务器地址和端口) server.login(sender, password=send_password) # 登录邮箱,参数为发件人邮箱账号、邮箱授权码 server.sendmail(sender, addressee, message.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件 else: # 使用send_message发送 message['Subject'] = '测试邮件:测试一下' # 发送邮件主题 message['From'] = sender # 发件人 # message['To'] = addressee # 收件人,单个收件人 message["To"] = ";".join(addressee) # 收件人,同时发送多个用户,多人接受用message["To"] = ";".join(收件人列表) server = smtplib.SMTP_SSL(host, port) # (连接邮箱的SMTP服务器,参数为服务器地址和端口) server.login(sender, password=send_password) server.send_message(message) # 括号中的参数为邮件构造体 server.quit() # 关闭连接 print('邮件发送成功!') except: print('邮件发送成功!')

你可能感兴趣的:(python,自动化办公,自动化测试,python,dubbo,开发语言)