<div dir="ltr">Hi Vlatko,<div>Yes, I've double checked the keys. I'm using the same ones in a Rails app as well as a small Rust CLI program and they both work (on the same machine too). So it's definitely something I'm missing on the Haskell side.</div><div><br></div><div>I checked my package versions, and I have:</div><div>mime-mail 0.4.11<br></div><div>mime-mail-ses 0.3.2.2</div><div>mime-types 0.1.0.6</div><div><br></div><div>So it looks like we're using the same versions. I'm not sure about the E2 instance. I'll have to check with my DevOps colleague at work to make sure. If it's still SES email, I would imagine that it shouldn't matter, especially since both the Ruby (ActionMailer) and Rust (lettre) email libraries I'm using are general email libraries and not SES-specific and they both work fine, but at this point, who knows? I've tried everything else without success, but the fact that you're using it ok tells me I'm probably close and just missing a small detail or so.</div><div><br></div><div>Kind of surprised how difficult it's been actually. I was expecting the Rust library to be the one that gave me problems. :)</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Apr 30, 2016 at 12:39 AM, Vlatko Basic <span dir="ltr"><<a href="mailto:vlatko.basic@gmail.com" target="_blank">vlatko.basic@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="background-color:rgb(255,255,255);color:rgb(0,0,0)" text="#000000" bgcolor="#FFFFFF">
Hi David,<br>
<br>
I'm using almost exact function as you wrote below and it works
without problems. Using mime-mail-ses-0.3.2.2.<br>
<p>However, it works on E2 instance. Don't know if that matters.</p>
<p>Stupid question, but have you double checked keys? <br>
</p>
<p>I received similar errors when keys were not correct (they were
not hardcoded, but fetched).</p>
<p><br>
</p>
<p>br,</p>
<p>vlatko<br>
</p><div><div class="h5">
<br>
<blockquote style="border-left:2px solid #330033!important;border-right:2px solid #330033!important;padding:0px 15px 0px 15px;margin:8px 2px" type="cite"><span style="color:#000000">
<div>-------- Original Message --------<br>
Subject: Re: [Haskell-cafe] Amazon SES email issues<br>
From: David Escobar <a href="mailto:davidescobar@ieee.org" target="_blank"><davidescobar@ieee.org></a><br>
To: David Johnson <a href="mailto:djohnson.m@gmail.com" target="_blank"><djohnson.m@gmail.com></a><br>
Cc: Haskell Cafe <a href="mailto:haskell-cafe@haskell.org" target="_blank"><haskell-cafe@haskell.org></a><br>
Date: 30/04/16 09:10<br>
</div>
<br>
<br>
</span>
<div dir="ltr">David, thanks for the suggestion. Are there any
examples on how to send an email? I've looked through several of
the Haskell email packages and have been able to figure out
their APIs easily enough, but this one seems incredibly complex
- almost seem to have to know the internals of SES to use it
effectively and the documentation / examples are scant.</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Fri, Apr 29, 2016 at 7:07 AM, David
Johnson <span dir="ltr"><<a href="mailto:djohnson.m@gmail.com" target="_blank">djohnson.m@gmail.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">I think that package is using an outdated
version of the AWS Signing algorithm.<br>
<pre><span><font color="#008080">"AWS3-HTTPS"
</font><font face="arial, sans-serif"><span style="white-space:normal">I think AWS is migrating most of their APIs (who have domains / services created after a certain date) to require using the V4 Signature algorithm for all API requests.
The amazonka-ses would probably work better.</span></font></span></pre>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">
<div>
<div>On Fri, Apr 29, 2016 at 1:45 AM, David
Escobar <span dir="ltr"><<a href="mailto:davidescobar@ieee.org" target="_blank"></a><a href="mailto:davidescobar@ieee.org" target="_blank">davidescobar@ieee.org</a>></span>
wrote:<br>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>
<div>
<div dir="ltr">Hi everyone,
<div>I'm having issues with sending email
through Amazon SES. I'm using the <b>Network.Mail.Mime.SES</b>
package. The error I get is:</div>
<div><br>
</div>
<div><b>email-test-exe: SESException {seStatus =
Status {statusCode = 403, statusMessage =
"Forbidden"}, seCode =
"SignatureDoesNotMatch", seMessage = "The
request signature we calculated does not
match the signature you provided. Check your
AWS Secret Access Key and signing method.
Consult the service documentation for
details.", seRequestId =
"8ceb250a-0dd3-11e6-892c-4fb1a14d4732"}</b></div>
<div>
<p>What's confusing is that I'm using the same
SES settings in a Rails app as well as a
small Rust console program without any
issues (it works from the same machine too).
The only thing I can think of is that with
this Haskell package, I haven't found where
to set certain things like the port number
(587) and so maybe it's that? Here is a
small sample app that illustrates the
problem. What am I missing? Thanks.</p>
<p><br>
<font face="monospace, monospace"><b>{-#
LANGUAGE OverloadedStrings #-}<br>
{-# LANGUAGE QuasiQuotes #-}</b></font></p>
<font face="monospace, monospace"><b>module
Main where</b></font></div>
<div><font face="monospace, monospace"><b><br>
import Data.Function ((&))<br>
import GHC.Generics<br>
import Network.HTTP.Client<br>
import Network.HTTP.Client.TLS<br>
import Network.Mail.Mime<br>
import Network.Mail.Mime.SES<br>
import Text.Hamlet (shamlet)<br>
import Text.Blaze.Html.Renderer.String
(renderHtml)<br>
<br>
import qualified Data.ByteString.Char8 as
C8<br>
import qualified Data.Text as T<br>
import qualified Data.Text.Lazy as LT<br>
<br>
main :: IO ()<br>
main = do<br>
manager <- newManager
tlsManagerSettings<br>
let sesConfig = SES { sesFrom = C8.pack
"<a href="mailto:de@somewhere.com" target="_blank">de@somewhere.com</a>",<br>
sesTo = [ C8.pack
"<a href="mailto:someone.else@somewhereelse.com" target="_blank">someone.else@somewhereelse.com</a>"
],<br>
sesAccessKey =
"SOMEAWSACCESSKEY",<br>
sesSecretKey =
"ANEVENLONGERAWSSECRETKEY1234567890",<br>
sesRegion =
usEast1 }<br>
email = Mail { mailFrom = Address
(Just "David Escobar") "<a href="mailto:de@somewhere.com" target="_blank"></a><a href="mailto:de@somewhere.com" target="_blank">de@somewhere.com</a>",<br>
mailTo = [ Address
(Just "Someone Else") "<a href="mailto:someone.else@somewhereelse.com" target="_blank"></a><a href="mailto:someone.else@somewhereelse.com" target="_blank">someone.else@somewhereelse.com</a>"
],<br>
mailParts = [ [
htmlPart testEmail ] ],<br>
mailCc = [],<br>
mailBcc = [],<br>
mailHeaders = [
("subject", "Some Test Email"),<br>
("Content-Type", "text/html;
charset=ISO-8859-1") ] }<br>
renderSendMailSES manager sesConfig
email<br>
<br>
<br>
testEmail :: LT.Text<br>
testEmail =<br>
let rows = [ [ "1", "2", "3" ], [ "4",
"5", "6" ]]<br>
in<br>
renderHtml [shamlet|<br>
$doctype 5<br>
<html><br>
<body><br>
<table style="border: 1px
solid black; border-collapse: collapse;
margin: 25px 0; width: 100%;"><br>
<tr><br>
<th
style="background-color: #072a2d; color:
white; font-weight: bold; border-right:
1px solid white; padding: 5px 10px; width:
33%;"><br>
Column 1<br>
<th
style="background-color: #072a2d; color:
white; font-weight: bold; border-right:
1px solid white; padding: 5px 10px; width:
33%;"><br>
Column 2<br>
<th
style="background-color: #072a2d; color:
white; font-weight: bold; border-right:
1px solid white; padding: 5px 10px; width:
33%;"><br>
Column 3<br>
$forall row <- rows<br>
<tr
style="background-color: #f8f9ee;"><br>
<td style="border: 1px
solid black; padding: 5px 10px;
text-align: left; width: 33%;"><br>
#{T.pack $ row !! 0}<br>
<td style="border: 1px
solid black; padding: 5px 10px;
text-align: left; width: 33%;"><br>
#{T.pack $ row !! 1}<br>
<td style="border: 1px
solid black; padding: 5px 10px;
text-align: left; width: 33%;"><br>
#{T.pack $ row !! 2}<br>
|] & LT.pack</b></font></div>
<div><br>
</div>
</div>
<br>
</div>
</div>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org" target="_blank">Haskell-Cafe@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
<br>
</blockquote>
</div>
<span><font color="#888888"><br>
<br clear="all">
<div><br>
</div>
-- <br>
<div>Cell: <a href="tel:1.630.740.8204" value="+16307408204" target="_blank">1.630.740.8204</a></div>
</font></span></div>
</blockquote>
</div>
<br>
</div>
<br>
<fieldset></fieldset>
<br>
<pre>_______________________________________________
Haskell-Cafe mailing list
<a href="mailto:Haskell-Cafe@haskell.org" target="_blank">Haskell-Cafe@haskell.org</a>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a>
</pre>
</blockquote>
<br>
</div></div></div>
</blockquote></div><br></div>