首页 > 其他分享 >Exchange Online 发送邮件

Exchange Online 发送邮件

时间:2022-10-11 12:44:35浏览次数:83  
标签:Exchange Graph access token client result Online com 邮件

项目背景

2022年10月4日 微软更改了Exchange的验证方式,原来exchangelib的库没法继续实现邮件的发送。

实现方式

利用Microsoft Graph API 里  发送邮件 - Microsoft Graph v1.0 | Microsoft Learn

POST https://graph.microsoft.com/v1.0/me/sendMail
Content-type: text/plain
Authorization: Bearer {token} RnJvbTogQWxleCBXaWxiZXIgPEFsZXhXQGNvbnRvc28uY29tPgpUbzogTWVnYW4gQm93ZW4gPE1l Z2FuQkBjb250b3NvLmNvbT4KU3ViamVjdDogSW50ZXJuYWwgUmVzdW1lIFN1Ym1pc3Npb246IFNh bGVzIEFzc29jaWF0ZQpUaHJlYWQtVG9waWM6IEludGVybmFsIFJlc3VtZSBTdWJtaXNzaW9uOiBT YWxlcyBBc3NvY2lhdGUKVGhyZWFkLUluZGV4OiBjb2RlY29kZWNvZGVoZXJlaGVyZWhlcmUKRGF0 ZTogU3VuLCAyOCBGZWIgMjAyMSAwNzoxNTowMCArMDAwMApNZXNzYWdlLUlEOgoJPE1XSFBSMTMw MU1CMjAwMDAwMDAwRDc2RDlDMjgyMjAwMDA5QUQ5QTlASFdIUFIxMzAxTUIwMDAwLmNvZGVudW0u cHJvZC5vdXRsb29rLmNvbT4KQ29udGVudC1MYW5ndWFnZTogZW4tVVMKWC1NUy1IYXMtQXR0YWNo OgpYLU1TLVRORUYtQ29ycmVsYXRvcjoKWC1NUy1Fe

Access Token的获取

接口中需要用token

1、登录https://portal.azure.com/

 

 2、应用注册

 

 3、创建客户端密码

 

 4、授予API权限

 

 这步需要注意代表搜娱管理员同意后,任何用户不需要单独授权就可以授予访问权限。

如果没有管理权限,有两种方式用户可以给自己授权

1)、Graph 浏览器 - Microsoft Graph

用Graph可视化接口调用里的修改权限进行获取。

 

 

2)、通过拼地址后,通过浏览器给自己的账户授权。

https://login.microsoftonline.com/carsgen.com/oauth2/v2.0/authorize?
client_id={client_id}
&response_type={response_type}
&redirect_uri={redirect_uri}
&response_mode=query
&scope=offline_access%20user.read%20mail.send
&state=12345

   

 5、发送邮件的代码

def get_access_token(username="[email protected]",password="ABCdefg"):
    client_id = "afaffbc-afaef-faefe-afefe-afeafefef"
    client_secret = "dafeafaefafewafefffeafa"
    scope=[]
    authority_url = 'https://login.microsoftonline.com/abc.com'

    app = msal.ConfidentialClientApplication(client_id, authority=authority_url,client_credential=client_secret)

    result=app.acquire_token_by_username_password(username=username,password=password,scopes=scope)
    print(result)
    if 'access_token' in result:
        access_token = result['access_token']
        return access_token

    else:
        print(result.get("error"))
        print(result.get("error_description"))

token=get_access_token()
headers={"Authorization":f"Bearer {token}","Content-type":"application/json"}
sendMail = {
  "message": {
    "subject": "Meet for lunchtset3?",
    "body": {
      "contentType": "Text",
      "content": "The new cafeteria is open."
    },
    "toRecipients": [
      {
        "emailAddress": {
          "address": "[email protected]"
        }
      }
    ],
    "ccRecipients": [
      {
        "emailAddress": {
          "address": "[email protected]"
        }
      }
    ]
  },
  "saveToSentItems": "false"
}

res=requests.post(url="https://graph.microsoft.com/v1.0/me/sendMail",data=json.dumps(sendMail),headers=headers)

 

标签:Exchange,Graph,access,token,client,result,Online,com,邮件
From: https://www.cnblogs.com/Evan-fanfan/p/16778646.html

相关文章

  • The 2022 ICPC Asia Regionals Online Contest (I)
    题目链接:https://pintia.cn/problem-sets/1571150153619189760A.01Sequence题意:给定一个01字符环,可以选择一个1然后删除它及周围的两个数,如果通过若干次操作后可......
  • SpringBoot 整合邮件发送
    邮件发送更多参考:https://mrbird.cc/Spring-Boot-Email.html引入依赖在SpringBoot中发送邮件,需要用到spring-boot-starter-mail,引入spring-boot-starter-mail:<depend......
  • Centos7使用sendEmail-v1.56发送邮件
    Centos7使用sendEmail-v1.56发送邮件注意:Centos7默认使用perl5.16,而sendEmail-v.1.56要求使用perl5.10。否则会报以下错误。所以需要下载并安装Perl-5.10Usingthedefa......
  • Springboot如何发送邮件
    邮件发送过程简介依赖 配置文件可以配置的属性值例如[email protected]=123456#授权码spring.mail.host=smtp.qq.com#smtp地址spring......
  • 基于Gossip的online server
    在游戏服务端架构中onlineserver,有些也叫centerserver。主要承载以下功能:存储玩家的在线信息,处理上线和下线消息。转发消息给特定玩家。onlineserver在架构图中......
  • 关于Microsoft Office Outlook-邮件搜索方法记录
     Outlook(MicrosoftOffice套装软件组件)一般指MicrosoftOutlookMicrosoftOfficeOutlook是微软办公软件套装的组件之一,它对Windows自带的Outlookexpress的功能进行了扩......
  • Python 使用zmail、imapclient或imap_tools接收邮件
    Python中,可以使用通过代码方式接收邮件,本文主要介绍使用zmail、imapclient和imap_tools三种方法接收邮件,以及相关的示例代码。原文地址:Python使用zmail、imapclient或ima......
  • free online Twitter video downloader All In One
    freeonlineTwittervideodownloaderAllInOnehttps://twittervideodownloader.com/https://twittervideodownloader.com/downloadrefs©xgqfrms2012-2020......
  • free online Youtube video downloader All In One
    freeonlineYoutubevideodownloaderAllInOnehttps://www.justfreetools.com/en/download-youtube-video-online-for-free✅https://ssyoutube.com/en3/youtube......
  • Exchange零日漏洞缓解措施
    点开参考文档注:此文章只是记录,使用前要根据自己的生产环境是否可用该方式。下面的处理方法会影响autodiscover自动发现配置邮箱。如图打开IIS双击打开URL重写模块......