zoukankan      html  css  js  c++  java
  • 【python学习之五】自定义函数实现用 Python 发送电子邮件

    前言

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

    信息准备

        发送邮件前必须准备好一些基本信息,例如发件人邮箱地址、发件人邮箱密码、收件人邮箱地址、发件人昵称、收件人昵称、邮件主题以及邮件内容等。这些内容都属于定制化的,那么剩余的就应该是邮件发送了。使用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 秒钟左右吧。

  • 相关阅读:
    项目中常用的19条MySQL优化技巧
    集群的session问题解决方案
    nginx实现多个域名共享80端口
    spring-boot-maven-plugin多模块install问题解决办法
    JAVA-基础(十) Swing
    JAVA-基础(六) Java.serialization 序列化
    JAVA-基础(六) Java.io
    JAVA 基础--开发环境IDEA 搭建
    JAVA-基础(五) 更多工具集
    JAVA-基础(四) Aarryas 数组
  • 原文地址:https://www.cnblogs.com/valorchang/p/11357396.html
Copyright © 2011-2022 走看看