記事
· 2022年3月29日 3m read

SSL/TLS を使用しているメールサーバへメールを送信するコードサンプルご紹介

これは、InterSystems FAQサイトの記事です。

メール送付のコードを記述する前に、管理ポータルで SSL/TLS 構成を作成します。

管理ポータル > システム管理 > セキュリティ > SSL/TLS 構成

メール送付までの流れは以下の通りです。

  1. メールメッセージ用クラス:%Net.MailMessage のインスタンスを作成し、送信元メールアドレス、宛先メールアドレス、件名、本文を設定します。
  2. 認証情報設定用クラス:%Net.Authenticator のインスタンスを作成し、メール送付時に使用する認証情報を設定します。
  3. 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)
ディスカッション (0)1
続けるにはログインするか新規登録を行ってください