私は、PHP36a.comで新しいcPanel共有ホスティングプランでsmtp.office365.comにアクセスしているPHPMailerを実行しているDNSに問題があります。php PHPMailer共有ホスティングがデフォルトのDNSサーバをオーバーライド
私のコードは、同じプロバイダーの古い共有ホスティングプランで長年働いています。また、テスト用のWindows IISシステムと、別のプロバイダとの共有ホスティングプランで正常に動作します。したがって、問題はregister365.com固有のものです
300秒後に接続エラーが発生します。 接続に失敗しました。エラー番号2:stream_socket_client():php_network_getaddresses:getaddrinfo failed:名前解決の一時的な失敗
PHPMailerの標準的なトラブルシューティング情報により、DNSが疑われました。だから私はプロバイダのregister365.comに連絡して、それは私に言った:
私たちとDNSについて知っていただきありがとうございます。
まず、私たちのネームサーバーは再帰的なものではないため、ホストされているドメインの結果のみを返すので、ネームサーバーでsmtp.office365.comを試してみると、これはホストされていないため動作しません。だからあなたのphpmailスクリプトがこのアドレスを見つけるために私たちのサーバに問い合わせているのであれば、それはうまく動作せず、見ているエラーを返すでしょう。
Googleのような一般的なDNSにクエリするようにPHPスクリプトを設定する必要があります。これにより問題が解決されます。
残念ながら、問題を解決するためにこの状況で行うことはできません。
まず、レスポンスは意味がありますか? どうすればいいですか? それで、私はPHPMailerに、最初の接続のためにsmtp.office365.comを解決しようとすると、Googleの8.8.8.8 DNSサーバを使用するように強制するか、あるいは何とかPHP自身がデフォルトのDNSサーバを変更するよう強制します。私は、おそらくマイクロソフトが時間の経過とともにそれらを変更するので、$ mail-> HostフィールドにIPアドレスをハードコードしたくない。
私は進め方について助言を求めています。 (あなたが「別のホスティングプロバイダを使用する」と言うが、様々な金融、私はできないためにも!)
<!DOCTYPE html>
<html>
<html lang="en">
<meta charset="utf-8" />
<title>Test Office365 in Microsoft from Register365.com</title>
<link rel="stylesheet" href="/styles/trekkersfluid.css" type ="text/css" />
</head>
<body class="blank">
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
require('../PHPMailer/PHPMailerAutoload.php');
$mail = new PHPMailer;
$mail->LE = "\r\n";
$mail->CharSet = 'UTF-8';
$mail->SMTPDebug = 4;
$mail->Debugoutput = 'html';
$mail->isSMTP();
$mail->Host = "smtp.office365.com"; // Specify main Office 365 SMTP server
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = '[email protected]'; // SMTP username
$mail->Password = 'mypassword'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587; // TCP port to connect to. TLS = 587 SSL = 465
//Set the FROM address
$FromName = "Joe Murray";
$mail->setFrom("[email protected]");
$mail->addReplyTo("[email protected]", "Rubbish Name");
$mail->addAddress("[email protected]", "Joseph Murray");
$mail->WordWrap = 70; // Set word wrap to 70 characters
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = "Testing Microsoft Exchange Online Service";
$mail->Body = "This is a test";
if(!$mail->send()) {
echo '<p class="error_msg">Message could not be sent.</p>';
echo '<p class="error_msg">Mailer Error: ' . $mail->ErrorInfo."</p>";
exit();
} else {
echo '<p class="green">'."Email sent</p>";
}
?>