【Python基础】发送邮件,带附件

发送邮件,一般是文本格式、html、带有附件的邮件
区别在于是否引入路径,在实践过程中,如果邮件没有发送成功,可能是你的授权码不正确、或者是因为发送的内容被退回

不带附件
import smtplib
from email.mime.text import MIMEText
from email.header import Header

from_addr = 'xxx@qq.com'
password = '你的授权码数字'
 
# 收信方邮箱
to_addr = 'xxx@qq.com'
 
# 发信服务器
smtp_server = 'smtp.qq.com'
 
# 邮箱正文内容,第一个参数为内容,第二个参数为格式(plain 为纯文本),第三个参数为编码
msg = MIMEText('邮件内容','plain','utf-8')
 
# 邮件头信息
msg['From'] = Header(from_addr)
msg['To'] = Header(to_addr)
msg['Subject'] = Header('Python send text')
 
# 开启发信服务,这里使用的是加密传输
server = smtplib.SMTP_SSL()
server.connect(smtp_server,465)
# 登录发信邮箱
server.login(from_addr, password)
# 发送邮件
server.sendmail(from_addr, to_addr, msg.as_string())
# 关闭服务器
server.quit()
附件图片
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2020/8/25 17:33
# @Author  : Du Yanfeng
# @File    : emails.py
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
import os

from Config import config
from Config.get_config import read_conf

"""

发送多张图片邮件的python代码
"""
all_file = []
img_list = config.get_file_path()
"""
遍历文件夹获得所有图片绝对路径
"""

mail_host = "smtp.xx.com"
mail_user = "xxxx@xx.com"
mail_pass = "授权码"
subject = "邮件主题"
mailto_list = "xxxx@xx.com", "xxxx@xx.com"


def get_all_file(path):
    """
    :param path: 截图所在的文件路径
    :return: 返回全部截图文件
    """
    all_file_list = os.listdir(path)
    for file in all_file_list:
        filepath = os.path.join(path, file)
        if os.path.isdir(filepath):
            get_all_file(filepath)
        else:
            all_file.append(filepath)
    return all_file


def send_mails(file_list):
    """
    :param file_list: 图片id加入所在位置
    :return:
    """
    msg_root = MIMEMultipart('related')
    msg_root['Subject'] = subject
    content = '<p><b><i> xxxxxxx </i></b></p><br>'
    for index in range(len(file_list)):
        if index % 2 == 0:
            content += '<img src="cid:' + str(index) + '">'
        else:
            content += '<img src="cid:' + str(index) + '">'

    msg_text = MIMEText(content, 'html', 'utf-8')
    msg_root.attach(msg_text)
    # 对应图片id
    index = 0
    for file in file_list:
        fp = open(file, 'rb')
        msg_image = MIMEImage(fp.read())
        fp.close()
        msg_image.add_header('Content-ID', '<' + str(index) + '>')
        index += 1
        msg_root.attach(msg_image)

    server = smtplib.SMTP()
    server.connect(mail_host)
    server.login(mail_user, mail_pass)
    server.sendmail(mail_user, mailto_list.split(','), msg_root.as_string().encode("utf-8"))
    server.quit()

#
# if __name__ == '__main__':
#     send_mails(get_all_file(img_list))
#     print(mailto_list)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值