背景
受信メールをテキスト保存する際に、From の表示名はどうやって取ればよいのか?という質問があった。
目的は、表示名と、メールの内容を保存したい、という話だった。
内部であれば User 情報取れば?と思ったのだが、どうやら外部メールの表示名をってことで、Export Mail を利用して解析していたが、Base64 の部分が単純に Decode するのが面倒、という問題がありました。
で、実際に試した内容と、解決策を記録
試行
以下を使うと、from/to/cc/bcc は単純に mailaddress しか取得出来ない。
で、詳細を取得しようと以下と利用すると、えらいことになります・・
で、解決策
困ったときの Graph-API ですね。
outlook を眺めて見ると、
が見つかりますが・・これはちょっと違うのでおいておいて・・
今回はこちらです。
使用例
{
"id": "fa4d177b-7397-4177-abdc-3159-0bf0522b",
"brandColor": "#EB3C00",
"connectionReferences": {
"shared_office365groups": {
"connection": {
"id": "/providers/Microsoft.PowerApps/apis/shared_office365groups/connections/5e96053ddc264f998e74dbe3ccf3ef9c"
}
},
"shared_office365": {
"connection": {
"id": "/providers/Microsoft.PowerApps/apis/shared_office365/connections/cda4ee86c13b40978832f18898d7bdcb"
}
}
},
"connectorDisplayName": "Office 365 Groups",
"icon": "https://connectoricons-prod.azureedge.net/releases/v1.0.1538/1.0.1538.2619/office365groups/icon.png",
"isTrigger": false,
"operationName": "Send_an_HTTP_request",
"operationDefinition": {
"type": "OpenApiConnection",
"inputs": {
"host": {
"connectionName": "shared_office365groups",
"operationId": "HttpRequest",
"apiId": "/providers/Microsoft.PowerApps/apis/shared_office365groups"
},
"parameters": {
"Uri": "https://graph.microsoft.com/v1.0/me/messages/@{items('Apply_to_each')?['id']}",
"Method": "GET",
"ContentType": "application/json"
},
"authentication": {
"type": "Raw",
"value": "@json(decodeBase64(triggerOutputs().headers['X-MS-APIM-Tokens']))['$ConnectionKey']"
}
},
"runAfter": {
"Export_email_(V2)": [
"Succeeded"
]
},
"metadata": {
"operationMetadataId": "f6533626-dff7-461f-ac1f-d5389a062163"
}
}
}
取得例
あとは、Parse JSON で取り出して利用するだけですね。
Export Mail を利用した経路確認とかがしたい場合は、以下の要領で、Header を JSON 取得したほうが良いかと。
例 2: インターネット メッセージ ヘッダーを取得する の使いどころ
詳細なヘッダーが取れてしまうので、以下のような用途が無い限りは使うことはなさそう
- Received での経路確認
- Return-Path での不達確認
- Microsoft 365 のスパム対策メッセージ ヘッダ 関連とか
keyword
how to get mail sender display name in power automate