私たちのウェブサイトには、何年も機能している PHP フォームがあります。ユーザーがフォームに入力すると、詳細が送信され、電子メールが送信され、ユーザーが「ありがとう」ページにリダイレクトされます。ただし、ユーザーがメール アドレスを @gmail.com として入力すると、フォームの送信に失敗し、サンキュー ページが表示されません。
これは本当に奇妙です。PHPMailer を使用しており、フォームが以下を使用して送信されたかどうかを検証します。
if($mail->Send()) {
$mailsent = true;
ユーザーが @hotmail.com または @yahoo.com で入力した場合、すべて問題ありません。ただし、@gmail.com と入力すると、$mailsent は常に false になります。
この状況で、問題はどこにあるのでしょうか? 私たちの Web ホストから Gmail への SMTP 接続が失敗しているようです。これは正しいと思いますか?
コードは次のとおりです。
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
$name = '';
$email = '';
$mailsent = false;
$referer = '';
if(isset($_POST['name'])){
include('phpmailer/class.phpmailer.php');
$name = $_POST['name'];
$email = $_POST['email'];
$subject = 'Quote request from ' . $name;
$body = 'A quote request has been received from a user with following details:' . "\n\n" .
"Name: $name \n" .
"Email: $email \n" .
"----------------------------------------------------\n\n" .
"Place: UK".
$body .= "\n----------------------------------------------------\n\n";
$body .= "Refering: ".$referer." \n";
$mail = new PHPMailer();
$mail->Subject = $subject;
$mail->From = $email;
$mail->FromName = $name;
$mail->Body = $body;
$mail->AddAddress("dean@example.com", "Example");
if($mail->Send()) {
$mailsent = true;
} else {
$error[] = 'There was some error. Please try later.';
}
}
?>