VBA メール送信 

未分類

VBAでOutlookを使わずにメールを送信するには、SMTPサーバーに直接接続してメールを送る方法があります。以下の手段が一般的です。


✅ 方法1:CDO.Messageを使ってSMTP経由で送信(Outlook不要)

📌 CDO(Collaboration Data Objects)は、Windowsに標準で付属しているCOMコンポーネントです。これを使えば、SMTPサーバー経由でメールを送信できます。


■ 例:GmailのSMTPサーバーを使ってメール送信(SSL対応)

Sub Gmail経由でメール送信()

Dim objMessage As Object
Set objMessage = CreateObject("CDO.Message")

With objMessage.Configuration.Fields
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 ' cdoSendUsingPort
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 ' 認証が必要
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "your_email@gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "your_app_password" ' Gmailのアプリパスワード
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.Update
End With

With objMessage
Set .Configuration = objMessage.Configuration
.To = "recipient@example.com"
.From = "your_email@gmail.com"
.Subject = "CDOを使ったメール送信テスト"
.TextBody = "これはOutlookを使わずに送信したメールです。"
.Send
End With

MsgBox "送信完了!"

End Sub

🔐 Gmailで使うための準備

  • Googleアカウントの「2段階認証」を有効にする
  • アプリパスワードを生成して、それを .sendpassword に使う(通常のログインパスワードは使えません)

🔗 アプリパスワード生成ガイド(Google公式):
https://myaccount.google.com/apppasswords


✅ 方法2:他のSMTP(Yahoo、独自サーバー)も使える

上記コード内の以下を変更すればOK:

プロバイダSMTPサーバーポートSSL
Gmailsmtp.gmail.com465True
Yahoosmtp.mail.yahoo.co.jp465True
自社SMTP自社の設定指定のポートTrue/False

※ポートやSSLの有無はサーバーの仕様に従ってください。


⚠️ 注意点

  • セキュリティのため「アプリパスワード」を使うことを推奨
  • セキュリティソフトやネットワーク制限でブロックされる場合があります
  • CDO.Message は古い技術ですが、軽量でOutlookなしでも動作するのがメリット
タイトルとURLをコピーしました