代码发送邮件和附件

代码发送邮件和附件及OS模块

1.发送邮件基本流程
import smtplib

# 1. 连接邮箱服务器(打开邮箱网站)
connect = smtplib.SMTP_SSL('smtp.qq.com', 465)

# 2. 登录邮箱(登录自己的邮箱)
connect.login('726550822@qq.com', 'ilxqhvczadfwbegc')


from email.mime.multipart import MIMEMultipart          # 构建一个邮件对应的类
from email.header import Header                 # 创建邮件主题的类
from email.mime.text import MIMEText            # 创建邮件内容的类

# 3. 准备邮件内容(点击写信)
# 1)创建一个空的邮件对象
email = MIMEMultipart()

# 2)设置收件人信息
email['To'] = 'y_t209@163.com'

# 3)设置发件人信息
email['From'] = 'YuTing <726550822@qq.com>'

# 4) 设置邮件主题
email['Subject'] = Header('第一次发送邮件', 'utf-8').encode()

# 5)添加正文
# MIMEText(正文内容, 类型)
# 类型: plain(普通文字对应的正文)、html(超文本)、base64(附件和图片)
# a.创建正文内容
msg = MIMEText('你好吗?', 'plain')
# b.将正文内容添加到邮件中
email.attach(msg)

# 4. 发送邮件(点发送按钮)
connect.sendmail('726550822@qq.com', 'y_t209@163.com', email.as_string())

# 5. 关闭连接(关闭网页)
connect.close()
2.发送附件基本流程
import smtplib
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.text import MIMEText

# 1. 连接邮箱服务器
connect = smtplib.SMTP_SSL('smtp.qq.com', 465)

# 2. 登录邮箱
connect.login('726550822@qq.com', 'ilxqhvczadfwbegc')

# 3. 构建邮件
mail = MIMEMultipart()
mail['Subject'] = Header('发送附件', 'utf-8').encode()
mail['From'] = 'YuTing <726550822@qq.com>'
mail['To'] = 'y_t209@163.com'

# 普通正文:MIMEText(字符串, 'plain')
msg1 = MIMEText('hello world!', 'plain', 'utf-8')
mail.attach(msg1)

# ========================构建附件======================
# 附件: MIMEText(二进制类型的文件内容, 'base64', 'utf-8')
# a.打开附件对应的文件,并且获取文件内容
data1 = open('files/05-Excel基本公式.xlsx', 'rb').read()
# b. 创建附件对象
file1 = MIMEText(data1, 'base64', 'utf-8')
# c. 设置附件在邮件中显示的位置和格式(注意:filename后面的附件名称不能有中文)
file1['Content-Disposition'] = 'attachment; filename="ExcelFormula.xlsx"'
# d.将附件添加到邮件中
mail.attach(file1)

data2 = open('files/car.png', 'rb').read()
file2 = MIMEText(data2, 'base64', 'utf-8')
file2['Content-Disposition'] = 'attachment; filename="car.png"'
mail.attach(file2)

# 4. 发送邮件
connect.sendmail('726550822@qq.com', 'y_t209@163.com', mail.as_string())

# 5.关闭连接
connect.close()
3.发送超文本基本流程
import smtplib
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.text import MIMEText

name = input('客户姓名:')
gender = input('客户性别:')
if gender == '男':
    call = '先生'
else:
    call = '女士'

connect = smtplib.SMTP_SSL('smtp.qq.com', 465)
connect.login('726550822@qq.com', 'ilxqhvczadfwbegc')

email = MIMEMultipart()
email['Subject'] = Header('发生超文本', 'utf-8').encode()
email['From'] = 'YuTing <726550822@qq.com>'
email['To'] = 'y_t209@163.com'

# 构建html格式正文(读html文件内容,获取文件内容对应的字符串)
data1 = open('files/data.html', encoding='utf-8').read() % (name[0], call, name)
msg = MIMEText(data1, 'html')
email.attach(msg)

connect.sendmail('726550822@qq.com', 'y_t209@163.com', email.as_string())

connect.close()
4.批量给多个用户发送邮件
data = [
    {'name': '李楠', 'gender': '女', 'score': 1000, 'email': '726550822@qq.com'},
    {'name': '赵军力', 'gender': '男', 'score': 567, 'email': 'y_t209@163.com'},
    {'name': '张帆', 'gender': '男', 'score': 478, 'email': 'zhuucc@163.com'},
    {'name': '王小若', 'gender': '女', 'score': 672, 'email': '873925431@qq.com'},
    {'name': '李贵明', 'gender': '男', 'score': 325, 'email': '1873215638@qq.com'}
]
# 基本功能:给上面data中所有客户发送邮件,如果积分在500分以上,在称呼加"尊敬的"

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

# 1. 连接服务器
connect = smtplib.SMTP_SSL('smtp.qq.com', 465)

# 2.登录邮箱
connect.login('726550822@qq.com', 'ilxqhvczadfwbegc')

# 3. 构建邮件对象(写信)
for info in data:
    # 1)准备邮件内容相关的数据
    # 收件人邮箱地址
    to_email = info['email']
    # 收件人姓名
    name = info['name']
    # 称呼
    if info['gender'] == '女':
        call = '女士'
    else:
        call = '先生'
    # 前缀
    if info['score'] >= 500:
        pre = '尊敬的'
    else:
        pre = ''

    # 2)创建邮件
    email = MIMEMultipart()
    email['Subject'] = Header('京东会员活动通知', 'utf-8').encode()
    email['From'] = 'JingDong <726550822@qq.com>'
    email['To'] = to_email

    email_content = open('files/data.html', encoding='utf-8').read() % (pre+name[0], call, name)
    msg = MIMEText(email_content, 'html')
    email.attach(msg)

    # 3)发送邮件
    connect.sendmail('726550822@qq.com', to_email, email.as_string())

connect.close()
5.OS模块常见函数
import os
# os是Python提供的专门用来处理文件或者文件夹的模块。

# 0. 路径
"""
1)绝对路径:文件或者文件夹在计算机中的全路径(windows从盘开始写,而且程序写绝对路径的时候字符串的最前面要加r)
2)相对路径:
前提:需要操作的文件或者文件夹在工程里面的时候才可以使用相对路径
a. 用 . 开头表示当前目录(当前目录指的是,当前代码文件所在的文件夹)
   注意:如果相对路径是以'./'开头的,'./'可以省略
b. 用 .. 开头表示当前目录的上层目录
"""

# 1. 创建文件夹
# os.mkdir(文件夹路径)
# 注意:创建文件夹的时候,如果文件夹已经存在会报错!
# os.mkdir('./names')
# os.mkdir('./files/abc')

# 2. 判断文件或者文件夹是否已经存在
# os.path.exists(文件或者文件夹路径)
result = os.path.exists('./files/a')
print(result)

result = os.path.exists('./files/car.png')
print(result)

# 在files下面常见img文件夹
if not os.path.exists('./files/img'):
    os.mkdir('./files/img')

# 3.罗列出指定文件夹中所有的内容
# os.listdir(文件夹路径)
content = os.listdir('./files')
print(content)

# 4. 判断是否是文件或者文件夹
# 1)os.path.isfile(路径)    - 判断指定路径对应的内容是否是文件
# 2)os.path.isdir(路径)   -   判断指定路径对应的内容是否是文件夹
result = os.path.isfile('./files/test')
print(result)

print('------------------------华丽的分割线-----------------------------')
for name in content:
    if os.path.isfile('./files/%s' % (name)):
        print(name)
6.批量给多个用户发送附件

准备工作:

1)与smtp服务器创建连接需要->服务器地址(这里使用QQ邮箱),端口号

2)连接上之后需要登录才能发邮件所以需要->邮箱账号,授权码(授权码可以一直使用)

3)提前在文件夹里准备好多个文件,什么类型都可以

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

# 1. 连接服务器
connect = smtplib.SMTP_SSL('smtp.qq.com', 465)

# 2. 登录
connect.login('726550822@qq.com', 'ilxqhvczadfwbegc')

# 3.准备邮件
data = [
    {'name': '余婷', 'gender': '女', 'score': 1000, 'email': '726550822@qq.com'},
    {'name': '张三', 'gender': '男', 'score': 567, 'email': 'y_t209@163.com'},
    {'name': '朱聪', 'gender': '男', 'score': 478, 'email': 'zhuucc@163.com'},
    {'name': '马诗雨', 'gender': '女', 'score': 672, 'email': '873925431@qq.com'},
    {'name': '李相葛', 'gender': '男', 'score': 325, 'email': '1873215638@qq.com'}
]

for user in data:
    address = user['email']
    name = user['name']
    if user['gender'] == '男':
        call = '先生'
    else:
        call = '女士'
    # 得到一个用户创建一个邮件对象,空邮件
    email = MIMEMultipart()
    # 邮件主题
    email['Subject'] = Header('发送附件', 'utf-8').encode()
    # 发件人信息
    email['From'] = 'YuTing <726550822@qq.com>'
    # 收件人地址
    email['To'] = address

    # 正文
    msg = MIMEText('%s%s,\n\t你好,相关内容请查收附件!' % (name, call), 'plain')
    # 将正文加到邮件里
    email.attach(msg)

    # 添加附件,这里没做判断,假设附件里没有别的文件夹
    for x in os.listdir('./files'):
        url = 'files/%s' % x
        file_data = open(url, 'rb').read()
        # 创建附件对象
        file = MIMEText(file_data, 'base64', 'utf-8')
        # 设置附件位置
        file['Content-Disposition'] = 'attachment; filename=%s' % x
        email.attach(file)

    # 发送邮件
    connect.sendmail('726550822@qq.com', address, email.as_string())

connect.close()

, ‘rb’).read()
# 创建附件对象
file = MIMEText(file_data, ‘base64’, ‘utf-8’)
# 设置附件位置
file[‘Content-Disposition’] = ‘attachment; filename=%s’ % x
email.attach(file)

# 发送邮件
connect.sendmail('726550822@qq.com', address, email.as_string())

connect.close()


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值