Open3
MailKitあれこれ
データをメールでやり取りしているシステムがあり、仕方なく 受信~添付ファイルの分離/保存を自動化することになったので、道中のハマりポイントなどをメモ
Dateヘッダの罠
Dateヘッダの文字列をそのままDateTimeOffset.Parse
すると死ぬ場合がある。
これは、Wed, 16 Oct 2024 08:05:47 +0900 (JST)
のようにすんなりパースできないケースがあるため。
(この場合、末尾の(JST)
が余計)
ちゃんと手段は用意されていて
MimeKit.Utils.DateUtils.TryParse
を使えばよい
受信(POP3)の基本的な流れ
公式のReadMeのサンプルコード(C#)
をそのままF#にするとこんな感じopen MailKit.Net.Pop3
[<EntryPoint>]
let main args =
use client = new Pop3Client()
client.Connect("pop.friends.com", 110, false)
client.Authenticate("joey", "password")
[ 0 .. client.Count - 1 ]
|> List.iter (fun i ->
let message = client.GetMessage(i)
printfn $"Subject: {message.Subject}")
client.Disconnect(true)
0
このサンプルのように全件取得すると、サーバーにあるメールの量によっては大変時間がかかるため、その場合は、GetMessageHeaders
でヘッダの一覧を取得して、目的のメッセージのIndexを調べてから取得するとよい。