• python---网络之邮件发送


    在发送邮件之前需要先设置邮件开启了SMTP等功能,对于163还需要获取授权码

    这里设置保存修改

    这里获取授权码

    完整封装发送邮件类

    import smtplib
    from email.mime.text import MIMEText
    from email.header import Header
    from email.utils import parseaddr,formataddr
    
    class SendEmail:
        #设置基本信息,包括发件人,发件人密码,收件人邮箱,以及发件箱服务器地址
        #发送方
        Send_Email = "18xxxxxx@sina.cn"
        #发送方密码
        Send_Pwd = "xxxxxx"#对于163这里就不是密码,而是授权码
        #接收方
        Recv_Email = "xxxx@163.com"
    
        #设置发件方服务器地址
        SMTP_Server = 'smtp.sina.cn'
        #设置发件方服务器端口
        SMTP_Ser_Port=25
    
        def __int__(self):
            pass
    
        @classmethod
        def _format_address(cls,text):
            #按照空格解析 发件人发送新浪信 <xxxx@sina.cn>
            name, address = parseaddr(text)
            return formataddr((Header(name, "utf-8").encode(), address))
            #注意formataddr是元组
    
        @classmethod
        def send_email_text(cls):
            # 第一个参数:邮件正文
            # 第二个参数:邮件类型 纯文本
            # 第三个参数:编码
            msg = MIMEText("测试smtp邮件发送功能", "plain", "utf-8")
    
            #这里注意了,大多数错误出在这里,当直接使用Header('xxx','utf-8')时会出错,需要进行解析,重组
            #=?utf-8?b?5p2l6IeqMTYz55qE5LiA5bCB6YKu5Lu2?= <xxxx@163.com>
            msg["From"] = SendEmail._format_address("发件人发送新浪信 <%s>" % SendEmail.Send_Email)#预留空格,在昵称和地址间
            msg["To"] = SendEmail._format_address("收件人由163接收 <%s>"%SendEmail.Recv_Email)
            msg["Subject"] = Header("测试邮箱功能", "utf-8").encode()#主题
    
            try:
                server = smtplib.SMTP(SendEmail.SMTP_Server, SendEmail.SMTP_Ser_Port)
    
                server.login(SendEmail.Send_Email, SendEmail.Send_Pwd)
                # 登录smtp服务器
                server.sendmail(SendEmail.Send_Email, [SendEmail.Recv_Email], msg.as_string())
                # 发送邮件
                server.quit()
                print("邮件发送成功")
            except Exception as e:
                print(e)
                print("邮件发送失败")
    
    
    if __name__ =="__main__":
        SendEmail.send_email_text()
  • 相关阅读:
    修改element ui默认样式
    MyUI是美亚柏科旗下新德汇出品的Web前端一站式项目工程框架。
    细谈 axios和ajax区别
    Window MySQL远程连接不上的解决
    为什么要前后端分离?各有什么优缺点?
    原生js
    node.js安装及环境配置之Windows篇
    IDEA 导入若依管理系统
     Java图形验证码,支持gif、中文、算术等类型,可用于Java Web、JavaSE等项目。
    获取git仓库时更新类型update type 的选择
  • 原文地址:https://www.cnblogs.com/ssyfj/p/8586447.html
Copyright © 2020-2023  润新知