hatabowyou
@hatabowyou (はたぼう)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

【EC2ウェブサイトの問い合わせフォーム】AWSのSESを設定し、WEBサイトの問い合わせフォームからPOSTしましたが、phpの動作は確認できるもののメールが送信されません

解決したいこと

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経由でアクセスした場合メールが送信されません。

該当するソースコード

form.html
<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>

image.png

ses.php
<?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,
          ],
        ],

    ]);

?>

image.png

自分で試したこと

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

どうぞよろしくお願いいたします。

0

1Answer

Your answer might help someone💌