python自动化发送邮件之SMTP

一、思路

1、若是QQ邮箱需要在设置-账户里面开启服务
  2、在python中smtplib库是专门用来处理邮件
  3、自动化邮件发送实操
    a、要处理的邮件主题,寄件人,收件人,邮件正文,附件,
    b、邮件正文,:文本信息,HTML信息,图片内容
    c、附件内容格式:txt,jpg,pdf,excel,doc
  4、发送邮件附件流程
    a、读取附件
    b、添加附件
     c、与内容一起发送

二、代码实现

import smtplib
from email import encoders
from email.mime.text import MIMEText  # 处理邮件内容的库 email.mime

# 处理邮件附件 MIMEMUltipart,Header,MIMEBase
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.base import MIMEBase

# 邮箱属性配置
mailserver = 'smtp.qq.com'    # 邮箱服务端url,163邮箱就写smtp.163.com,非QQ邮箱一般使用SMTP,不需要有SSL
userName_SendMail = '1111111@qq.com'   # 发件人
userName_AuthCode = 'tnppuxjie'    # 邮箱发件授权码,qq邮箱需要授权码
received_mail = ['468465456@qq.com', '4546546546@qq.com']   # 定义邮件的接收者,可以定义多个

# 发送一封简单的邮件
content = '这是一个文本信息内容'  # 定义发送内容
email = MIMEText(content, 'plain', 'utf-8')    # 纯文本形式的邮件内容定义,通过MIMEText进行操作
email['Subject'] = '这里写邮件主题'    # 定义邮件主题
email['From'] = userName_SendMail    # 定义邮件发件人
email['To'] = ','.join(received_mail)    # 定义接收人,接收人为多个用,分割


# 发送一封HTML邮件
content = '''
<p>这是一封HTML文本的邮件</p>
<p><a href='http://www.baidu.com'>点我啊</a></p>
'''
email = MIMEText(content, 'html', 'utf-8')
email['Subject'] = '这里写邮件主题'  # 定义邮件主题
email['From'] = userName_SendMail  # 定义邮件发件人
email['To'] = ','.join(received_mail)  # 定义接收人,接收人为多个用,分割


# 发送带有附件的邮件
#附件配置邮箱

email = MIMEMultipart()  # 只更换这项就OK
email['Subject'] = '这里写邮件主题'    # 定义邮件主题
email['From'] = userName_SendMail    # 定义邮件发件人
email['To'] = ','.join(received_mail)    # 定义接收人,接收人为多个用,分割

# 非图片附件
att = MIMEBase('application','octet-stream')
att.set_payload(open('文件名','rb').read())
att.add_header('Contenet-Disposition','attachment',filename=Header('文件名.txt','gbk').encode())
encoders.encode_base64(att)
email.attach(att)


# 图片附件
att1 = MIMEBase('application','octet-stream')
att1.set_payload(open('图片名.jpg','rb').read())
att1.add_header('Contenet-Disposition','attachment',filename=Header('图片名.jpg','gbk').encode())
encoders.encode_base64(att1)
email.attach(att1)


# 发送邮件
smtp = smtplib.SMTP_SSL(mailserver, port=465)   # 连接服务
smtp.login(userName_SendMail, userName_AuthCode)   # 登录,需要传入用户名和授权码
smtp.sendmail(userName_SendMail, ','.join(received_mail), email.as_string())   # 转换成str类型


# 关闭邮件
smtp.quit()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值