美文网首页生信程序员
Python_smtplib邮件发送

Python_smtplib邮件发送

作者: BeautifulSoulpy | 来源:发表于2019-02-28 15:52 被阅读3次

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

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

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

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

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


    上面提到的第二家公司是腾讯。他当时所负责的邮箱业务,就是我们这节课程里所使用的 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 ', 'wufeng@qq.com'],['kaxi', 'kaxi@qq.com']]
    
    # 写入收件人数据
    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邮件发送

        本文链接:https://www.haomeiwen.com/subject/wzbhuqtx.html