yoshi0718
@yoshi0718

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

PADでメール送信する本文に画像を挿入したい

解決したいこと

PADでoutlookよりメール送信をするフローを作成しています。
メール本文はメッセージの送信アクションではなく、変数の設定アクションで
Excelのセルを参照するようにしています。
編集回数が多いため、Excelのセルを参照する方法でマクロは使用せず実現したいです。

自分で試したこと

・ファイルパスから添付ファイルは可能であることは把握済み
・本文用の参照アクションでファイルパス参照はファイル名称になってしまい表示できず

0

3Answer

ファイルをbase64に変換するアクションを追加し、メール本文に挿入したい画像のファイルパスを入力します。
image.png

メール送信の画面で下記コードを追加します。
image.png

PNGの場合
<img src="data:image/png;base64,%Base64Text%" />
JPGの場合
<img src="data:image/jpeg;base64,%Base64Text%" />

,の後ろは上記base64に変換するアクションで取得したファイルをbase64というコードに変換した文字列を変数に入れたものです。

本文はHTMLのトグルをオンにしてメールを送信してください。

Excelにメール本文があるとのことで、
画像が毎回変動しないならbase64に変換するアクションでコードを取り出しておき
上記ImgHTMLのbase64部分を取り出したコードにして埋め込んでしまっても動作はすると思います。

良い解説文を書かれているURLがありましたので下記ご参考までに
https://www.teijitaisya.com/pad-base64/

1Like

Comments

  1. @yoshi0718

    Questioner

    メッセージの作成はHTML形式となるよう設定して実行しております。

ありがとうございます。
メールメッセージを送信するのアクションを使用していないのですが、下記のようなフローに差し込むことは可能でしょうか。

Excel.LaunchExcel.LaunchAndOpenUnderExistingProcess Path: $'''C:\\Users\\\\OneDrive -\\PAフロー\\メール一括送信用リスト.xlsx''' Visible: True ReadOnly: False Instance=> ExcelInstance
Excel.GetFirstFreeColumnRow Instance: ExcelInstance FirstFreeColumn=> FirstFreeColumn FirstFreeRow=> FirstFreeRow
Excel.GetFirstFreeRowOnColumn Instance: ExcelInstance Column: $'''A''' FirstFreeRowOnColumn=> FirstFreeRowOnColumn
Excel.ReadFromExcel.ReadCells Instance: ExcelInstance StartColumn: $'''A''' StartRow: 1 EndColumn: FirstFreeColumn - 1 EndRow: FirstFreeRowOnColumn - 1 ReadAsText: False FirstLineIsHeader: True RangeValue=> Excellist
Outlook.Launch Instance=> OutlookInstance
LOOP FOREACH CurrentItem IN Excellist
    SET 送信対象フラグ TO CurrentItem['送信対象フラグ']
    SET 宛先氏名 TO CurrentItem['宛先氏名']
    SET 宛先アドレス TO CurrentItem['宛先アドレス']
    SET タグ1 TO CurrentItem['タグ1']
    SET タグ2 TO CurrentItem['タグ2']
    SET タグ3 TO CurrentItem['タグ3']
    SET タグ4 TO CurrentItem['タグ4']
    SET タグ5 TO CurrentItem['タグ5']
    SET タグ6 TO CurrentItem['タグ6']
    SET CCに追加 TO CurrentItem['CCに追加']
    SET BCCに追加 TO CurrentItem['BCCに追加']
    SET 添付ファイル1 TO CurrentItem['添付ファイル1']
    SET 添付ファイル2 TO CurrentItem['添付ファイル2']
    SET 添付ファイル3 TO CurrentItem['添付ファイル3']
    SET 添付ファイル4 TO CurrentItem['添付ファイル4']
    SET 添付ファイル5 TO CurrentItem['添付ファイル5']
    SET 件名 TO CurrentItem['件名']
    SET 本文 TO CurrentItem['本文']
    SET 送信フラグ TO CurrentItem['送信フラグ']
    Text.Replace Text: 本文 TextToFind: $'''宛先氏名''' IsRegEx: False IgnoreCase: False ReplaceWith: 宛先氏名 ActivateEscapeSequences: False Result=> 宛先氏名置換
    Text.Replace Text: 宛先氏名置換 TextToFind: $'''タグ1''' IsRegEx: False IgnoreCase: False ReplaceWith: タグ1 ActivateEscapeSequences: False Result=> タグ1置換
    Text.Replace Text: タグ1置換 TextToFind: $'''タグ2''' IsRegEx: False IgnoreCase: False ReplaceWith: タグ2 ActivateEscapeSequences: False Result=> タグ2置換
    Text.Replace Text: タグ2置換 TextToFind: $'''タグ3''' IsRegEx: False IgnoreCase: False ReplaceWith: タグ3 ActivateEscapeSequences: False Result=> タグ3置換
    Text.Replace Text: タグ3置換 TextToFind: $'''タグ4''' IsRegEx: False IgnoreCase: False ReplaceWith: タグ4 ActivateEscapeSequences: False Result=> タグ4置換
    Text.Replace Text: タグ4置換 TextToFind: $'''タグ5''' IsRegEx: False IgnoreCase: False ReplaceWith: タグ5 ActivateEscapeSequences: False Result=> タグ5置換
    Text.Replace Text: タグ5置換 TextToFind: $'''タグ6''' IsRegEx: False IgnoreCase: False ReplaceWith: タグ6 ActivateEscapeSequences: False Result=> タグ6置換
    IF (送信フラグ = 1) = $'''True''' THEN
        Outlook.SendEmailThroughOutlook.SendEmailFromMailbox Instance: OutlookInstance Account: $'''yoshinori.ishii@mtg.gr.jp''' SendFrom: $'''kenko-suishin@mtg.gr.jp''' SendTo: 宛先アドレス CC: CCに追加 BCC: BCCに追加 Subject: 件名 Body: タグ6置換 IsBodyHtml: False IsDraft: False Attachments: $'''\"%添付ファイル1%\" \"%添付ファイル2%\" \"%添付ファイル3%\" \"%添付ファイル4%\" \"%添付ファイル5%\"'''
0Like

Comments

  1. コードを拝見いたしました

    Outlookのメール送信アクションを使用していて
    メールのメッセージを送信する際に
    本文にExcelのセルにHTMLメール本文を入れており
    それをフローで取得し
    Outlookのメール送信アクションの本文項目に変数としていれて
    メールを送信しているということですね。

    要するに変数タグ6に画像をつっこみたいんだけどどうしたらいい?ということで
    大丈夫でしょうか。

    答えはもうとっても簡単でYoshi0718さんが今までさんざん使っている
    テキストの置換アクションを利用することです。
    後から画像をつっこむコードを追加すればよろしいんですよ。

    では以下が回答となります
    ①Excelのメール本文を記載したセルの中に画像という文字を追加してみてください
    大事なことは画像を表示したいところに画像という文字を入れることです

    Excelのセルに記載するコード
    <P>テストテストスト<br>画像</P>
    

    image.png

    Ifの分岐以降にファイルをbase64のコードに変換するアクションを追加します
    アクション内操作は私が一番最初に記載したコメントを参照くださいね
    image.png

    上記アクションの下に
    フローの中でたくさん利用されているテキストの置換をここでも使いましょう
    画像という文字列を一番最初のコメントで紹介した下記に置き換えてもらうのです
    image.png

    pngの場合
    <img src="data:image/png;base64,%Base64Text%" />
    
    jpgの場合
    <img src="data:image/jpeg;base64,%Base64Text%" />
    

    image.png

    セルに入れるのは文字数制限的に無理だと思いますので上記のように回答します。
    簡単だと思いますので頑張ってやってみてください!Have a good day!

Your answer might help someone💌