Python邮件功能 - 使用163邮箱SMTP服务器发送邮件

概述

Python发送邮件主要用到smtplibemail两个模块,其中smtplib负责发送邮件,email负责构建邮件内容

使用Python可以发送简单文本邮件、HTML格式的文件、带附件的邮件等。

这里使用163邮箱的smtp服务器从163邮箱发送简单文本邮件到其它邮箱为例,详情见代码

这是博客园中的一篇文章,总结的很全

首先需要拥有一个163邮箱账号,需要注意的是,需要在163邮箱的设置中开启客户端授权,申请授权码。

否则,直接使用密码登录会报错smtplib.SMTPAuthenticationError: (550, b‘User has no permission‘)

授权码是用于登录第三方邮件客户端的专用密码。这个过程需要手机号验证。

如下图,在设置--->POP3/SMTP/IMAP界面中,勾选SMTP服务,会提示进行手机验证,设置授权码(字母+数字),

然后在Python代码中进行登录时,使用刚才设置的授权码登录,而不是163邮箱密码。

Python邮件功能 - 使用163邮箱SMTP服务器发送邮件_第1张图片


源码

# !/usr/bin/env python
# -*- coding:utf-8 -*-

import smtplib
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr,formataddr


# 163邮箱服务器地址
smtp_server='smtp.163.com'
# 发件人邮箱地址
from_addr='135****[email protected]'
# 发件人邮箱密码(使用申请的客户端授权码代替)
passwd='授权码'
# 收件人邮箱地址
to_addr='80*****[email protected]'

# 构建邮件内容(参数:邮件内容; 类型-plain,html; 编码)
msg=MIMEText('SMTP测试邮件','plain','utf-8')
# 设置邮件主题
msg['Subject']=Header('这是邮件主题',charset='utf-8')

def send_email():
    # 获取SMTP对象
    server=smtplib.SMTP(host=smtp_server,port=25)
    # 登录163邮箱服务器
    server.login(user=from_addr,password=passwd)
    # 发送邮件
    server.sendmail(from_addr=from_addr,to_addrs=to_addr,msg=msg.as_string())
    # 退出邮箱服务器
    server.quit()


if __name__ == '__main__':
    send_email()

运行结果

Python邮件功能 - 使用163邮箱SMTP服务器发送邮件_第2张图片

你可能感兴趣的:(Python)