【EC2ウェブサイトの問い合わせフォーム】AWSのSESを設定し、WEBサイトの問い合わせフォームからPOSTしましたが、phpの動作は確認できるもののメールが送信されません
Q&A
Closed
解決したいこと
phpからSESを通してメール送信できるようにしたいです。
AWSのEC2のインスタンスにSESを設定し、WEBサイトの問い合わせフォームからPOSTしましたが、phpの動作は確認できるもののメールが送信されません。
なおファイルは以下の通りの配置です。
/var/www/html 中に
form.html
ses.php
example01@example01.com
example02@example02.com
example03@example03.com
はSESに登録済のメールアドレスです。
hoge
は登録されたドメインです。
発生している問題・エラー
ブラウザからhttpd経由でアクセスした場合メールが送信されません。
該当するソースコード
<html lang="ja">
<head>
<title>SES TEST</title>
</head>
<body>
<form action="ses.php" method="post" enctype="multipart/form-data">
<input type="text" name="test" value="これはテストです"><br>
<input type="text" name="mail" value="example03@example03.com">
<button type="submit">送 信</button>
</form>
</body>
</html>
<?php
require '/usr/local/bin/composer/vendor/autoload.php';
use Aws\Ses\SesClient;
use Aws\Exception\AwsException;
$SesClient = new SesClient([
'profile' => 'default',
'version' => '2010-12-01',
'region' => 'ap-northeast-1'
]);
$sender_email = 'hoge@hoge.com';
$recipient_emails = ['example01@example01.com','example02@example02.com'];
$action = $_POST['action'];
$test = htmlspecialchars($_POST['test'],ENT_QUOTES);
$mail = htmlspecialchars($_POST['mail'],ENT_QUOTES);
$html_body .= "以下の内容が送信されました。<br>\n";
$html_body .= $test;
$html_body .= "<br>\n";
$html_body .= $mail;
$html_body .= "<br>\n";
echo $html_body;
$user = exec('whoami');
$group = exec('groups ' .$user);
echo "ユーザー:{$user}<br>";
echo "グループ:{$group}<br>";
echo '<form method="post" action="form.html">';
echo '<button type="submit">前のページへ戻る</button>';
echo '</form>';
$subject = '■お問い合わせメール';
$plaintext_body = '??????' ;
$char_set = 'UTF-8';
$SesClient->sendEmail([
'Destination' => [
'ToAddresses' => $recipient_emails,
],
'ReplyToAddresses' => [$sender_email],
'Source' => $sender_email,
'Message' => [
'Body' => [
'Html' => [
'Charset' => $char_set,
'Data' => $html_body,
],
'Text' => [
'Charset' => $char_set,
'Data' => $plaintext_body,
],
],
'Subject' => [
'Charset' => $char_set,
'Data' => $subject,
],
],
]);
?>
自分で試したこと
SSH接続してコマンドラインから/var/www/htmlに移動し「php ses.php」を実行するとメールは送信されます。
httpd.conf のユーザーを変更してみましたが送信されず。
ブラウザからhttpd経由でアクセスした場合のみ実行されません。
なお、SESのエラーを見る方法がわからないですm(_ _)m。。。
参考:AWS SDK for PHP を使用して E メールを送信する
https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/send-using-sdk-php.html
どうぞよろしくお願いいたします。