2016-08-09 337 views
2

Ich versuche herauszufinden, wie Sie eine E-Mail-Nachricht über AWS SES mit mime-mail-ses Paket senden. Ich benutzte renderSendMailSES Beispiel von Yesod wiki unter den Code zu versuchen - ich bin mit renderMail hier den Fehler in mail Körper Validierung zu debuggen:renderParts Fehler in Mime-Mail-Paket

*Main> let textPart = Part {partType = "text/plain; charset=utf-8", 
partEncoding = None, partFilename = Nothing, partHeaders = [], partContent = "Testing"} 
    *Main> let htmlPart = Part { partType = "text/html; charset=utf-8", 
partEncoding = None, partFilename = Nothing, partHeaders = [], partContent = "Testing"} 
    *Main> renderMail' (emptyMail $ Address Nothing "[email protected]") { 
mailTo = [Address Nothing "[email protected]"] , mailHeaders = [ ("Subject", 
"Testing email address")], mailParts = [[textPart, htmlPart]]} 

ich diesen Fehler:

*** Exception: renderParts called with null parts 

Das ist ganz Kopf- scratcher, weil das obige Beispiel nicht von Yesod Wiki unterscheidet. Ich kann wegen des obigen Fehlers keine Anlage hinzufügen. Eine Anlage, wenn ich mich nicht täusche, wird für mailParts wie folgt aussehen:

mailParts = [[textPart,htmlPart],[attachment1]] 

ich im Code gesucht, die den Fehler verursacht, kann aber nicht herausfinden, was falsch ist.

Ich werde sehr schätzen Zeiger, diesen Fehler zu beheben.

+0

Sie meinen das "MIME-Mail-SES" -Paket, richtig? –

+0

@RowanBlush, ja, richtig. Behoben. – Sal

+0

Hm ... Ich kann nicht reproduzieren! [gist] (https://gist.github.com/e1876b24d0e856dacd2c1dbe6f8161b5). Erhalten Sie den gleichen Fehler, wenn Sie meine parts.hs in GHCi laden und versuchen, "gerendert" anzuzeigen? Wenn ja, würde ich annehmen, dass es sich um ein Versionierungsproblem handeln muss ... –

Antwort

2

Dies ist ein Versionierungsproblem. Ich hatte eine lokale gepatchte Kopie von http-client von github (um eine Streaming-Validierung hinzuzufügen, die nicht in stackage noch war), die hier der Übeltäter zu sein scheint. Ich habe es behoben, indem ich den HTTP-Client so geändert habe, dass er auf http-client im Stack mit der Release-Version zeigt, die meine Fixes hatte(). Jetzt funktioniert es gut.