gpt4 book ai didi

email - 我需要刷新 SMTP 服务器吗?如果是,该怎么做?

转载 作者:行者123 更新时间:2023-12-04 21:24:16 29 4
gpt4 key购买 nike

我一直在努力在 Haskell 程序中发送电子邮件表格一段时间,尝试使用 HaskellMime 库或类似的东西,但失败了。
我最近安装了 HaskellNet 并尝试使用 Haskellnet.SMTP 模块。
我尝试使用“sendMail”命令发送电子邮件并收到“用户错误(sendMail 错误)”。我想这是因为我使用的 SMTP 服务器需要身份验证。
我查看了 'sendMail' 源代码并最终编写了这个简单的 main:http://hpaste.org/47841
我检查了每个“sendCommand”命令,在 AUTH 命令之后,我从 SMTP 服务器获得了“验证成功”,并从其他命令获得了 250 个代码,正如“sendMail”源代码中所预期的那样。
问题是我的邮箱中没有任何邮件,那我做错了什么?我唯一能想到的是,邮件在 SMTP 传出列表中的某个地方排队,我需要刷新 SMTP 服务器,但这不是“sendMail”代码的一部分,所以我想知道......
任何帮助将不胜感激,因为我从没想过发送电子邮件会如此困难:/
附言我在手机上使用完全相同的设置通过此 SMTP 服务器发送电子邮件,相同的“smtp.sfr.fr”,相同的 ID(整个地址),相同的密码;它的工作原理:我可以从我的手机发送邮件。
在此先感谢您的帮助。

最佳答案

虽然我无法评论您对 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") "nobody@example.com"],
To [NameAddr (Just "Stephen Blackheath") "unprintable.distances.stephen@blacksapphire.com"],
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

关于email - 我需要刷新 SMTP 服务器吗?如果是,该怎么做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6357533/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com