<div dir="ltr">Hi Vlatko, just wanted to get back to you on this. It looks like we're using EC2 instances, but after looking at the SES section, it doesn't seem to be tied to any specific instance (not sure if and how that's different from the E2 instances you're using).<div><br></div><div>I also used the Amazon verified email address in the system as the 'From' address, but unfortunately, it still didn't work. The keys are correct too. For now, I just ended up going with my Rust solution since it was such a small utility app anyway, but it would be interesting to see if other people run into similar issues in the future. Thanks.</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>