Python_smtplib邮件发送

在上个世纪有一位年轻人,也写了类似这样一个发邮件的小程序,就像今天的你一样。

后来,他把这个功能做了好多升级:不能只发邮件啊,还得收邮件,存储邮件,日历提醒系统,订阅系统……最后,他把这些功能打包成一个电子邮件客户端。

因为这个电子邮件客户端太好用,后来这个软件被一家更大的公司收购。这个年轻人,此时已经三十多岁,他也一并加入这家公司,负责这家公司的邮箱业务。

时过境迁,来到2010年,移动互联网时代刚刚拉开帷幕。做久邮箱业务的他,敏锐地感知到:在新的时代,人们使用的通讯方式也会迎来新的变革。而这种新的通讯方式,在许多地方和邮件都有着相通之处……

后来的故事,大家都知道了。他的名字叫做张小龙,他做出来的新产品,名字叫微信。


Python_smtplib邮件发送_第1张图片

上面提到的第二家公司是腾讯。他当时所负责的邮箱业务,就是我们这节课程里所使用的 QQ 邮箱。

早期的 QQ 邮箱,运行笨重而缓慢。2006年底,张小龙率领团队用精简、轻便的思路设计新版本。2007年,新版的 QQ 邮箱上线,张小龙带领团队也开发了许多创新应用,将QQ邮箱打造为简洁易用、安全稳定的邮箱。2008年,QQ邮箱在腾讯公司获得“七星级产品奖”,张小龙的团队也获得腾讯的年度创新大奖,受到广大用户的欢迎。直至今天,它在中国依然是使用人数最多的邮箱产品。

上面提到的第一家公司是博大公司,张小龙卖出的产品是foxmail。

而这一切,最开始都是从一行类似于'qqmail.sendmail()'的代码开始的。这和你今天所做的事情,并没有本质区别。再加一些存储功能、收邮件功能……借助一个图形界面的模块,你也能写出一个最原始版本的foxmail。

import smtplib
# smtplib 用于邮件的发信动作
from email.mime.text import MIMEText
# email 用于构建邮件内容
from email.header import Header
# 用于构建邮件头
import csv
# 引用csv模块,用于读取邮箱信息

# 发信方的信息:发信邮箱,QQ邮箱授权码
# 方便起见,你也可以直接赋值
from_addr = input('请输入登录邮箱:')
password = input('请输入邮箱授权码:')

# 发信服务器
smtp_server = 'smtp.qq.com'

# 邮件内容
text='''亲爱的学员,你好!
我是吴枫老师,能遇见你很开心。
希望学习python对你不是一件困难的事情!

人生苦短,我用Python
'''

# 待写入csv文件的收件人数据:人名+邮箱
# 记得替换成你要发送的名字和邮箱
data = [['wufeng ', '[email protected]'],['kaxi', '[email protected]']]

# 写入收件人数据
with open('to_addrs.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    for row in data:
        writer.writerow(row)

# 读取收件人数据,并启动写信和发信流程
with open('to_addrs.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader: 
        to_addrs=row[1]
        msg = MIMEText(text,'plain','utf-8')
        msg['From'] = Header(from_addr)
        msg['To'] = Header(to_addrs)
        msg['Subject'] = Header('python test')
        server = smtplib.SMTP_SSL()
        server.connect(smtp_server,465)
        server.login(from_addr, password)
        server.sendmail(from_addr, to_addrs, msg.as_string())

# 关闭服务器
server.quit()

此外,你还可以为这个程序加一段异常处理代码,也就是try...except...语句来帮助你更好地处理你遇到的问题。

try:
    server.sendmail(from_addr, to_addrs, msg.as_string())
    print('恭喜,发送成功')
except:
    print('发送失败,请重试')

你可能感兴趣的:(Python_smtplib邮件发送)