以前の記事で約束したように、各R-releaseにはメール機能に関するより多くの進歩が含まれ、その隠れたパワーを解き放ちます。
4D v17 R5では、メールログに関する興味深い新機能が提供されています。開発中はすべてうまくいっていたのに、顧客にデプロイしたときに、メール配信に問題が発生することがあります。通信は暗号化されており、SMTPサーバのログファイルにアクセスできないことが多いため、どこで障害が発生したかを発見するのは難しいかもしれません。問題はSMTPサーバーに関連している可能性が非常に高いのですが、どうすれば確認できるのでしょうか?アプリケーションでSMTPログを開始するだけです。このログには、接続の停止を含む、実行されたすべてのアクションの記録が含まれています。さらに良いことに、このログはSMTPサーバーとの通信を暗号化されていないプレーンなテキストで表示するので、分析が容易になります。
この例では SMTP New transporterコマンドは、SMTPサーバー(exchangeやgmailなど )との接続を作成し、そのサーバーとクライアント間のすべての通信をログに記録します。
SMTP通信ログの有効化
送信されたすべての電子メールについて、データベース内のSMTP通信ログを有効にするには、次のコードを使用します。
SET DATABASE PARAMETER(SMTP Log, 1)
サーバー上でSMTPログを簡単に実行するには、4Dサーバー管理ウィンドウの「リクエストとデバッグのログを開始」ボタンをクリックします。
4D Server上で実行されている全てのSMTPトランザクションは、自動的にログに記録されます。
特定のトランザクションをログする
特定のトランザクションをログに記録する必要がある場合 (例えばデバッグ時) は、SMTP オブジェクトの logFileプロパティを使用します。
$serverhost:="yoursmtpserver.com" . :="login" . :="psw" . :="C:\tmp***SMTPLog.txt"
$serveruser
$serverpassword
// Enter the path of the log file you want to create
$serverlogFile
$transporter := ( )SMTP New transporter$server
SMTP Log ファイルの例
ログの各行には、5つの情報が含まれています。
- カウンター
- 日付と時間
- プロセス ID
- 一意のプロセスID
- クライアントからの送信文(“C >”) またはサーバーからの応答(“S <“) と応答コード、返された説明文。
以下は、不正なパスワードで接続しようとした場合の結果です。
1 2019-02-06T15:03:11.586 5 7 ### SMTP ポート 465 で 'smtp.gmail.com' に接続されました。(セキュア)
。
2 2019-02-06T15:03:12.142 5 7 S < "220 smtp.gmail.com ESMTP y139sm19463388wmd.22- gsmtp"
3 2019-02-06T15:03:12.143 5 7 C > "EHLO [192.168.18.9]"
4 2019-02-06T15:03:12.154 5 7 S <"250-smtp.gmail.com at your service, [195.68.52.79]"
5 2019-02-06T15:03:12.154 5 7 s < "250-size 35882577"
6 2019-02-06T15:03:12.154 5 7 s < "250-8bitmime"
7 2019-02-06T15:03:12.154 5 7 s < "250-auth login plain xoauth2 plain-clienttoken oauthbearer xoauth"
8 2019-02-06T15:03:12.154.154 5 7 s < "250-enhancedstatuscodes"
9 2019-02-06t15:03:12.161 5 7 s < "250-pipelining"
10 2019-02-06t15:03:12.161 5 7 s < "250-chunking"
11 2019-02-06t15:03:12.161 5 7 s < "250 smtputf8"
12 2019-02-06t15:03:12.171.162 5 7 C > "AUTH PLAIN"
13 2019-02-06T15:03:12.168 5 7 S < "334 "
14 2019-02-06T15:03:12.168 5 7 C > "****************"
15 2019-02-06T15:03:12.234 5 7 S < "535-5.7.8 ユーザーネームとパスワードは受け付けません詳しくはこちら"
.
16 2019-02-06T15:03:12.234 5 7 S < "535 5.7.8 https://support.google.com/mail/?p=BadCredentials y139sm19463388wmd.22- gsmtp"
17 2019-02-06T15:03:12.235 5 7 C > "QUIT"
18 2019-02-06T15:03:12.242 5 7 S < "221 2.0.0 closing connection y139sm19463388wmd.22 - gsmtp"
19 2019-02-06T15:03:12.242 5 7 ### SMTP Connection closed67 2019-01-10T11:00:08.653 -5 ### SMTP Connection closed
ログで何が起こっているのか、詳しく見てみましょう。
- 1行目ポート 465 で SMTP サーバーとの通信チャネルを開きます。TLS暗号化が自動的に開始され、通信が保護されます。
- 3行目クライアントがEHLOコマンドを送信し、SMTPの会話を開始。
- 4~11行目:サーバーは、サポートされている認証方法のリスト(7行目)を含むいくつかの構成要素を返します。
- 12行目: クライアントは認証タイプを送信します。
- 14行目:クライアントはログイン名とパスワードを送信する。これらはログに平文で表示されることはなく、「*」に置き換えられています。
- 15行目、16行目:サーバーはエラー535を返します、認証に失敗しました。
- 17行目:クライアントが「QUIT」コマンドを送信し、サーバーとの接続を閉じます。
この例でお分かりのように、通信に関する問題のトラブルシューティングが簡単にできるようになりました。
ロギングを楽しんでください。