2017-09-01 18 views
2

私は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 
+0

あなたの現在の定義である 'mParts'の代わりに空のリストを使ってみましたか? – epsilonhalbe

+0

ただ試してみましたが、結果に変更はありません。 –

+0

'simpleMail''を使ってみましたか? – epsilonhalbe

答えて

0

私は、エラーを再現することができますが、正直なところ、私はなぜこれが起こっているかわからない、多分それは私がGoogleが持っていない禁じ推測され、暗号化に関係しています(それは単なる推測です)。

しかし、私は過去にハスケルと一部の電子メールを送信した思い出し以来 - 私はいくつかの古いコードを掘っ:注意これは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が見当たらない場合は、try..finallyの(かなりエレガントな)haskellの亜種です。接続が閉じていることを確認するだけです。

+0

私はこれを私のエディタにコピーして貼り付け、すべてを真の値に置き換えて実行しました。エラーなく実行されますが、電子メールは送信されません。私が間違っている可能性のあることはありますか? –

+0

あなたは 'if success then..else..'をいつ変更し、認証が失敗するかを確認することができます – epsilonhalbe

関連する問題