POP3プロトコルでメールを受信する

Deeplからの自動翻訳

4D v18では、使いやすくパワフルな新しいメール作成・送信方法を導入しました。HTMLをベースにした(画像、動画、添付ファイル付き)人目を引くメールを、数行のコードで送信できる方法です。 4D v18 R2では、ローカルにメールをダウンロードし、メールサーバーから削除する機能が追加されました。このブログポストでは、これが提供する新しい可能性について説明します。

新しい POP3 New transporterコマンドを使用すると、POP3 プロトコルを使用して電子メールを管理することができます。Post Office Protocol (POP) は、メールサーバーから電子メールを取得するための標準的なプロトコルです。POP3 サーバーに接続し、メッセージを取得して自動的に処理したり、ローカルのデータベースに保存したり、サーバーから削除したりするなどの動作に便利です。

HDI POP3メールボックスのダウンロード

pop3 トランスポーターの作成

SMTP と同様に、POP3 プロトコルを使用する場合、まず POP3 トランスポーターを作成する必要があります (コマンドを使用します)。 POP3 New transporterコマンドで)作成する必要があります。

$server
:=New object
$server .host:="yourPOP3host.com"
$server .port:=995
$server .user:="4D.POP3@mail.com"$serverpassword :="XXXXXX"
// Create a transporter from your server information
$POP3 transporter:=POP3 New transporter($server)

メール情報

メールボックス内のすべてのメッセージに関する情報は、POP3トランスポーターの getMailInfoList()メソッドでメールボックス内のすべてのメッセージに関する情報を得ることができます。返されるリストには、特に、POP3トランザクション中の各メールを識別するメッセージ番号が含まれています。

$mailInfos:=$POP3 transporter.getMailInfoList()

もし、一つのメッセージの情報だけが必要な場合は、次のメソッドも使えます。 getMailInfo()メソッドを使うこともできます…その場合は、パラメータにメッセージ番号を渡します。

$mailInfo:=$POP3 transporter.getMailInfo($mailNumber)

メール受信

すべてのメッセージ、あるいは特定のメッセージをダウンロードするには getMail()メソッドを使って、すべてのメッセージまたは特定のメッセージをダウンロードすることができます。特定のメッセージをダウンロードするには、単にパラメータとして getMailInfoList()が返すメッセージ番号をこのメソッドにパラメータとして渡すだけです。次の例は、メールボックス内のすべてのメッセージをダウンロードする方法を示しています。

$mailInfos:=$POP3 transporter.getMailInfoList()
$mails :=New collection
For each ($mail;$mailInfos)
// Download email
$mails . push($transporter.getMail($mail.number))
End for each

メール削除

メソッドを使用すると、セッションの終了時に削除するメッセージにフラグを付けることができます。 delete()メソッドを使用します。と同じ方法で getMail()メソッドによって返されるメッセージ番号をパラメータとして渡します。 getMailInfoList()をパラメータとして渡します。たとえば、メールボックス内のすべてのメッセージをダウンロードして削除したい場合。

$mailInfos:=$POP3 transporter.getMailInfoList()
For each ($mailInfo;$mailInfos)
// Download email
ProcessMail ($POP3 transporter.getMail($mailInfo.number))

// Flag messages "to be deleted at the end of the session"
. ( . ) $POP3 transporterdelete$mailInfonumber
End for each

// Force the session closure to delete the messages flagged for deletion
$POP3 transporter:= =Null

メールボックス情報

メールボックス内のメール数とメールボックスのサイズを取得するためには getBoxInfo()メソッドで取得できます。

$boxInfo:=$POP3 transporter.getBoxInfo()
ALERT ("Size: "+String($boxInfo.size)+" - Count:"+String($boxInfo.mailCount))

ログトランザクション

SMTPログと同様に、すべてのPOP3トランザクションをログに記録することができます。ログを作成するには、2つの方法があります。

  • サーバー上でPOP3ログを実行する – 4Dサーバーの “Start Request and Debug Logs “ボタンをクリックします。
  • 特定のトランザクションをログに記録する (デバッグ時など) – POP3 トランスポートの logFilePOP3トランスポーター・オブジェクトのプロパティを使用します。

$serverhost:="yourpop3server.com" . :="login" . :="psw" . :="C:\tmp__POP3Log.txt"
$serveruser
$serverpassword
// Enter the path of the log file you want to create
$serverlogFile
$transporter := ( )POP3 New transporter$server

これらのコマンドはすべて、上記の HDI を使ってテストすることができます。

Fabrice Mainguené
- Product Owner -Fabrice Mainguenéは、2016年11月に4D Programチームに参加しました。プロダクトオーナーとして、彼はユーザーストーリーを書き、それを機能仕様に変換する役割を担っています。CNAMでコンピュータサイエンスの学士号を取得した後、FabriceはWindev開発者として小さなソフトウェア出版社に入社しました。その後、彼は産業および貿易分野のさまざまな企業で、Windev および Web 開発者として、また新機能の技術アドバイザーとして働きました。