He estado luchando para enviar correos electrónicos desde un programa Haskell por un tiempo, he intentado usar la biblioteca HaskellMime o algo así, pero he fallado.
Instalé HaskellNet recientemente y trato de usar el módulo Haskellnet.SMTP. Intenté enviar un correo electrónico con el comando 'sendMail' y obtener "error de usuario (error sendmail)". Supongo que fue porque el servidor SMTP que utilicé necesitaba autenticación.
Eché un vistazo al código fuente 'sendMail' y terminé escribiendo esta simple principal: http://hpaste.org/47841
Comprobé cada comando 'sendCommand' y después del comando AUTH obtengo un "Auth success" del servidor SMTP y código 250 de los otros comandos, como se esperaba en el código fuente 'sendMail'.
El problema es que no tengo ningún correo en mi buzón, entonces ¿qué estoy haciendo mal? Lo único que se me ocurre es que el correo está en cola en algún lugar de la lista saliente SMTP y necesito enjuagar el servidor SMTP, pero eso no forma parte del código 'sendMail', así que me pregunto ... Cualquier ayuda sería en gran medida apreciado, porque nunca pensé que sería tan difícil enviar un correo electrónico:/
PD Uso exactamente la misma configuración en mi teléfono para enviar correos electrónicos con este servidor SMTP, el mismo "smtp.sfr.fr", la misma ID (dirección completa), la misma contraseña; y funciona: puedo enviar correos desde mi teléfono.
Gracias de antemano por la ayuda.¿Debo limpiar el servidor SMTP? Si es así, ¿cómo hacerlo?
Respuesta
Si bien no puedo comentar sobre el uso de HaskellNet, he tenido un gran éxito usando SMTPClient, que puede tomar de hackage con cabal install SMTPClient
.
He incluido el ejemplo del paquete para darle un sentido de lo que el uso de la biblioteca es como:
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
Bueno, gracias por su respuesta, incluso un código aquí, no estaba pidiendo demasiado, ¡pero gracias! Veré su código, pero esto es lo que hice hasta ahora (y está funcionando): utilicé telnet para conectarme al servidor SMTP que quería usar. Luego emití los comandos necesarios para enviar un correo electrónico, encontré errores, los corrigí. Una vez que los tuve todos correctos, solo usé 'sendCommand's' para enviar los comandos exactos, el mismo orden, los mismos argumentos y simplemente funcionó. Aquí está la parte del código: http://hpaste.org/47929. Por supuesto que es muy minimalista aquí: no compruebo si hay errores, solo un comienzo ^^ – nschoe
- 1. Cómo validar el servidor SMTP
- 2. ¿Debo limpiar el char * pasado a NewStringUTF?
- 3. ¿Cómo construir un servidor smtp?
- 4. ¿Puede el FFI lidiar con matrices? ¿Si es así, cómo?
- 5. Calcular servidor de servidor smtp
- 6. un servidor smtp simple
- 7. Crear un servidor SMTP C#
- 8. ¿Se puede usar REST en PHP? ¿Si es así, cómo?
- 9. ¿Cómo se envía C# con el servidor SMTP de Gmail?
- 10. ¿Las encuestas frecuentes sobrecargarán el servidor? Si es así, ¿cuál es la mejor forma de implementar actualizaciones en vivo?
- 11. Un simple servidor local SMTP
- 12. ¿Debo limpiar la salida del servlet?
- 13. ¿Puedo teñir (negro) un UIKeyboard? ¿Si es así, cómo?
- 14. Buen servidor SMTP en Windows para un servidor de producción
- 15. ¿Se puede usar canvas.getContext ('3d')? Si es así, ¿cómo?
- 16. ¿Puede establecer atributos en Colecciones Backbone.js? ¿Si es así, cómo?
- 17. ¿Es esto un cierre? Si es así, ¿por qué?
- 18. Cómo utilizar GMail como servidor SMTP gratuito y superar captcha
- 19. python. ¿Puedo verificar si el Servidor SMTP está desconectado (para que pueda volver a conectarme?)
- 20. ¿Es posible que Ant imprima el classpath para un objetivo en particular? ¿Si es así, cómo?
- 21. Servidor SMTP que guarda todo el correo en una carpeta?
- 22. Enviando correo con el servidor SMTP de Gmail
- 23. ¿Debo I Unit Test Data Layer Access? ¿Es esta una buena práctica y cómo hacerlo?
- 24. es si() {} {hacerlo, mientras que();} exactamente igual, mientras que {}
- 25. servidor de desarrollo smtp para windows
- 26. Servidor SMTP ficticio para fines de desarrollo
- 27. Servidor SMTP para MAC - ¿Alguna sugerencia?
- 28. ¿Limpiar o no limpiar el directorio $ JBOSS_HOME/server/web/tmp?
- 29. ¿Cómo enviar un correo directamente al servidor SMTP sin autenticación?
- 30. iphone para enviar correo electrónico usando el servidor smtp?
¿Ha comprobado su carpeta de correo no deseado? – hammar
Sí, había revisado mis carpetas de spam, no había nada allí. – nschoe