Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
<?php
require '../vendor/autoload.php';
use Aws\Sqs\SqsClient;
use Aws\Exception\AwsException;
use Aws\Ses\SesClient;
$queueUrl = '<QUEUE_URL>';
$client = new SqsClient([
'region' => 'ap-northeast-1',
'version' => '2012-11-05'
]);
$ses = SesClient::factory(array(
'version'=> 'latest',
'region' => 'us-east-1',
));
try {
$result = $client->receiveMessage(array(
'AttributeNames' => ['SentTimestamp'],
'MaxNumberOfMessages' => 1,
'MessageAttributeNames' => ['All'],
'QueueUrl' => $queueUrl, // REQUIRED
'WaitTimeSeconds' => 0,
));
if (count($result->get('Messages')) > 0) {
$messages = $result->get('Messages');
if ($messages) {
foreach ($messages as $item) {
$attr = $item['MessageAttributes'];
$sesResult = $ses->sendEmail([
'Source' => $attr['from']['StringValue'],
'Destination' => [
'ToAddresses' => [
$attr['to']['StringValue'],
],
],
'Message' => [
'Subject' => [
'Charset' => 'UTF-8',
'Data' => $attr['subject']['StringValue'],
],
'Body' => [
'Text' => [
'Charset' => 'UTF-8',
'Data' => $item['Body']."\n",
],
],
],
]);
$messageId = $sesResult->get('MessageId');
echo("Email sent! Message ID: $messageId"."\n");
}
}
$result = $client->deleteMessage([
'QueueUrl' => $queueUrl, // REQUIRED
'ReceiptHandle' => $result->get('Messages')[0]['ReceiptHandle'] // REQUIRED
]);
} else {
echo "No messages in queue. \n";
}
} catch (AwsException $e) {
error_log($e->getMessage());
} catch (SesException $error) {
echo("The email was not sent. Error message: ".$error->getAwsErrorMessage()."\n");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment