首页 > 编程语言 >Smtp Oauth With Python

Smtp Oauth With Python

时间:2023-01-02 21:44:07浏览次数:57  
标签:username xoauth Python Smtp smtp print token Oauth conn

 我的博客园:https://www.cnblogs.com/CQman/

GitHub

#基于Python语言的smtp Oauth 连接世纪互联运营的Office 365(或21V O365)的邮箱 

Authenticate an IMAP, POP or SMTP connection using OAuth

SASL XOAUTH2

OAuth 集成要求应用程序使用 SASL XOAUTH2 格式对访问令牌进行编码和传输。 SASL XOAUTH2 按以下格式将用户名和访问令牌编码在一起:

base64("user=" + userName + "^Aauth=Bearer " + accessToken + "^A^A")

#Pyhton代码示例

# smtpOauth 
* 基于Python语言的smtp Oauth 连接China Office 365(或21V O365)的邮箱  
#Pyhton代码示例

import requests
import smtplib
import base64

# 定义发件人地址和密码以及收件人地址信息
username = '[email protected]'
password = 'your username password'
recipient = '[email protected]'

# Get a token
url = 'https://login.partner.microsoftonline.cn/your tenant id/oauth2/v2.0/token'
data = {
    'grant_type': 'password',
    'client_id': 'your client id',
    'username': username,
    'password': password,
    'scope': 'https://partner.outlook.cn/.default',
    'client_secret': 'your client secret',
}
res = requests.post(url, data=data)
print("请求响应结果", res)
token = res.json().get('access_token')
print("访问令牌", token)

# 将username和token组合成SASL XOAUTH2 format
#对于Microsoft 365(或office 365)必须将^A替换为\x01
xoauth = "user=%s\x01auth=Bearer %s\x01\x01" % (username, token)
print("XOAUTH2格式", xoauth)

# base64编码
xoauth = xoauth.encode('ascii')
xoauth = base64.b64encode(xoauth)
print(xoauth)
xoauth = xoauth.decode('ascii')

#定义邮件主题内容等信息
msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\nSo happy to hear from you!"
       % (username, recipient, "Smtp Oauth With Python",))

#连接SMTP服务器并发送邮件
try:
    smtp_conn = smtplib.SMTP('smtp.partner.outlook.cn', 587)
    # smtp_conn.set_debuglevel(True)
    smtp_conn.set_debuglevel(2)
    smtp_conn.ehlo()
    smtp_conn.starttls()
    smtp_conn.ehlo()
    smtp_conn.docmd('AUTH', 'XOAUTH2 ' + xoauth)
    smtp_conn.sendmail(username, recipient, msg)
    smtp_conn.quit()
    print("邮件发送成功")
except smtplib.SMTPException as e:
    print("邮件发送失败", e)

 

标签:username,xoauth,Python,Smtp,smtp,print,token,Oauth,conn
From: https://www.cnblogs.com/CQman/p/17020556.html

相关文章

  • C++/python共享内存交换图片/文本信息
    共享内存保存读取图片OpenShare.cpp#include"OpenShare.h"//共享内存1,,C++发--python传递位姿与图像存储路径intkey_id=1111;intshmid;void*pBuffer;//共......
  • 用python爬取网络文章----滴天髓
    用python爬取网络文章真的很简单。主要分以下几个步骤1、安装并导入相关模块.这里我们要用到两个模块,分别是reqesets和lxml安装命令pipinstallrequests和pipinstall......
  • python+Django学习资源汇总-更新中
    ​​Python教程​​​​Python3.7.4文档​​​​Python基础教程​​​​Python教程​​​​Python入门​​ ​​python+django搭建web项目​​​​PythonDjango(WEB电......
  • 2D Pose人体关键点实时检测(Python/Android /C++ Demo)
    2DPose人体关键点实时检测(Python/Android/C++Demo)目录​​2DPose人体关键点实时检测(Python/Android/C++Demo)​​​​1.人体关键点数据集​​​​(1)COCO数据集​​......
  • 双目三维重建系统(双目标定+立体校正+双目测距+点云显示)Python
    双目三维重建系统(双目标定+立体校正+双目测距+点云显示)Python目录​​双目三维重建系统(双目标定+立体校正+双目测距+点云显示)Python​​​​1.项目结构​​​​2.Envir......
  • django与python版本对应关系 附加djangorestframework框架
    Django与python版本Django1.11版本兼容Python2.7、3.4、3.5、3.6、3.7(addedin1.11.17)#1.11.5python<=3.6Django2.0版本兼容Python3.4、3.5、3.6、3.7Djang......
  • python 使用 VSCode 入门简介
    本文主要介绍如何使用VSCode创建、编辑、运行、调试hello.py程序,对如何安装使用python不做介绍,也不对安装vscode介绍。准备事项电脑安装python3,vscode,并安装v......
  • Python pip3用国内源安装
    国内可用的源如下:清华:https://pypi.tuna.tsinghua.edu.cn/simple中国科技大学https://pypi.mirrors.ustc.edu.cn/simple/华中理工大学:http://pypi.hustunique.com/山东理工......
  • python 装饰器
    装饰器:本质是一个闭包作用:在不改变原有函数调用的情况下,给函数增加新的功能defwrapper(fn):wrapper:装饰器,fn:目标函数definner(*args,**kwargs):......
  • Python类与对象详解
    一、类和对象类的意思:种类、分类、类别对象是特征与技能的结合体,我可能有身高体重、而你也有身高体重,所以你会说你像我,但是你一定不会说你像阿猫阿狗。并且我和你其实就......