代码发送邮件

一. 发送邮件基本流程

1. 链接邮箱服务器连接对象 = smtplip.SMTP_SSL(服务器地址, 邮箱服务端⼝)
import smtplib
connect = smtplib.SMTP_SSL('smtp.qq.com', 465)2. 登录邮箱connect.login('1262xxxx863@qq.com', 'jtjsxxxxxsobaga')3. 准备邮件内容from email.mime.multipart import MIMEMultipart   # 构建一个邮件对应的类
from email.mime.text import MIMEText  # 创建邮件主题的类
from email.header import Header      # 创建邮件内容的类1). 创建一个空的邮件对象email = MIMEMultipart()2). 设置收件人信息email['To'] = '158xxxx48@qq.com'3). 设置发件人信息email['From'] = 'Hxxxxxodi <12xxxxx3@qq.com>'4). 设置邮件主题email['Subject'] = Header('第一次发送邮件', 'utf-8').encode()5). 添加正文
# MIMEText(正文内容,类型)
# 类型:plain(普通文字对应的正文)、html(超文本)、base64(附件和图片)
# a.创建正文内容
msg = MIMEText('早上好呀!', 'plain')
# b.将正文内容添加到邮件中
email.attach(msg)6). 发送邮件
connect.sendmail('1262xxxx863@qq.com', '1592xxxx220@163.com', email.as_string())7). 关闭网站
connect.close()

二. 发送附件

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('12625xxxxx@qq.com', 'jtjsxxxxxobaga')3.构建邮件
mail = MIMEMultipart()
mail['subject'] = Header('发送附件', 'utf-8').encode()
mail['from'] = 'Huxxxxxaodi <126xxxxx63@qq.com>'
mail['To'] = '159xxxx20@163.com'4.普通正文.MIMEMuText(字符串,'plain')
msg1 = MIMEText('快中午了,吃什么呢?', 'plain', 'utf-8')
mail.attach(msg1)5.附件:MIMEMuText(二进制类型的文件内容,’base64‘,'utf-8')
# a.打开附件对应的文件,并且获取文件内容
data1 = open('12345.jpg', 'rb').read()
# b. 创建附件对象
file1 = MIMEText(data1, 'base64', 'utf-8')
# c. 设置附件在邮件中显示的位置和格式(注意:filename后面的附件名称不能有中文)
file1['Content-Disposition'] = 'attachment; filename="1234.jpg"'
# d.将附件添加到邮件中
mail.attach(file1)data2 = open('smtplib 邮件自动发送.pdf', 'rb').read()
file2 = MIMEText(data2, 'base64', 'utf-8')
file2['Content-Disposition'] = 'attachment; filename="smtplib Automatic mail sending.pdf"'
mail.attach(file2)6. 发送邮件
connect.sendmail('12xxxx3863@qq.com', '126xxxx863@qq.com', mail.as_string())7.关闭连接
connect.close()

三. 发送超文本

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('12xxxxx3@qq.com', 'jtjxxxxxxxaga')
3. 构建邮件
mail = MIMEMultipart()
mail['subject'] = Header('发送超文本', 'utf-8').encode()
mail['from'] = 'Huxxxxxaodi <126xxxxx63@qq.com>'
mail['To'] = '15927342220@163.com'4. 构建html格式正文
data2 = open('data.html', encoding='utf-8').read()
msg = MIMEText(data2, 'html')
mail.attach(msg)5. 发送邮件
connect.sendmail('12xxxxx863@qq.com', '12xxxxx63@qq.com', mail.as_string())6 .关闭连接
connect.close()

四. 格式字符串

name = input('请输入姓名:')
age = int(input('请输入年龄:'))
gender = input('请输入性别:')
# 1.格式字符串
"""
a.语法:包含格式占位符的字符串 % (数据1,数据2,数据3,。。。)
b.说明:格式占位符
%s    -    任何类型的数据的占位
%d    -    数字(整数)占位符,填充的时候会自动将数据转换成整数
%f    -    数字占位符, 填充的时候会让数字保留6位小数
%.Nf    -    数字占位符, 填充的时候会让数字保留N位小数
"""
# 'xxx今年xx岁'  括号内的数据是给前面的占位符赋值,s和d
msg = '%s今年%d岁' % (name, age)
print(msg)
msg = 'a:%s, b:%d, c:%f, d:%.3f' % ('abc', 345.23, 30, 3.1415926)
print(msg)    # a:abc, b:345, c:30.000000, d:3.142# x先生/女生,你今年xx岁!
name = input('请输入姓名:')
age = int(input('请输入年龄:'))
gender = input('请输入性别:')
# msg = '%s%s, 你今年%d岁!' % (name, gender, age)
# if 'gender' == '男':
#     msg = '%s先生, 你今年%d岁!' % (name, gender, age)
# else:
#     msg = '%s女士, 你今年%d岁!' % (name, gender, age)
#     print(msg)
# 以上思维复杂,简化
if gender == '男':msg = '%s先生, 你今年%d岁!' % (name, gender, age)
else:msg = '%s女生, 你今年%d岁!' % (name, gender, age)
print(msg)

五.邮件批量发送

data1 = [{'name': '周', 'gender': '男', 'score': 1000, 'email': '70xxxx70@qq.com'},{'name': '安', 'gender': '男', 'score': 567, 'email': '99xxxx67@qq.com'},{'name': '张', 'gender': '女', 'score': 478, 'email': '19xxxxxx14@qq.com'},{'name': '黄', 'gender': '女', 'score': 672, 'email': '126xxxxx863@qq.com'},{'name': '邓', 'gender': '女', 'score': 2304, 'email': '159xxxxxx220@163.com'}
]
1)基本功能:给上面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('12xxxxxx863@qq.com', 'jtjsxxxxxxbaga')
# 3.构建邮件对象(写信)
for info in data1:# 收件人邮箱地址to_email = info['email']# 收件人姓名name = info['name']# 称呼if info['gender'] == '女':call = '女士'else:call = '先生'
#         前缀if info['score'] >= 500:pre = '尊敬的'else:pre = ''# 2)创建邮件
mail = MIMEMultipart()
mail['subject'] = Header('网上购票系统-用户购票成功通知', 'utf-8').encode()
mail['from'] = '12306 <12xxxxx863@qq.com>'
mail['To'] = to_email
# 占位符去定义
email_content = open('data.html', encoding='utf-8').read() % (pre+name[0], call, name)
msg = MIMEText(email_content, 'html')
mail.attach(msg)# 3)发送邮件
connect.sendmail('12xxxxx63@qq.com', to_email, mail.as_string())connect.close()

六. OS常见函数

import os

os是python提供的专门用来出来文件或者文件夹的模块。

# 路径
"""
1)绝对路径:文件或者文件夹在计算机中的全路径(windows从盘开始,而且程序写绝对路径的时候字符串的最前面要加r)
2)相对路径:
前提:需要操作的文件或者文件夹在工程里面的时候才可以使用相对路径
a.用 . 开头表示当前目录(当面目录指的是,当前代码文件所在的文件夹)
b.用 .. 开头表示当前目录的上层目录
"""
# path = 'D:\千峰Python作业\基础班作业\06-代码发送邮件\1234.jpg'
# print(path)
# open(文件路径)
# 1.创建文件夹
# os.mkdir(文件夹路径)
# 注意:创建文件夹的时候,文件夹不存在才能创建,如果存在还要创建就会报错
# os.mkdir('./names')   # 创建文件夹在当前目录下,文件夹名字叫names
# os.mkdir('./files/abc')  # 在files下创建一个文件夹叫abd# 2.判断文件或者文件夹是否已经存在
# os.path.exists(文件或者文件夹路径)# 在files下面创建img文件夹
# if not os.path.exists('./千峰Python作业/ng'):
#     os.mkdir('./ng')# 3.罗列出指定文件夹中所有的内容
# os.listdir(文件夹路径)
content = os.listdir('./img')
print(content)# 4.判断是否是文件或者文件夹
# 1)os.path.isfile(文件路径)    -    判断指定路径对应的内容是否是文件
# 2) os.path.isdie(路径)     -      判断指定路径对应的内容是否是文件夹
result = os.path.isfile('./img/1234.jpg')
print(result)
print('-----------------------------------------专属分割线----------------------------------------------------')
for name in content:if os.path.isfile('./img/%s' % (name)):print(name)

七.作业

data1 = [{'name': '周',  'gender': '男', 'email': '709xxxx70@qq.com'},{'name': '安', 'gender': '男', 'email': '993xxxx67@qq.com'},{'name': '张', 'gender': '女', 'email': '195xxxx914@qq.com'},{'name': '黄',  'gender': '女', 'email': '126xxxx863@qq.com'},{'name': '邓', 'gender': '女', 'email': '1592xxxx220@163.com'}
]

给多个客户同时发送多个附件

import smtplib
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.text import MIMEText
# 连接邮箱网站
connect = smtplib.SMTP_SSL('smtp.qq.com', 465)
# 登录自己的邮箱账号
connect.login('126xxxx863@qq.com', 'jtxxxxbaga')# 创建邮件内容(因为要措辞发送给很多人,所以需要用到for循环)
# 拿到发送邮件的对象和姓名
for i in data:name = i['name']to_email = i['email']if i['gender'] == '女':call = '女士'else:call = '先生'
# 开始写邮件的正文内容# 点击写邮件按钮、写邮件的标题、寄件人邮箱、收件人邮箱email = MIMEMultipart()email['Subject'] = Header('附件同步', 'utf-8').encode()email['From'] = 'DIDI <126xxxxx63@qq.com>'email['To'] = to_email
# 写邮件的正文msg1 = MIMEText('尊敬的%s%s,\n\t下面是多个附件,请注意查收!' % (name, call), 'plain')  # msg20 = '%s今年%d岁' % (name,age)email.attach(msg1)
# 添加邮件的附件进去   # 罗列出指定文件夹中所有的内容 os.listdir(文件夹路径),需要用到for循环# print(os.listdir('./img'))for x in os.listdir('./img'):url = 'img/%s' % xfile_data = open(url, 'rb').read()file = MIMEText(file_data, 'base64', 'utf-8')file['Content-Disposition'] = 'attachment; filename="%s"' % (x)email.attach(file)# 以下如果附件中有中文字符,想发送且需要字符不乱码的时候可以使用# for x in os.listdir('./img'):  # 在文件夹中获取文件,需要循环遍历文件夹中的文件内容,每个邮件都需要遍历一遍,所以放在上面的循环里面#     file = open('./img/' + x, 'rb').read()#     msg2 = MIMEText(file, 'base64', 'utf-8')#     msg2['Content-Disposition'] = 'attachment; filename="%s"' % (x)#     email.attach(msg2)#     msg2['content-Type'] = 'application/octet-stream'#     msg2.add_header('Content-Disposition', '', filename=('gbk', '', '{}'.format(x)))# # 发送邮件及附件给上面所有人connect.sendmail('126XXXX63@qq.com', to_email, email.as_string())# 全部发完,关闭邮件网页
connect.close()

day06-代码发送邮件相关推荐

  1. day6 代码发送邮件总结

    代码发送邮件总结 一.发送邮件基本流程 1.登录邮箱 impor smtplib 连接邮箱服务器 连接对象 = smtplip.SMTP_SSL(服务器地址,邮箱服务端口) 服务器地址:smtp.16 ...

  2. 如何用python代码发送邮件

    文章目录 一.发送邮件前的准备 二.如何获取授权码 三.编写代码 一.发送邮件前的准备 注册邮箱:要想给别人发邮箱首先自己需要有邮箱哦 基础配置: 要拥有授权码(一定要保存好,这个非常重要) SMTP ...

  3. java邮件发送代码_用java代码发送邮件(优化版)

    调用代码如下: if(!StringUtil.isNullOrEmpty(address)){ SendEmailUtil.sendEmail(globalProperties.getEmailSub ...

  4. day06 代码实现邮件自动发送

    目录 一. 邮件发送基本流程 二. 添加文件附件 三. 发送富文本 四. 发送图片 五. 认识前端 HTML --------- 获取邮箱授权码--------- 一. 邮件发送基本流程 生活中发送邮 ...

  5. java 代码发送邮件添加附件_Java实现163邮箱发送邮件到QQ邮箱

    先创建一个maven的普通项目 添加依赖,附在文档末尾 其中几个注意的地方 主方法入口 有一个包下载不下来,手动导入下 准备一个配置文件和主方法类 针对配置文件编写一个类用来接收配置文件中的配置信息 ...

  6. java代码发送邮件及消息抄送

    1.项目结构图: 2.pom.xml: <dependency><groupId>com.sun.mail</groupId><artifactId>j ...

  7. 如何使用 ABAP 代码发送邮件到指定邮箱

    本教程前面的步骤,我们介绍了如何在 ABAP Editor 里一步步创建包含自定义 Screen 的 ABAP 程序的详细方法. 一步步创建包含自定义 Screen 的 ABAP 程序的详细步骤 本步 ...

  8. JAVA day06:代码作业(封装)

    1.编写程序描述狗 一.练习题目 编写程序描述狗 二.问题描述 使用面向对象的思想,编写自定义描述狗的信息.设定属性包括:品种,年龄,心情,名字:方法包括:叫,跑 三.要求: 1.设置属性的私有访问权 ...

  9. 19. 邮件提醒(发送邮件)

    邮件是互联网上应用非常广泛的服务,几乎所有的编程语言都支持发送和接收电子邮件,使用Python发送邮件和接收邮件也是非常简单易学的.现在几乎每个人的收集上都自带邮件客户端,多数邮件都支持短信提醒,一次 ...

  10. legend3---lavarel中使用qq邮箱发送邮件

    legend3---lavarel中使用qq邮箱发送邮件 一.总结 一句话总结: 第一步:配置邮箱做服务器,比如qq邮箱,网易163邮箱 第二步:配置lavarel的配置文件 第三部:写邮件发送代码就 ...

最新文章

  1. The hierarchy of the type is inconsistent
  2. Matlab与C++混合编程
  3. 前端开发下划线怎么设置_怎么使用Word快速制作填空题下划线? 只须一个快捷键, 教师必备...
  4. sort()、stable_sort()、partial_sort()、nth_element()、greater()、is_sorted()
  5. 查python的软件_Python制作天气查询软件【python实战必学】
  6. 图论(二)--各种图介绍
  7. 【数据结构】--章节2.3----线性表的链式表示和实现
  8. 数字信号处理实验(五)—— 心电信号处理 IIR FIR滤波综合题(上篇)
  9. 左耳朵耗子 | 技术人员的发展之路
  10. 计算机菜单专业英语,InDesign中英文菜单对照表 -电脑资料
  11. Evolutionary Clustering of Streaming Trajectories
  12. 微信支付 H5端 和小程序端 统一下单接口 4个JAVA源码文件代码
  13. Redis高可用 Sentinel
  14. 毕业设计 - 基于Java的聊天室系统设计与实现【源码+论文】
  15. 福州三中 计算机竞赛,福州高中学科竞赛亮点耀眼
  16. 路由器关闭dhcp后再登录路由器
  17. 想学游戏建模要从哪里开始?列出这些工作量,7年建模师想转行了!
  18. VIVADO时序约束之Output Delay(set_output_delay)
  19. 如何设置 HomePod?HomePod设置教程分享
  20. 中南大学计算机辅助工艺设计,中南大学计算机辅助制造 实验报告1.pdf

热门文章

  1. 记录用户在操作计算机键盘,【单选题】有一类木马程序,它们主要记录用户在操作计算机时敲击键盘的按键情况,并通过邮件发送到控制者的邮箱。这类木马程序属于:______。...
  2. loadBalancerClient choose 函数返回null 解决
  3. Excel如何使用CHOOSE函数
  4. 如何使用潘多拉连接千寻开发板开发高精度应用
  5. 2021.5.15-参加海淀区中小学信息学奥林匹克竞赛入门组(一等奖)
  6. RPA机器人| 云扩荣登“2021全球人工智能创新应用企业TOP30”榜单
  7. 《操作系统》第八章习题加解析
  8. 郭建龙:“阿里云”是如何失控的
  9. DCIM 系统是如何智能改善数据中心主机管理的
  10. 怎样解决 -- 电脑点击右键反应慢 ?