SSL/TLS を使用しているメールサーバへメールを送信するコードサンプルご紹介
これは、InterSystems FAQサイトの記事です。
メール送付のコードを記述する前に、管理ポータルで SSL/TLS 構成を作成します。
管理ポータル > システム管理 > セキュリティ > SSL/TLS 構成
メール送付までの流れは以下の通りです。
- メールメッセージ用クラス:%Net.MailMessage のインスタンスを作成し、送信元メールアドレス、宛先メールアドレス、件名、本文を設定します。
- 認証情報設定用クラス:%Net.Authenticator のインスタンスを作成し、メール送付時に使用する認証情報を設定します。
- SMTP用クラス:%Net.SMTP のインスタンスを作成し、SMTP サーバの設定、管理ポータルで作成した SSL/TLS 構成名の指定、2で作成した認証情報と 1で作成したメールメッセージを使用して、メールを送信します。
ターミナルからの実行例は以下の通りです(Gmail を利用しています)。
《メモ》
現在(2022年5月30日以降)、Gmailを利用したメール送付を行う場合 OAuth2.0 の利用が必須となりました。Gmailを利用する場合の手順ついては、「OAuth 2.0 を利用して IRIS から Gmail を送信する」をご参照ください。
《そのほかの注意》
Gmailを利用する場合、Gmailアカウントに対して「安全性の低いアプリのアクセス」を有効にする必要があります。
また、GmailのSMTPを経由してメール送信するため、Gmailアカウントに対して「アプリ パスワード」を設定する必要があります。
詳細は、Googleアカウントのヘルプページ「アプリ パスワードでログインする」ご参照ください。
// メールメッセージ用インスタンスを準備します
set message=##class(%Net.MailMessage).%New()
set message.From = "<送信元メールアドレス>"
do message.To.Insert("<宛先メールアドレス>")
// メールの件名を設定
set message.Subject = "これはテストメールです"
// メール本文の設定(末尾に改行を入れるメソッド)
do message.TextData.WriteLine("本日は快晴でした")
// メール本文の設定(指定した文字のみを出力するメソッド)
do message.TextData.Write("明日も晴れるといいです。")
// 認証情報設定
set auth = ##class(%Net.Authenticator).%New()
set auth.UserName = "<ユーザID>"
set auth.Password = "<パスワード>"
// SSLを使用する場合(Gmailの例)
set mbox = ##class(%Net.SMTP).%New()
set mbox.smtpserver = "smtp.gmail.com"
set mbox.port="465" // TLS の場合は "587" // SSL 構成のセットアップ
set mbox.authenticator = auth
set mbox.AuthFrom = auth.UserName
set mbox.SSLConfiguration = "GMAILSSL" // SSL 構成名(管理ポータルで設定)
set mbox.UseSTARTTLS=0 // (0は既定)TLSの場合は 1
// メール送信
set status = mbox.Send(message)
write $system.OBJ.DisplayError(status)
// メモ: エラーメッセージだけを文字で取得する場合は以下実行します
write $system.Status.GetErrorText(status)