如何用python发送SMTP邮件(基于QQ邮箱)亲测可用

  1. 第一步

首先我们要在QQ邮箱开通SMTP邮件,并生成授权码

设置->账户->生成授权码

通过绑定手机发送短信生成授权码,并保存授权码,一系列英文字母(等会要用)
在这里插入图片描述

  1. 第二步
    确保自己的计算机名称为全英文,查看方式:

控制面板-系统和安全-系统-计算机名

一定要是英文,如果是中文的话会报错的,具体报错信息如下:
‘utf-8’ codec can’t decode byte 0xba in position 0: invalid start byte
如果是中文的话要修改才行

  1. 第三步
    打开编译器,因为所需要的库一般都有,不需要再下载
  2. 第四步
    运行代码,代码如下:
# coding=utf-8
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
 
my_sender='***@qq.com'    # 发件人邮箱账号
my_pass = '*******'              # 发件人邮箱授权码,第一步得到的
my_user='*****@qq.com'      # 收件人邮箱账号,可以发送给自己
 
def mail():
    ret=True
    try:
        #msg=MIMEText('填写邮件内容','plain','utf-8')
        mail_msg = """
            <p>Python 邮件发送测试...</p>
            <p><a href="http://www.runoob.com">这是一个链接</a></p>
            """
        msg = MIMEText(mail_msg, 'html', 'utf-8')
        msg['From']=formataddr(["FromRunoob",my_sender])  # 括号里的对应发件人邮箱暱称、发件人邮箱账号
        msg['To']=formataddr(["FK",my_user])              # 括号里的对应收件人邮箱暱称、收件人邮箱账号
        msg['Subject']="测试邮件"                # 邮件的主题,也可以说是标题
 
        # 发件人邮箱中的SMTP服务器,端口是25
        #server=smtplib.SMTP("smtp.qq.com", 25)
        
        '''
        QQ邮箱使用下面这种方式才成功
        '''
        server=smtplib.SMTP_SSL("smtp.qq.com", 465)  # 发件人邮箱中的SMTP服务器,端口是465,固定的,不能更改
        server.login(my_sender, my_pass)  # 括号中对应的是发件人邮箱账号、邮箱密码
        server.set_debuglevel(1)
        server.sendmail(my_sender,[my_user,],msg.as_string())  # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
        server.quit()  # 关闭连接
    except Exception as err:  # 如果 try 中的语句没有执行,则会执行下面的 ret=False
        print(err)
        ret=False
    return ret
 
ret=mail()
if ret:
    print("邮件发送成功")
else:
    print("邮件发送失败")

亲测这个代码可用,有的版本的代码发邮件会出现:
由于目标计算机积极拒绝,无法连接
参考链接:菜鸟教程,其中的代码可能不能用
但是上面给出的就不会,O(∩_∩)O哈哈~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章