Python基础学习(十八)

这篇博客详细介绍了如何使用Python的smtplib库和email模块实现邮件的自动发送,包括基本的文本邮件、添加附件、发送HTML内容以及批量发送图片等。通过实例代码展示了登陆邮箱、设置邮件头部信息、添加正文和附件、发送及关闭连接的过程。
摘要由CSDN通过智能技术生成

自动化办公

一、邮件自动发送基本流程

smtplib - 登陆邮箱;发送邮件

import smtplib
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.text import MIMEText
1. 连接邮箱服务器

smtplib.SMTP_SSL(服务器地址, 邮箱服务端口)

connect = smtplib.SMTP_SSL('smtp.qq.com', 465)
2. 登陆邮箱

连接对象.login(账号, 密码/授权码)

connect.login('290****871@qq.com', 'wirt*********dhd')

第二步:准备邮件

1. 创建邮件对象
email = MIMEMultipart()
2. 设置邮件主题

Header(邮件标题, 编码方式)

email['Subject'] = Header('第一次邮件自动发送', 'utf-8').encode()
3. 设置邮件接收者(收件人)信息(显示信息)
email['To'] = '48*****68@qq.com'
4. 设置邮件发件人信息(显示信息)
email['From'] = '290****871@qq.com <290****871@qq.com>'
5. 添加正文内容

MIMEText(文字内容, 类型, 编码方式)
类型 - plain()、html(超文本)

text = MIMEText('这是用python自动发送的第一个邮件', 'plain', 'utf-8')
email.attach(text)

第三步:通过连接发送邮件

连接对象.sendmail(发件人, 收件人, 邮件对象.as_string())

connect.sendmail('2909078871@qq.com', '488201568@qq.com', email.as_string())
connect.quit()      # 关闭连接

二、发送附件

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

1.登录

connect = smtplib.SMTP_SSL('smtp.qq.com', 465)
connect.login('290****871@qq.com', 'wir*********dhd')

2. 准备邮件

email = MIMEMultipart()
email['Subject'] = Header('发送附件', 'utf-8').encode()
email['To'] = '94*****02@qq.com'
email['From'] = '290****871@qq.com <290****871@qq.com>'

text = MIMEText('照片在附件中,请注意查收!', 'plain', 'utf-8')
email.attach(text)

图片附件

1)打开图片读取图片二进制数据
image_date = open('files/2021-02-05-12-09-38_0.png', 'rb').read()
2)创建图片对象
image = MIMEImage(image_date)
3)设置图片为附件
image['Content-Disposition'] = 'attachment; filename = "Lucy.png"'
4)将图片附件添加到邮件中
email.attach(image)

其他文件附件

file_list = os.listdir('files')
for name in file_list:
    file_data1 = open(f'files/{name}', 'rb').read()
    file1 = MIMEText(file_data1, 'base64', 'utf-8')
    file1['Content-Disposition'] = f'attachment; filename = {name}'
    email.attach(file1)
3. 发送邮件
connect.sendmail('290****871@qq.com', '94*****02@qq.com', email.as_string())
connect.quit()

三、超文本邮件内容

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

connect = smtplib.SMTP_SSL('smtp.qq.com', 465)
connect.login('290****871@qq.com', 'wirt*********dhd')

email = MIMEMultipart()
email['Subject'] = Header('HTML邮件', 'utf-8').encode()
email['To'] = '48*****68@qq.com'
email['From'] = '290****871@qq.com <290****871@qq.com>'

# 邮件正文

content = open('files/content.html', encoding='utf-8').read()
text = MIMEText(content, 'html', 'utf-8')
email.attach(text)

image = MIMEImage(open('files/2021-02-05-12-09-38_0.png', 'rb').read())
image.add_header('Content-ID', '<image1>')
email.attach(image)

connect.sendmail('290****871@qq.com', '48*****68@qq.com', email.as_string())
connect.quit()

四、图片批量发送

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

connect = smtplib.SMTP_SSL('smtp.qq.com', 465)
connect.login('290****871@qq.com', 'wirtxrbbxzorddhd')

email = MIMEMultipart()
email['Subject'] = Header('HTML邮件', 'utf-8').encode()
email['To'] = '48*****68@qq.com'
email['From'] = '290****871@qq.com <290****871@qq.com>'

# 邮件正文
all_image = os.listdir('images')
ids = []
for name in all_image:
    image_data = open(f'images/{name}', 'rb').read()
    image = MIMEImage(image_data)
    cid = name.split(".")[0]
    ids.append(cid)
    image.add_header('Content-ID', f'<{cid}>')
    email.attach(image)

send = ''
for cid in ids:
    send += f'<img src="cid:{cid}" alt=""><br>'
text = MIMEText(send, 'html', 'utf-8')
email.attach(text)

connect.sendmail('290****871@qq.com', '48*****68@qq.com', email.as_string())
connect.quit()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值