前言

    之前论坛里有人发过关于发送邮件的帖子,设计器也有关于发送邮件的控件。我这里再次重复,希望能有帮到大家的地方。

信息准备

    发送邮件前必须准备好一些基本信息,例如发件人邮箱地址、发件人邮箱密码、收件人邮箱地址、发件人昵称、收件人昵称、邮件主题以及邮件内容等。这些内容都属于定制化的,那么剩余的就应该是邮件发送了。使用Python发送邮件需要使用到email模块(主要用于邮件的配置)和smtplib模块(用于邮件的发送),接下来我们动手搞起吧!(这里以我的QQ邮箱为例,向其他邮件发送内容。)
# 导入第三方模块
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr # 自定义发送邮件的函数
'''
配置发邮件所需的基础信息
my_sender # 配置发件人邮箱地址
my_pass # 配置发件人邮箱密码
to_user # 配置收件人邮箱地址
my_nick # 配置发件人昵称
to_nick # 配置收件人昵称
mail_msg # 配置邮件内容
'''
def mail(my_sender,my_pass,to_user,my_nick,to_nick,mail_msg):
# 必须将邮件内容做一次MIME的转换 -- 这是发送含链接的邮件
msg=MIMEText(mail_msg,'html','utf-8')
# 配置发件人名称和邮箱地址
msg['From']=formataddr([my_nick,my_sender])
# 配置收件件人名称和邮箱地址
msg['To']=formataddr([to_nick,to_user])
# 配置邮件主题(标题
msg['Subject']="发送邮件测试"
# 配置Python与邮件的SMTP服务器的连接通道(如果不是QQ邮箱,SMTP服务器是需要修改的)
server=smtplib.SMTP_SSL("smtp.qq.com", 465)
# 模拟登陆
server.login(my_sender, my_pass)
# 邮件内容的发送
server.sendmail(my_sender,[to_user,],msg.as_string())
# 关闭连接通道
server.quit()

考虑到大家对代码的理解,我在自定义函数中都配备相应的注解,大家如果还有哪些不明白的地方可以给我留言。需要注意的是,如果你也使用 QQ 邮箱做测试,必须配置第三方客户端邮箱的授权码,否则邮件是发布出去的。

授权码的配置

第一步:登录自己的 QQ 邮箱;
第二步:点击邮箱中的【设置】,进入【帐户】栏,下拉你会看见如下的截图:

第三步:点击图中的【开启】,根据下图的提示,发送短信,你将会获得授权码(这个授权码用于配置自定义函数 mail 中的 my_pass 参数)。

邮件测试

如果上面的授权码都配置 OK 了,就可以使用上面的 9 行自定义函数,快乐地测试起来啦!这里以 qq 邮箱作为发送方,以我的 163 邮箱作为接收方,代码如下:

try:
mail_msg = """
陆xx:
您好,非常抱歉打扰到您,这是一份Python 的邮件测试,看见后可以忽略。
"""
# 调用函数(登录密码需要换成你自己的
mail('1182871615@qq.com','lwj1182871615','luwenjun@depthsdata.com','陆文俊','陆文俊‘,mail_msg)
print('邮件发送成功!')
except:
print('邮件发送失败!')
 如果不出意外的话,函数的运行结果将是“邮件发送成功!”,然后回到我的163邮箱,将会是看见这样的效果:
#### **批量发送**

你可能会觉得,发一份邮件有这么麻烦吗?我直接登录邮箱发送就是啦。可问题时,工作场景中可能需要向目标客户发送批量邮件,此时你再通过手动方式,效率就显得渣渣啦。要想实现邮件的批量发送,最容易想到的就应该是 for 循环啦。这里跟朋友要了邮箱做为测试,代码如下:

# 配置发邮件所需的基础信息
my_sender='1182871615@qq.com'
my_pass = 'lwj118281716'
to_user=['lsxxx2011@163.com','179*****66@qq.com','93*****89@qq.com']
my_nick = '陆文俊'
to_nick = ['陆文俊','杨**','袁**']
for i in range(3):
# 配置邮件内容
mail_msg = """
尊敬的{}:
您好,非常抱歉打扰到您,这是一份Python 的邮件测试,看见后可以忽略。
""".format(to_nick[i])
# 调用函数
try:
mail(my_sender,my_pass,to_user[i],my_nick,to_nick[i],mail_msg)
print('邮件发送成功!')
except:
print('邮件发送失败!')

惊喜不断,全都发送成功,而且速度也非常的快,三份邮件的发送,估计就 1 秒钟左右吧。

最新文章

  1. NFA引擎匹配原理
  2. 几个非常有用的js小函数
  3. EncryptHelper
  4. 【POJ 3241】Object Clustering 曼哈顿距离最小生成树
  5. [Mongodb]删除指定字段
  6. JSch - Java实现的SFTP(文件下载详解篇)
  7. 深入浅出话VC++(3)——VC++实现绘图操作
  8. PostgreSQL中的AnyEnum例子
  9. (转)所有iOS设备的屏幕分辨率
  10. response常见应用、response细节、输出随机图片、定时刷新网页
  11. 【搜索引擎Jediael开发笔记3】使用HtmlParser提取网页中的链接
  12. return view详解(转载)
  13. Python——day14 三目运算、推导式、递归、匿名、内置函数
  14. Server 2008 R2多用户远程桌面连接授权,解决120天过期问题
  15. vue移动端适配
  16. linux 查看内网流量
  17. XML的基礎結構
  18. Notes of Daily Scrum Meeting(11.11)
  19. 【CSWS2014 Main Conference】Some Posters
  20. 复数 一级ADT实现

热门文章

  1. amoeba 实现读写分离(借鉴)
  2. mysql查看锁查看
  3. 链接Caffe,程序报错应用程序无法正常启动(0xc000007b)
  4. 安装运行zookeeper的坑
  5. 16.AutoMapper 之可查询扩展(Queryable Extensions)
  6. java学习笔记(5)多线程
  7. 查看 MySQL 数据库的编译参数
  8. iptables - IP包过滤器管理
  9. pandas库
  10. C语言之带有数量可变的宏参数#define