SES_HOST = "email.us-west-2.amazonaws.com"
AwsSigner.configure do |config|
config.access_key = ENV["AWS_ACCESS_KEY"]
config.secret_key = ENV["AWS_SECRET_KEY"]
config.region = "us-west-2"
end
params = String.build do |io|
HTTP::Params.from_hash({
"Action" => "SendEmail",
"Source" => "[email protected]",
"Destination.ToAddresses.member.1" => "[email protected]",
"Message.Subject.Data" => "test",
"Message.Body.Text.Data" => "test",
}).to_s(io)
end
url = "https://#{SES_HOST}?#{params}"
uri = URI.parse(url)
headers = {
"Host" => SES_HOST,
"Date" => Time.utc_now.to_s("%Y%m%dT%H%M%SZ"),
}
body = ""
signed = AwsSigner.sign("ses", "GET", uri, headers, body)
headers = HTTP::Headers.new
signed.each do |k, v|
headers[k] = v
end
resp = HTTP::Client.get(uri, headers, body)