使用Flow实现定时发送邮件到指定邮箱 | 垃圾君⑨

最近为了E5保活问题四处爬文,可惜中文可看的只有推荐使用oneindex...可是谁也不知道微软是如何定义“开发”这个标准的,无奈只能自己想办法。今天分享个利用微软Flow定时发送邮件到指定邮箱的方法~


你需要先知道的事情

根据官方graph文档的介绍,想成功实现调用outlook api 发送邮件到指定邮箱有两个办法 https://docs.microsoft.com/zh-cn/graph/

  1. 委派权限,说人话就是需要用户手动登录同意权限,需要用获取的授权代码换访问令牌和刷新令牌。其中访问令牌有效期一般为一个小时,刷新令牌时间长一点,为90天
  2. 应用程序权限,说人话就是不用再登录手动同意权限啦,这样做获得的权限大一些,适合本身就拥有管理员账户的童鞋~这种方法就再也不用操心刷新令牌失效的问题~但可能会有安全风险。

好,我知道啦,接下啦怎么做呢

我的需求很简单,让E5开发者账户调用Microsoft Graph ,实现每天发一份邮件到我的私人邮箱。

这里我已“委派权限”方式为例讲下过程

第一步就是要申请个应用,访问https://aad.portal.azure.com/#blade/Microsoft_AAD_RegisteredApps/ApplicationsListBlade 点击 “+新注册”按钮进入注册界面,设置就按下图,名字就不要雷同啦~

选好后点“注册”~不出意外注册好啦~

在概述页面,你需要记下这几个ID

应用程序(client_id)ID    目录或租户(tenant)id   待会会用到,其中租户id是固定的~

找到“API权限”点击进去后,点击“+添加权限”按钮,点击“Microsoft Graph”,进去后有两个选项,点左边那个“委托的权限”~

我这里选了 “Mail.Read”和“Mail.Send”,确认添加权限

最后一步,就是设置“证书和密码”,这个密码(client_secret)只显示一次,刷新页面后不会再显示了~密码截止日期建议设置为“从不”~

这边基本就设置完毕了,可以接下来完成其他步骤啦~

登录Flow,设置定时任务

这个东东官方叫他Power Automate,网站点这个 https://asia.flow.mihcrosoft.com/en-us/ ,登录即可~登陆后找到找到+Create 按钮,点击进去,找到 “Scheduled flow”方框,点击~按下图设置,可随意微调~点击Create~

接下来的步骤就很简单啦,照着下图设置就行~博主已经探过路啦,应该没问题

点击+ New step,找到http 选项下图箭头所指,确认,按下图填写参数~

URL填写 https://login.microsoftonline.com/{你的租户id}/oauth2/token

Content-Type  application/x-www-form-urlencoded

body部分填写 {}部分请对应替换`

grant_type=refresh_token
&client_id={你的应用程序id}
&refresh_token={你的刷新令牌}
&resource=
&client_secret={你的应用程序密码

设置好应该是这个样子的~

接着点击 +new step,找到Parse JSON,确认。内容 选“正文” 架构填下面代码

{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"token_type": {
"type": "string"
},
"scope": {
"type": "string"
},
"expires_in": {
"type": "string"
},
"ext_expires_in": {
"type": "string"
},
"expires_on": {
"type": "string"
},
"not_before": {
"type": "string"
},
"resource": {
"type": "string"
},
"access_token": {
"type": "string"
},
"refresh_token": {
"type": "string"
}
},
"required": [
"token_type",
"scope",
"expires_in",
"ext_expires_in",
"expires_on",
"not_before",
"resource",
"access_token",
"refresh_token"
]
}

确认即可~再新建个HTTP,内容如下
URL 填写 https://v1.hitokoto.cn/?encode=text
最后一个HTTP,内容如下

URL 填写 https://graph.microsoft.com/v1.0/users/{你的E5账户邮箱}/sendMail

标头填写

Authorization    Bearer {access_token}
Content-type     application/json

正文部分填写,{}括号部分请自行修改

{
"message": {
"subject": "@{body('HTTP_3')}-90",
"body": {
"contentType": "Text",
"content": "恭喜你~你的E5订阅离渡劫又近了一天~~"
},
"toRecipients": [
{
"emailAddress": {
"address": "{转发的邮箱}"
}
}
]
}
}

保存即可~你可以手动触发试试看,不出意外都是可以的~

最后说下这个授权token 获取

你需要构造个url并用浏览器访问

https://login.microsoftonline.com/{租户id}/oauth2/v2.0/authorize?client_id={应用id}&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp&response_mode=query&scope=offline_access%20user.read%20mail.read%20mail.send&state=12345

打开后应该是这样的~授权后会跳转个URL,取“OAQA....”那部分

根据文档,我们构造请求来获取这个刷新token(refresh_token),这里我们用chrome应用postman(点我安装

POST 地址 https://login.microsoftonline.com/{租户id}/oauth2/token

Headers 设置 如下图

body部分使用RAW模式填入下面代码

grant_type=authorization_code
&client_id={应用id}
&code={授权码}
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp
&resource=
&client_secret={应用密码}

点击蓝色send按钮,如果填写无误的话会返回json格式的代码,里面含有access_token/refresh_token/id_token,我们这里只需要refresh_token 即可~

最后还有一种免获取refresh_token方法,相信你照着文档一定能配置出来~我就不赘述啦~

最后的最后 说下,实际上这种用API发信的方式失败率非常高,基本是100%,由于是试用的关系,这个问题基本无解。。。

“Error 550 5.7.708 Access denied, traffic not accepted from IP”

更新:和客服一顿扯皮之后,发信基本没问题了~建议不要发太多,维持一天一次或几天一次就行.记得开启DKIM记录,光spf是不够的。

 
         

记一次服务器改用密钥方式登录ssh过程~

其实这篇文章我不想写的,无奈博主鱼的记忆,这次配置完下次就有可能又忘了,只好写下来以备不需~ 其实配置这个很简单,我以Debian9为例~其中又有点坑需要注...

分享几个可发邮件的临时邮箱

现在临时邮箱快烂大街了,有各位大佬加持下,随便弄个域名,然后解析个IP就行了。可是可以发邮件的临时邮箱就不多了,今天介绍几个可以发邮件的临时邮箱! m...

域名邮箱测试网站mail-tester:来看看你得了几分?

最近听闻mailgun要关闭免费额度,想着自己的小破站的域名邮箱托管到那里,无奈只能抓紧时间撤出来。。。起初我想试试mail.ru家的服务,可是这家可能对域名和d...

喜加一!steam平台游戏 丽丽公主 开启限免~

国产解谜类游戏「丽丽公主」开启限免~游戏讲述 男主角君彦是一名年轻的圣骑士,在一次返程归来时,他碰巧路过被恶魔入侵后的爱露村,同时巧遇了被恶魔追赶的...

介绍几个实用WP主题:开源/免费

介绍几个很不错的博客主题,有的专注写作,有的功能很强大~与其四处寻找开心版,不如用开源的主题跟安心些 ZanBlog3 由佚站互联开发,基于 Bootstrap3开发...

.travel 域名首年免费注册~

DonDominio开启注册域名活动, .travel域名首年免费~有兴趣的童鞋不妨申请个~拿来搞个onedrive外链什么的还不是美滋滋~ 活动地址:https://www.dondominio.co...