Open3

MailKitあれこれ

可変可変

データをメールでやり取りしているシステムがあり、仕方なく 受信~添付ファイルの分離/保存を自動化することになったので、道中のハマりポイントなどをメモ

可変可変

Dateヘッダの罠

Dateヘッダの文字列をそのままDateTimeOffset.Parseすると死ぬ場合がある。
これは、Wed, 16 Oct 2024 08:05:47 +0900 (JST)のようにすんなりパースできないケースがあるため。
(この場合、末尾の(JST)が余計)

ちゃんと手段は用意されていて
MimeKit.Utils.DateUtils.TryParseを使えばよい

可変可変

受信(POP3)の基本的な流れ

公式のReadMeのサンプルコード(C#)
https://github.com/jstedfast/MailKit?tab=readme-ov-file#retrieving-messages-via-pop3
をそのまま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を調べてから取得するとよい。