我一直在努力在Haskell程序中發送電子郵件一段時間,嘗試使用HaskellMime庫或類似的東西,但失敗了。
我最近安裝了HaskellNet並嘗試使用Haskellnet.SMTP模塊。 我試着用'sendMail'命令發送郵件,並得到「用戶錯誤(sendMail錯誤)」。我想這是因爲我使用的SMTP服務器需要認證。
我看了一下'sendMail'源代碼,最後寫了這個簡單的主要代碼:http://hpaste.org/47841
我檢查了每個'sendCommand'命令,並且在AUTH命令後,我從SMTP服務器獲得了「Auth success」從其他命令,如'sendMail'源代碼中的預期。
問題是我的郵箱裏沒有郵件,所以我做錯了什麼?我唯一能想到的就是郵件是在SMTP列表中排隊的地方,我需要刷新SMTP服務器,但這不是'sendMail'代碼的一部分,所以我想知道...... 任何幫助將大大地讚賞,因爲我從來沒有想過這會很難發送電子郵件:/
PS我在手機上使用完全相同的設置來發送帶有此SMTP服務器的電子郵件,相同的「smtp.sfr.fr」,相同的ID(整個地址),相同的密碼;它的工作原理:我可以通過手機發送郵件。
在此先感謝您的幫助。我需要刷新SMTP服務器嗎?如果是的話,該怎麼做?
5
A
回答
2
儘管我不能評論你對HaskellNet的使用,但我使用SMTPClient取得了巨大的成功,你可以從cabal install SMTPClient
中從hackage中獲得。
我已經包括了包裝的給你使用的庫是什麼樣的感覺例如:
import Network.SMTP.ClientSession
import Network.SMTP.Client
import Network.Socket
import System.Time
import System.IO
import Data.Bits
import Data.IORef
myDomain = "example.com"
smtpHost = "hubert.blacksapphire.com" -- <-- Your SMTP server here
-- This will send the author an email. I don't mind!
main = do
now <- getClockTime
nowCT <- toCalendarTime now
let message = Message [
From [NameAddr (Just "Mr. Nobody") "[email protected]"],
To [NameAddr (Just "Stephen Blackheath") "[email protected]"],
Subject "I'm using SMTPClient!",
Date nowCT
]
("Dear Sir,\n"++
"It has come to my attention that this is an email.\n"++
"Yours sincerely,\n"++
"Mr. Nobody\n")
addrs <- getAddrInfo Nothing (Just smtpHost) Nothing
let SockAddrInet _ hostAddr = addrAddress (addrs !! 0)
sockAddr = SockAddrInet (fromIntegral 25) hostAddr
putStrLn $ "connecting to "++show sockAddr
sentRef <- newIORef []
sendSMTP' (hPutStrLn stderr) (Just sentRef) myDomain
sockAddr [message]
statuses <- readIORef sentRef
-- If no exception was caught, statuses is guaranteed to be
-- the same length as the list of input messages, therefore head won't fail here.
case head statuses of
Nothing -> putStrLn "Message successfully sent"
Just status -> putStrLn $ "Message send failed with status "++show status
+0
嗯,謝謝你的回答,即使是在這裏的代碼,我也不是在問這麼多,但是謝謝你!我會研究你的代碼,但這是我到目前爲止所做的(並且它正在工作):我使用telnet連接到我想要使用的SMTP服務器。然後我發佈了發送電子郵件所需的命令,我遇到了錯誤,我糾正了它們。一旦我把它們全部改正了,我只是使用'sendCommand'來發送確切的命令,相同的順序,相同的參數,它只是工作。以下是代碼的一部分:http://hpaste.org/47929。當然這裏很簡單:我不檢查錯誤,但只是一個開始^^ – nschoe 2011-06-18 10:48:38
相關問題
- 1. 如果當前的ASP.NET會話爲空,我應該怎麼做?
- 2. 我該怎麼做?我需要調用一個服務類,但我需要傳遞參數
- 3. 我應該複製一個類的實例來實現這個嗎?如果是的話,我該怎麼做?
- 4. 我需要在MapView上做一個指針,該怎麼做?
- 5. 我該怎麼做?
- 6. 我需要施放和枚舉,我該怎麼做?
- 7. 我如何檢查我的郵件服務器是否需要smtp驗證?
- 8. 在亞馬遜linux服務器上安裝php 5.3 ..我需要降級到5.2我該怎麼做?
- 9. 這是什麼叫,我該怎麼做?
- 10. 爲什麼我總是需要重新啓動Rails服務器?
- 11. iOS訂閱 - 我需要服務器嗎?
- 12. 我需要服務嗎?
- 13. 我需要微服務嗎?
- 14. 我們應該需要兩臺服務器,在服務器端
- 15. 需要在按下時放大圖像。我該怎麼做?
- 16. 需要重置功能我該怎麼做
- 17. 需要將JBoss 7.1.1集成到MyEclipse 8.6中,我該怎麼做?
- 18. 需要知道,如果這是可能的SQL如果是的話,該怎麼辦呢
- 19. 如果我想隱藏我的textarea,我該怎麼做?
- 20. 我是否需要服務器端的知識(例如Django,Rails),如果我想要做Javascript,AJAX的東西?
- 21. 設置SMTP郵件服務器。完成安裝SMTP。怎麼辦?
- 22. 是appuse 2.2.1可能使用需要驗證的smtp服務器嗎?
- 23. 我需要刷新servlet輸出流嗎?
- 24. SMTP服務器要求
- 25. 如果我的Rails測試不通過,我應該怎麼做?
- 26. 我可以在TabLayout Fragment中使用MVP設計模式嗎?如果是的話,該怎麼做?
- 27. 我應該怎麼做?
- 28. 我該怎麼做MongoDB中
- 29. 我該怎麼做PyQt4?
- 30. regexp freebie ...我該怎麼做?
您檢查您的垃圾郵件文件夾? – hammar 2011-06-15 22:04:26
是的,我檢查了我的垃圾郵件文件夾,裏面沒有東西。 – nschoe 2011-06-18 10:44:05