kjadachi01
@kjadachi01 (安達 健児)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Gmailを使用した、本文に画像貼付メールの一斉送信の方法を教えて下さい

【やりたいこと】
Gmailを使用し、エクセルにメアドがある複数の宛先に対し、全件同一の画像付きのメールを送信したい
・VBAしか使用できない
・画像は今のところ.jpg形式で作成。かつメール本文に貼りつけたい。
 上記の組み合わせではメール本文に画像が張り付けられずに困っています。
★独力ではそのような仕組みはできませんでした。

【質問内容】
①そもそも上記組み合わせで、メールを送信することは可能でしょうか?
(VBAを使用してGmailからエクセルにある複数のメアドに対し、一斉に本文に画像が埋め込まれているメールを送信したい) 良い方法があれば、あまり手段は問いません。
(VBAとGmailは必須ですが・・・)
②現在の状況
・VBAでCDOの機能を利用
・画像以外(宛先、本文、件名)はGmailで送信できた
・送信はしていないが、outlookの送信メッセージ作成画面の
 メール本文に画像を張付けた状態で止めてある。
(もともとoutlookでメール送信するしくみなので、その機能が残っているということです)以下[★画像1]
outlookの画面.png
③質問の意図
・私の希望を実現できる方向性をご教示いただければ、詳細は自分なりに調査させて
 ただきます。(outlookで送信まですれば、すべて解決するというご返事は
 ご容赦お願いいたします。)

【現在作成途中のコードについて】
各Webサイトで公開されているVBAのコードを参考に作成しています。
もともと、outlookVBAで動作する、画像をメール本文に貼り付けることが可能な、Wordエディタの機能を利用しメール本文に挿入するしくみのものです。これにCDOの機能を付けたしました。しかしながら、この仕組みはoutlook用らしく、画像がGmail本文に貼り付けられなくて苦戦しております。

【補足】
・作成中のコード補足
 先日このコードとは別に、通常どおりのoutlookで画像を送信する仕組みを作成
してみましたが、問題なく画像付メールが一斉送信できました。
・もしこの仕組みは実現不可能な場合
 (1).画像(.jpg)をWordエディタの機能を利用して貼り付けるのではなく、メール本文
を記述してるエクセルのシートにリンク等を貼り、メールが送信された場合にクリッ
クなどのひと手間なく表示することは可能でしょうか?
(2).上記[★画像1]でのoutlookの本文ですが、これを利用して、VBAでメアドのあ
  る宛先に一斉に下書き保存してあるメールを「転送」することは可能でしょうか?
以上、長文恐縮ですがよろしくお願いします。

0

2Answer

1.他にもいくつか質問されているみたいですがクローズされていない
2.メールを一斉送信するプログラムは迷惑メールを助長してしまうため正当な理由がないとやり方を説明出来ない
3.普通GmailならGAS、VBAならOutloockを使うのですがどうしてもVBAでGmailから送りたい作るなら
OutloockにGmailのアカウントを追加すれば良いのでは?
4.メール本文に挿入するしくみ(中略)、この仕組みはoutlook用らしく
HTMLメールの事?
Gmail送信画面で「その他のオプション」「プレーンテキストモード」のチェックを外せば簡易HTMLメールになります
GmailのプラグインでHTMLメールを作れますが、そもそも受信する側でHTMLメールが表示される可能性が低いです
※セキュリティの問題で

この手の一斉送信は専用の有料サービスを使うのが一般的です

2Like

Comments

  1. @kjadachi01

    Questioner

    vram様
    早速のご回答、まことに有難うございます。
    以下の通りご説明させていただきます
    1、大変失礼いたしました。今回の質問以外はクローズさせていただきました。
     以後気を付けます。
    2、につきまして、目的は商用で見込み客に対して送信するものです。従いまして
     最後に仰せのように、専用の有料サービスを使用するのがBESTであると思います。
     現在、起業準備中で予算も限られるので自作のコードで一斉送信を計画しており、
     (送信件数は試験的な数量であります)
     やり方を誤れば迷惑メールを送信してしまうことになり、非常に注意が必要であろうと
     思われます。
      現在の私のスキルでは「絶対に迷惑メールを送信しない」というレベルではなく、
     迷惑をかけないよう、許される範囲で許される内容を調査しながらという状況です。
    3、なにより、VBAしかわからないという点にあります。(VBAも初心者ですが・・・)
      あと、現在試験的に運用しているoutlookVBAのしくみで送信していますが、
      (20件以内/1日たり)の送信でも、マイクロソフト(Outlook.com Team)から
      「Outlook.com has blocked your message」という件名で、
      「The daily message limit helps us free the world from spammers」という内容の
      メールが送信されてくるので、これでは使えないのではと思い、Gmailは使用できない
      かと考えました。そもそもアドレスは送信専用なので何でもよいのです。
    (なのでメール送信の作業は中断しております)  
    4、につきましては、HTMLで送信しても、受け手側が対応していなければ
      意味がありませんね。方針を考えます。有難うございます。
    ★最後になりますが 取り急ぎご連絡いただきまして本当に有難うございます。
     ご助言をいただきまして、今後どのような方針が良いが熟慮させていただきたく
     思いました。まずは御礼と思い。コメント入れさせていただきました。
     有難うございます。
      kjadachi01

  2. AIの回答によると添付ファイル付き複数宛先メール送信はできるみたいです

    HTMLメール上での画像はメールに添付するものと思っていましたが
    説明を読むと「絶対パスで指定する必要があります」とのことなので
    メールで使用する画像はどこかのサーバーに置く必要がありそうです

    送信サンプル

    qiita.rb
    Sub SendEmailsWithAttachments()
    
      ' 変数の宣言
      Dim outlookApp As Object, outlookMail As Object
      Dim recipientAddress As String
      Dim attachmentPath As String
      Dim i As Long
    
      ' Outlookアプリケーションの起動
      Set outlookApp = CreateObject("Outlook.Application")
    
      ' 添付ファイルのパスを指定
      attachmentPath = "C:\path\to\your\attachment.pdf" ' 実際のパスに修正
    
      ' メールアドレスが入力されているセル範囲を指定 (例: A1セルからA10セル)
      For i = 1 To 10
    
        ' メールアドレスの取得
        recipientAddress = ThisWorkbook.Sheets("Sheet1").Cells(i, 1).Value ' "Sheet1"はシート名
    
        ' メールアドレスが空の場合はスキップ
        If recipientAddress = "" Then
          Continue For
        End If
    
        ' メール作成
        Set outlookMail = outlookApp.CreateItem(0)
    
        With outlookMail
          .To = recipientAddress
          .Subject = "メールの件名" ' 実際の件名に修正
          .Body = "メール本文" ' 実際の本文に修正
          .Attachments.Add attachmentPath
          .Send ' または .Display で送信前に確認
        End With
    
        ' オブジェクトの解放
        Set outlookMail = Nothing
    
      Next i
    
      ' Outlookアプリケーションの終了
      Set outlookApp = Nothing
    
      MsgBox "メール送信が完了しました。"
    
    End Sub
    
    
  3. メールで使用する画像はどこかのサーバーに置く必要がありそうです

    @vram リファレンスによると システムフルパスなので ローカルにあるファイルのフルパスですね。

    添付ファイルのソース。 これはファイル (ファイル名を含めたファイル システムのフル パスで表す) または添付ファイルを構成する Outlook アイテムです。

  4. @kjadachi01

    Questioner

    vram様
    重ね重ね有難うございます!
    やってみます。(いや、やらせてください。)
    もちろん、私のスキルでは現在全部理解はできておりませんが、
    調べればわかりそうな感じです。(VBAのロジック的にはそんなにです。)
    Vram様も、調べていただくのに時間がかかったのではないかと思います。
    今は御礼しか言えませんが、有難うございます。
    kjadachi01

現状の下書きにしている メールのソースを読んで それを送る試みをしてみたらいいのではないでしょうか……?(自分の持っている特定のメアドにでも送ってみればどの様な内容で送られているのかわかるかと思われますが……?

Gmail に限って言えば CDO でなくても Gmail API という REST API があるのでそっちを使うのも手かと

0Like

Comments

  1. @kjadachi01

    Questioner

    juner様
    早速のご教示、誠に有難うございます。
    Gamil API 早速調べて理解させていただきたく思います。
    まずは御礼まで。有難うございました。
    kjadachi01

Your answer might help someone💌