1
$email_message = "Form details below.\n\n";

function clean_string($string) {
    $bad = array("content-type","bcc:","to:","cc:","href");
    return str_replace($bad,"",$string);
}

$email_message .= "Full Name: ".clean_string($_POST['full_name'])."\n";
$email_message .= "Email: ".clean_string($_POST['email'])."\n";
$email_message .= "Telephone number: ".clean_string($_POST['telephone'])."\n";
$email_message .= "Message: ".clean_string($_POST['comments'])."\n";


$mail             = new PHPMailer();
$body             = $email_message;
$body             = str_replace('\\', '', $body);

$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPAuth   = true;             // enable SMTP authentication
$mail->SMTPSecure = "ssl";            // sets the prefix to the servier
$mail->Host       = "smtp.gmail.com"; // sets GMAIL as the SMTP server
$mail->Port       = 465;              // set the SMTP port for the GMAIL server
$mail->Username   = "xxx@gmail.com";  // GMAIL username
$mail->Password   = "XXXXXX";         // GMAIL password

$mail->SetFrom('from-email@domain.com', 'First Last');

$mail->Subject    = "Imperia";

$mail->AltBody    =                   // optional, comment out and test
    "To view the message, please use an HTML compatible email viewer!";

$mail->MsgHTML($body);

$address = "xxx@gmail.com";
$mail->AddAddress($address, "To Name");

if(!$mail->Send()) {

    echo "<font color='red'> Message error </font>". $mail->ErrorInfo;
} else {
    echo "<font color='red'> Message sent </font>";
} 

このコードを使用して、SMTP を使用して電子メールを送信しようとしていますが、エラーが発生します:

SMTP エラー: SMTP ホストに接続できませんでした

ここで何が間違っているのか誰か教えてもらえますか? これを修正する方法が見つかりません。ありがとう

4

8 に答える 8

4

私もこれに遭遇し、daemoniのソリューションがうまくいきました。より具体的には、コードを次のように変更しました。

$mail->Host = gethostbyname("smtp.gmail.com"); 
于 2015-05-05T14:46:03.433 に答える
2

私は昨日同様の問題を抱えていました.smtp.gmail.comがIPv6アドレスに解決されていたことが判明し、それ以降はすべてが多かれ少なかれ壊れていました.

私の回避策は、smtp.gmail.com の代わりに IPv4 アドレスを入力することでした。

(私の場合は 173.194.79.108、それがグローバルかどうかわからないので、最初に ping を実行して IP を取得してください)

IT は一時的な解決策ですが、おそらく長期間機能します。

于 2012-06-24T00:35:37.207 に答える
1

「SMTPホストに接続できませんでした」は、ソースサーバーからターゲットのサーバー(この場合はsmtp.gmail.com)への接続がないことを示します。

考えられる理由は

  • ファイアウォールのブロック
  • PHPはそのような接続を行うことを許可されていません

たとえば、ポート465で(PHPコードをホストしているサーバーから)smtp.gmail.comに接続できるかどうかをtelnetでテストしてください。

また、必要な拡張機能を有効にしていることを前提としています。

于 2012-05-16T20:45:38.380 に答える
1
$mailer->Host = 'ssl://smtp.gmail.com:465';
于 2012-05-16T20:59:58.273 に答える