无法用Network.Mail.SMTP发送电子邮件
我一直在阅读Network.Mail.SMTP的文档以发送电子邮件。我的问题而来的代码开始运行,我得到一个消息,说以后无法用Network.Mail.SMTP发送电子邮件
插座11:文件
的Data.ByteString.hGetLine结束当我检查收件人的电子邮件地址和发送的收件箱文件夹发送电子邮件的文件夹,没有消息正在发送。我能做些什么来使这些代码能够完成工作。我发布了代码并省略了一些敏感部分。
import Network.Mail.Mime
import Network.Mail.SMTP
import qualified Data.Text as T
import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as BL
mFrom = Address (Just $ T.pack "FirstName LastName") (T.pack "Sender's Email")
mTo = [Address Nothing (T.pack "Recipient Email")]
mCC = []
mBCC = []
mHeader = [(B.empty, (T.pack "Test Header"))]
pType = T.empty
pEncoding = None
pFilename = Nothing
pHeader = [(B.empty, T.pack "Test Part Header")]
pContent = BL.empty
pPart = Part pType pEncoding pFilename pHeader pContent
alternative =[pPart]
mParts = [alternative]
mMail = Mail mFrom mTo mCC mBCC mHeader mParts
a = sendMailWithLogin' "smtp.gmail.com" 465 "Sender Email" "Sender Password" mMail
main = a
我能重现错误,但老实说,我不知道为什么会这样,也许它与加密该怎么办,我想谷歌禁止不具有(但是,这只是一个猜测)。
但因为我想起了已经发送一些电子邮件,在过去的Haskell - 我翻出了一些旧代码:注意这个使用HaskellNet
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Control.Monad (when)
import Control.Exception (bracket)
import Network.HaskellNet.SMTP.SSL
main :: IO()
main = bracket
(connectSMTPSSL "smtp.gmail.com")
closeSMTP $ \conn ->
do success <- authenticate LOGIN
"[email protected]"
"password"
conn
when success
$ sendPlainTextMail "to" "from" "Test" "test" conn
的使用是非常简单的建立一个连接,验证了它送你电子邮件,如果你有附件使用sendMimeMail
或sendMimeMail'
或者如果你想使用现有的Mail
类型,你已经建立使用sendMimeMail2
。
如果你还没有看到bracket
这是(相当优雅的)haskell变种try..finally
- 它只是确保连接关闭。
所以我复制/粘贴到我的编辑器中,并用它的真实值代替所有东西并运行它。它运行时没有错误,但没有发送电子邮件。有什么我可能做错了吗? –
你可以改变'if success then..else..'并检查验证是否失败 – epsilonhalbe
您是否尝试过使用空列表,而不是当前定义的'mParts' – epsilonhalbe
刚刚尝试过,结果没有改变。 –
你尝试过使用'simpleMail'吗? – epsilonhalbe