#Power Automate を使用し受信したメールに一言添えて転送する
受信したメールを転送するだけ。
##Office365 Outlook のトリガーとアクションを使って簡単に設定できる;
ところが、元の受信メールが「テキスト形式だった場合」転送されたメールで改行が崩れる。
参考:「テキストメール」と「HTMLメール」、特徴と違いを理解する
###「新しいメールが届いたとき(V3)」からOutput される文字列の例;
黄色ハイライトの通り、
\r\n
が改行コードとして入っている。
と、言うことは、
- テキスト形式のメールを受信した時には、[\r\n] が改行コードとして入っていた。
- 転送をしようとしたら、転送メール自体はHTMLで書かれているので、「追加の一言」等は改行されている。
- 転送メールに挿入した「テキスト形式の元メール」からは、メール送信の際には改行コードが消えている。
###「メールの送信(V2)」からOutput される文字列の例;
改行コード \r\n
が消えている。
#Power Automate で [\r\n] を [<br>] に書き換える。
##以下の方法で出力(メールの送信をしてみる)
(元々 動的コンテンツで [本文] だけを入れていてた、後述の [ちょっとした式] に変更した。メールを送信の本文中に [ちょっとした式] をそのまま挿入したら良い)
手を加えた方;
<br> が改行したいところに入力されている。
手を加えていない方;
\r\n も消えて、改行コードがなくなっている。※
※念の為に再確認しただけ。
##Power Automate でやったこと
以下のExpressions を使って、改行コード(<br>) を挿入した(置換した)
何となく見やすい書き方
uriComponentToString(
replace(
uriComponent(
triggerBody()?['Body']
),
'%0D%0A',
'<br>'
)
)
Power Automate で使う用の書き方
uriComponentToString(replace(uriComponent(triggerBody()?['Body']), '%0D%0A', '<br>'))
####各項目の説明(自分の理解なので間違っているかも)
項目 | 説明 | 参考 |
---|---|---|
uriComponentToString | URIエンコード文字列をデコード | https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference#uriComponentToString |
replace | [Body] の [%0D%0A] を [<br>] に置換 | |
uriComponent | URL の安全でない文字がエスケープ文字に置き換えられた、文字列の URIエンコード バージョンにする。 ※ 要は[\r\n] を[%0D%0A] と表記する |
https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference#uriComponent |
triggerBody()?['Body'] | Input となるメールのBody 部分を引用 | |
%0D%0A | \r\n の16進数で表記(ここ大事) | http://seclan.dll.jp/cccrlf.htm , https://qiita.com/uhooi/items/dc74ff3434aecb17faa2 |
<br> | HTML 改行コード |
##結局のところ
上述のExpressions を使えば テキスト形式のメールも改行が出来る ということでした。
これは、メールの転送以外にもTeams への投稿などでも使う機会がありそうです。