Python发送邮件学习踩坑记录(Envolope sender mismatch with header from..,报错问题解决)

       最近在练习使用Python发送邮件,实现项目功能告警的DEMO案例。也是第1次使用Python实现发送邮件的功能,在过程中也遇到了一些问题,因此,做一下问题的相关记录。

主要参考的学习文章:

https://blog.51cto.com/u_15535797/8798106

https://www.cnblogs.com/yufeihlf/p/5726619.html

Python发送邮件(最全) - 简书

我这边选择使用的发送邮箱是新浪邮箱,前期准备工作:

如果邮箱未正确进行授权设置的话,代码运行过程中,则会遇到类似如下的报错问题:

主要使用到的包是Python自带的smtplib包。

示例代码如下:

# -*- coding: utf-8 -*-
import smtplib
from email.header import Header
from email.mime.text import MIMEText


class Email(object):
    def __init__(self, content):
        # 发送邮件地址
        self.from_addr = 'your_from_mail_address'
        # SMTP服务的密码, 就是上述图中的授权码
        # 此处注意:并不是邮箱的登录密码
        self.password = 'your_password'
        # 目的邮件地址
        self.to_addr = 'your_to_mail_address'
        # 邮件标题
        self.subject = 'your_email_subject'
        # 邮件内容
        self.content = content

    def _make_message(self):
        # 使用MIMEText()构造一个文本格式的邮件
        message = MIMEText(self.content, 'plain', 'utf-8')
        # 构造邮件头From
        message['From'] = Header(self.from_addr)
        # 构造邮件头To
        message['To'] = Header(self.to_addr, 'utf-8')
        # 构造邮件主题
        message['Subject'] = Header(self.subject, 'utf-8')
        return message

    def send_mail(self):
        # 创建SMTP实例
        # smtp= smtplib.SMTP()
        # 连接SMTP服务器
        # smtp.connect('smtp.qq.com')
        # 此处直接一步到位
        smtp = smtplib.SMTP_SSL("smtp.sina.com")
        # 登录SMTP服务
        smtp.login(self.from_addr, self.password)
        mail_message = self._make_message()
        # 通过SMTP服务器发送邮件
        smtp.sendmail(self.from_addr, self.to_addr, mail_message.as_string())
        smtp.quit()
        print('success')


if __name__ == '__main__':
    email_obj = Email('测试一下')
    email_obj.send_mail()

  由于使用的是新浪邮箱来发送邮件的关系,此处,还有个坑点问题:

smtplib.SMTPDataError: (553, b'Envolope sender mismatch with header from..')

最后,还是参考了前辈的这篇文章,才将这个报错问题解决了的。

python mail解决Envolope sender mismatch with header from..(新浪邮箱 )_新浪邮箱用smtp发邮件附件报错554,b'can not send email with sens-CSDN博客

       注意点:message['From'] = Header(self.from_addr),这个Header函数的第2参数,不要惯性的添加上'utf-8'。

       目前,我也仅仅是完成很简单的功能版本,后续还需要不断加固对这块的认识,很感谢前辈们对自己实践过程中的学习记录,才降低了后来者的学习成本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值