Network.Mail.Mime でのメール送信方法 では、sendmail が必要でしたが、Network.Mail.Client.Gmail を使用すればこちらも簡単にメール送信が行えます。
Gmail.hs
{-# LANGUAGE OverloadedStrings #-}
import Network.Mail.Client.Gmail
import Network.Mail.Mime
main :: IO ()
main = sendGmail
"foo@gmail.com" -- username
"password" -- password
(Address Nothing "from@example.com") -- from
[Address Nothing "to@example.com"] -- to
[] -- cc
[] -- bcc
"Subject" -- subject
"body1\nbody2\nbody3\n" -- body
[] -- attachments
30000000 -- timeout (in microseconds)
これだけです。私は Google アカウントは二段階認証で保護していますが、このコードを実行するにあたり特に二段階認証は要求されませんでした。
このコードのポイントは最後のタイムアウトで、これが短すぎるとメール送信が成功しません。上記サンプルでは 30 秒に指定していますが、私の環境では 3〜4 秒で送信が完了してプログラムが自動的に終了します。