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 |
---|---|---|---|
Gmail | smtp.gmail.com | 465 | True |
Yahoo | smtp.mail.yahoo.co.jp | 465 | True |
自社SMTP | 自社の設定 | 指定のポート | True/False |
※ポートやSSLの有無はサーバーの仕様に従ってください。
⚠️ 注意点
- セキュリティのため「アプリパスワード」を使うことを推奨
- セキュリティソフトやネットワーク制限でブロックされる場合があります
- CDO.Message は古い技術ですが、軽量でOutlookなしでも動作するのがメリット