質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

511閲覧

VBAで一括メール送信方法

km0815.lj

総合スコア14

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2024/12/12 08:00

編集2024/12/13 03:11

実現したいこと

VBAでOutlookやCDO.Message以外で一括メール送信をする方法がないでしょうか。

コメントありがとうございます。
以下追記いたします。
宛先毎に宛先毎の添付ファイルを付けエクセルでVBA送ることを一括送信としております。
よってccやbccでは送れないことになります。
また、全件で400〜500通で、ハングするのは、50件程度送信した後の時や100件程度送信した後などまちまちです。
outlookを経由せず、且つCDOを使わないで送信する方法があればご教示願います。

コメントありがとうございます。
追記

CDOを使いたくないのは、非推奨だからで
それ以上の理由はございません。
非推奨のため他に良い対応策が有れば、それを使いたいと思い、Google等で調べましたが、見つけられず、このサイトでお尋ねした次第です。

インターバルを10秒だとすると、400件送信するのに4000秒かかります。
また、メールを作成する都度outlookに制御が移るので、他の作業が出来ない状態になります。

コメントありがとうございます。
12/13追記 
メールサーバ(exchange サーバ)は社内にありISPは使用しておりません。
テスト的に作成した、CDOを使ってメール送信しているVBAでは、SMTPServerPortは 25を使用していて送信できることを確認していますので、587ではないと思います。

発生している問題・分からないこと

・Outlookのオブジェクトを使用してメールの一括送信を実現しようとしていますが、
件数が多いと途中でハングし止まってしまう。
・SMTPサーバから直接送信する方法としてCDO.Messageがありますが、こちらはマイクロソフトが
非推奨としているため、使用したくない。

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

teratailやGoogleで検索しましたが、同様の質問や解決策が見つかりませんでした。
尚、メール一括送信をAPI連携で可能とする有料サイトがありましたが、外部サービスは使用したくありません。

補足

exchange サーバ 2016
Outlook 2016

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2024/12/12 08:22 編集

>OutlookやCDO.Message以外で一括メール送信 Outlookで送信したいのですか?Outlook以外で送信したいのですか? > 一括送信 一括送信とは?本当に一括で同じ文書を複数の相手に送るだけならBCCで送ってはいけないのですか?
TakaiY

2024/12/12 09:13

> 件数が多いと途中でハングし止まってしまう 多いとはどれくらいですか? これまで試した工夫(送信間にインターバルを入れるなど)にはどのようなものがありますか?
km0815.lj

2024/12/12 09:39

400〜500通です。 送信ボックスが空になるのをチェックして送信や10秒インターバルを置いたりすると送れますが、outlookで遅延送信設定(最小値は1分)をしていたり、インターバルを置くと1時間以上端末で作業が出来ないことになるため、outlook経由しない方法が無いかお尋ねしております。 尚、添付ファイルもあるため、ハングする件数も一定ではございませんので、ロットで送信する場合もハングする可能性があるため、outlook経由しない方法があればと思う次第です。
TakaiY

2024/12/12 11:07

> 400〜500通です。 送ったあたりでハングするということでしょうか? 全体で何通くらい送りたいのでしょうか? 前の方の質問にある、CC/BCCを使う方法は取れないのでしょうか。 ここは質問に対するコメントを書くところです。 追加の情報があるのであれば、質問を編集して追記したほうがいいでしょう。
TakaiY

2024/12/12 13:16

> インターバルを置くと1時間以上端末で作業が出来ないことになる これはどういうこどでしょうか 通常であればVBAが動いていても他の作業はできると思うのですが。 重くなってしまうとかでしょうか
otn

2024/12/12 13:51

> ・SMTPサーバから直接送信する方法としてCDO.Messageがありますが、こちらはマイクロソフトが非推奨としているため、使用したくない。 何故でしょうか?最新のセキュリティー機能が無いと言うことが理由ですか?CDOを使うことで具体的に何らかのリスクがあるのでしょうか? 組織内のSMTPサーバーに送るなら、クライアントとサーバーの間の通信がセキュアじゃなくても良いと思いますが。まあ、ゼロトラストの考えに立てばすべての通信はセキュアであるべきなのかも知れませんが、そこまでいうと社内の通信全部見直さないと。
yambejp

2024/12/13 00:36

ねんのため確認ですが。、メールサーバーは契約しているISP側のものをつかっていてポートは587あたりですかね?
yambejp

2024/12/13 03:51

エクセルのVBA次第だと思うのでこれ以上想像でアドバイスは厳しいかと。VBAを最適化すればoutlookでも問題なくいけそうな気もしますし、メリッサのようなマクロウィルスを排除するようなセキュリティ対策がされていれば送るのは難しいかもしれません。 エクセルでやるのは課題が残るので、XAMPPあたりでDB管理して簡単なイントラ用WEBアプリを作るほうが楽かもしれません
guest

回答1

0

ベストアンサー

ISP側がスロットリングやスパム対策で弾いているのであればクライアント側での対策は困難でしょう。
ただ50通ぐらいで止まってしまうとなると、さほど大量とは思えないですが添付ファイルのを容量や内容によるかもしれません。添付ファイルなしなら送れるのかテストしてみると場合分けができるかもしれません。
単純にVBAでoutlookの呼び出し方が間違えている可能性もあるので、outlook以外という選択肢が正しいかどうかも判断つきません。

投稿2024/12/13 00:40

yambejp

総合スコア117667

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

km0815.lj

2024/12/13 03:56

回答ありがとうございます。 400通を50通程度メール送信したあと、一定のインターバルを置いて次の50通を送る等の 対応策はとっております。 また、webサイトにあるメール送信を参考にして作成しているので、細かな設定を変えれば良いのかも 知れませんが、一応メール送信もできておりますので、Outlookの呼び出しが間違えているとは、 思っておりません。 Outlook経由もCDOを使用してのメール送信もどちらも試していますが、Outlook経由は動作が不安定 で且つ、Outlookの設定も利用者によって異なる場合があるので、できればCDOを使ってメールサーバ での送信にしたかったのですが、msのサイトには、以下の記載があり 「CDO 1.2.1 は 32 ビット クライアント ライブラリであり、64 ビット バージョンの Outlook では動作しません。 これらすべての要因を考慮すると、CDO 1.2.1 は Outlook 2010 以降のバージョンでの使用はサポートされていません。また、Outlook 2010 以降のバージョンでの使用はお勧めしません。」 何か代替え手段や皆さんはどうされているのかと思い、このサイトに投稿いたしました。
yambejp

2024/12/13 04:15

>一応メール送信もできておりますので、Outlookの呼び出しが間違えているとは、 思っておりません。 それは1通もしくは少数では感じられないだけで、間違えてないことの証明にはなりません。 ソースがないのでなんとも言えませんが複数のループ処理を何重にもかければ、累乗的に負荷は高くなります。自分は間違っていないという思い込みは禁物です。 >何か代替え手段や皆さんはどうされているのか 専用のメール配信ソフトを利用するのが賢明でしょう。 https://blastmail.jp/blog/mail-delivery/maildelivery-software5
km0815.lj

2024/12/13 05:04

回答ありがとうございます。 やはり専用ソフトを使うのがよさそうですね。検討いたします。 いろいろアドバイスありがとうございました。 ベストアンサーに選ばせていただきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問