Outlook × Access

Access×Gmail SMTP送信:Outlookが無くてもメール送信できる?

nanikatoaccess

以下では、「Access×Gmail SMTP送信:Outlookが無くてもメール送信できる?」をテーマに、Microsoft Access のVBAからGmailのSMTPサーバーを直接呼び出してメールを送る方法を紹介します。OutlookをインストールしていないPCでも、Gmailアカウントの認証情報を使用して送信できるため、軽量・シンプルなメール送信シナリオで役立ちます。ぜひ参考にしてみてください。


1. なぜGmail SMTPを使うのか?

  • Outlookがない環境: 一部ユーザーPCやサーバーにOutlookをインストールせずにAccessを使っている場合
  • シンプルなSMTP送信: 通常VBAからOutlookを呼び出す方法は簡単ですが、Outlookライブラリの参照やセキュリティポップアップ等に悩まされるケースがある
  • Webサーバーや仮想環境での運用: Outlookのインストールが難しいリモート環境で、CDOやSMTPによるメール送信を行う

2. Gmail SMTPサーバーの基本情報

GmailのSMTP(送信サーバ)の一般的な設定は以下の通りです:

  • サーバー: smtp.gmail.com
  • ポート: 587 (STARTTLS)または 465 (SSL/TLS)
  • 認証: ユーザーID(Gmailアドレス)+パスワード
  • 暗号化: TLSやSSLが必要

注意:

  • Googleアカウントに二段階認証(2FA)を有効にしている場合、アプリパスワードを発行しないとログインできない
  • 「安全性の低いアプリの許可」を使う方法もあるが、Googleはこれを非推奨にしており、アプリパスワードが推奨される

3. 送信実装例:CDO.Messageを使ったVBAコード

VBA上でCDO (Collaboration Data Objects) を使い、GmailのSMTPへ直接接続するサンプルを示します。

Option Compare Database
Option Explicit

Public Sub SendMailViaGmailCDO()

Dim objMsg As Object
Dim strSMTP As String
Dim strUser As String
Dim strPass As String

' --- GmailのSMTP情報 ---
strSMTP = "smtp.gmail.com"
strUser = "あなたのメールアドレス@gmail.com"
strPass = "アプリパスワード" ' 2FAの場合はアプリパスワードを取得

' CDO.Message オブジェクト生成
Set objMsg = CreateObject("CDO.Message")

' コンフィグ設定
With objMsg.Configuration.Fields
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 ' cdoSendUsingPort
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTP
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = strUser
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = strPass
' TLSを使う (ポート587)
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
.Update
End With

' メール本体の設定
With objMsg
.From = strUser
.To = "送信先メールアドレス@example.com"
.Subject = "Access + Gmail SMTPテスト"
.TextBody = "CDO + Gmailでメール送信しています。" & vbCrLf & "Outlook不要!"
.Send
End With

MsgBox "メール送信完了しました。", vbInformation

Set objMsg = Nothing
End Sub

ポイント解説:

  1. Configuration.Fields で、SMTPサーバーポート(587), 認証情報(ユーザー/パス) を設定
  2. .Item(".../smtpusessl") = True → TLS暗号化を有効
  3. .From, .To, .Subject, .TextBody などでメール内容指定
  4. .Send で実際に送信

実行すると:

  • Gmail SMTPに接続してメールが送られる
  • 受信先で確認しよう

4. Outlookなしで実行する際の注意点

  1. Googleアカウントの設定
    • 二段階認証(2FA)を有効にしている場合は、アプリパスワードを使う
    • “安全性の低いアプリのアクセス”は旧オプションであり、現在は廃止方向
  2. セキュリティポリシー
    • 企業環境で外部SMTPを使う際、IT部門の許可やファイアウォール設定が必要なケースも
  3. CDOライブラリ
    • 通常のWindows/Office環境に標準で含まれているが、レガシー要素もあり、将来にわたってサポートが続く保証はない
    • 代替としてSystem.Net.Mail(VB.NET)に近い実装は標準VBAにはなく、CDOが手軽な手段

5. その他活用例:添付ファイルやHTMLメール

5.1 添付ファイル

.With objMsg
...
.AddAttachment "C:\Temp\Document.pdf"
...
.Send
End With
  • objMsg.AddAttachment ファイルパス で添付可能 (CDOバージョンによってはAddAttachmentがない場合があるため要注意)

5.2 HTMLメール

With objMsg
.HTMLBody = "<html><body><h1>こんにちは</h1><p>HTMLで送信!</p></body></html>"
.Fields("http://schemas.microsoft.com/cdo/configuration/sendformat") = 0 ' cdoSendEmailHTML
...
End With
  • HTML形式で送る際は .Fields(".../sendformat") = 0 (HTML)
  • .TextBody ではなく .HTMLBody を設定

6. メリット/デメリット:Gmail SMTP vs Outlook

項目Gmail SMTP (CDOなど)Outlookライブラリ
必要ソフトOutlook不要。Access単体 & ネット接続があれば可OutlookをPCにインストール必須
セキュリティ関連Googleアカウントで2FAやアプリパス等が必要組織のExchange環境やOutlookのセキュリティが関与
操作性直接コードでSMTP設定。エラーはSMTPレベルで返るVBAでOutlookオブジェクトを生成し操作。Office連携しやすい
UI操作 (Draft表示等)なし。すぐに送信.Displayで編集画面表示し、手動送信できる
大量送信/一括送信メールサーバーのレート制限に注意 (Gmailは1日上限など)Exchange側でもスパム判定があるが、企業内なら調整可
依存関係CDOライブラリ(Windows標準) + GmailアカウントOutlookのバージョンやライセンスに依存

結論:

  • Outlookが不要な環境、クラウドメールの簡易送信ならGmail SMTPが有効
  • 既にOutlookが入っておりExchange連携するならOutlookライブラリを使う方が簡単な場合も多い

7. まとめ:OutlookなしでもAccessからメールを送ろう

  1. Gmail SMTPでの送信手順
    • CD0オブジェクトを作成し、smtp.gmail.com へポート587(または465)で接続
    • 認証情報にGmailアドレスアプリパスワードをセット
    • .From, .To, .Subject, .TextBodyを指定して .Send
  2. アカウント設定とセキュリティ
    • 二段階認証 + アプリパスワードが推奨
    • G Suite(Workspace)でセキュリティ制限がかかっていると要管理者対応
  3. Access + CDOのメリット
    • Outlookをインストールせずに軽量なメール送信実装が可能
    • 大量メール発射にも利用可(ただしGmailレートリミットに注意)
  4. 代替策:Outlookライブラリ
    • Outlookが使えるなら、UI表示(.Display)や既存署名利用などメリットも大きい

「Access + Gmail SMTP」は、シンプルかつローカル環境にも依存しない送信手段として非常に便利です。Outlookが不要だったり、サーバー上で自動送信したい場合などは、ぜひCDO + Gmailの仕組みを試してみてください。


関連記事

Gmail SMTPを上手に活用すれば、外部連携が必要なAccessアプリでも安価にメール通知を構築できます。アプリパスワードセキュリティ設定を正しく行い、安全・スムーズな運用を目指しましょう。

DMM
ABOUT ME
まー
まー
駆け出しブロガー
入社した会社では、Accessを活用した基幹システムが長年運用されていました。しかし、開発者の高齢化により保守が困難となり、システムの維持・更新が急務に。 ほぼAccessに触れたことのなかった私は、ゼロから学びながら基幹システムを再構築してみることに。ついにはAccessによるシステム開発エンジニアとしてのスキルを身につけるまでに成長。 元々の業務のノウハウとそれを効率化するためのツール(Access)によって業務効率化システムをいくつも開発してきました。 みなさんの”なにか(業務のノウハウ)”とAccessで業務効率化を実現するお役に立てれば幸いです。 月30万の高配当投資も行っています。最新の銘柄情報もお届けしていきます。
googleアドセンス
記事URLをコピーしました