Я устанавливаю скрипт PHP, который использует PHPMail для отправки электронной почты. Адрес «от» уже проверен на консоли Amazon, и я создал учетную запись пользователя IAM и SMTP. При их создании Amazon предлагает использовать порты 25, 465 или 587. Вот Пример PHP из документации Amazon, не использует PHPMail, но идея должна быть такой же.
Это мой сценарий:
$mail = new PHPMailer;
$mail->SMTPDebug = 3; // Enable verbose debug output
$mail->Timeout = 20;
$mail->CharSet = 'UTF-8';
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'ssl://email-smtp.us-east-1.amazonaws.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'my_username'; // SMTP username
$mail->Password = 'my_password'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587; // TCP port to connect to
$mail->setFrom('my@email.com', 'My email name');
$mail->addAddress('test@test.com', 'Test'); // Add a recipient
$mail->addReplyTo('my@email.com', 'My email name');
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'Amazon SES SMTP test with PHPMailer';
$mail->Body = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
}
Этот скрипт не работает, я получаю время соединения вышло ошибка. Однако, если я изменю порт на 443, он будет работать нормально. Это почему? Это не порт, указанный Amazon, поэтому я обеспокоен тем, что, несмотря на то, что он работает сейчас, он может вызвать некоторые другие проблемы в будущем. Я что-то здесь упускаю? Кстати, порт 465 тоже не работает.
РЕДАКТИРОВАТЬ
Просто для пояснения, я понимаю, что это работает с использованием порта 443, как я упоминал, однако почему это не работает с портами, которые они предлагают? Вот что я пытаюсь понять. Чего-то не хватает в этом скрипте? Я также тестировал без предварительной фиксации хоста с помощью «ssl: //» (как они показывают это в своем примере) и использования предложенных портов, но безрезультатно.
TCP-порт 443 — это стандартный TCP-порт, который используется для веб-сайтов, использующих SSL. ваш адрес
ssl://email-smtp.us-east-1.amazonaws.com
так что для меня это работает как надо.
Проблема заключалась в том, что в нашем CSF Firewall была настройка, называемая SMTP_BLOCK это было на. Мы отключили это, и теперь порт 587 работает нормально (мне также пришлось удалить ssl://
с адреса хоста).
Может быть, это поможет кому-то в будущем с той же проблемой.