我最近从 Windows 共享主机转移到了 VPS。我正在努力让 phpmailer 为我网站上的联系表格工作。
我的网站设置要发送的电子邮件的代码是:
$mail->IsSMTP(); // set mailer to use SMTP
$mail->Host = "smtp.gmail.com"; // specify main and backup server or localhost
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->SMTPSecure = "tls";
$mail->SMTPDebug = 1; // can vary the amount of debug info given on error
$mail->Username = "mail@mydomain.com"; // SMTP username
$mail->Password = "########"; // SMTP password
$mail->Port = 587;
此代码适用于旧的 Windows 共享主机。其他一切也与网站相同(class.phpmailer.php 文件等)
所以我猜这与我的 iis 设置或服务器本身有关。
根据为我检查的虚拟主机,连接在端口 587 上有效
我使用为您完成所有工作的 Microsoft 工具安装了 php。该网站在 php 中并且正在运行,在我未经训练的眼睛看来,一切都很好。
我检查了 php_openssl.dll 是否已启用。
我花了很长时间阅读和摆弄没有运气。我真的不知道接下来要看什么。任何想法可能是什么或我应该尝试什么?
谢谢!
菲尔。
编辑:
php 表单上的操作是转到contactprocessor.php。
该文件包含以下代码:
<?
ob_start();
if(isset($_POST['btnSubmit']))
{
require("class.phpmailer.php");
$mail = new PHPMailer();
//Your SMTP servers details
$mail->IsSMTP(); // set mailer to use SMTP
$mail->Host = "smtp.gmail.com"; // specify main and backup server or localhost
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->SMTPSecure = "tls";
$mail->SMTPDebug = 1; // can vary the amount of debug info given on error
$mail->Username = "mail@mydomain.com"; // SMTP username
$mail->Password = "########"; // SMTP password
$mail->Port = 587;
$redirect_url = "http://www.mydomain.com/contact/contact_success.php"; //Redirect URL after submit the form
$mail->From = $mail->Username; //Default From email same as smtp user
$mail->FromName = "Website Contact Form";
$mail->AddAddress("mail@mydomain.com", "From Contact Form"); //Email address where you wish to receive/collect those emails.
$mail->WordWrap = 50; // set word wrap to 50 characters
$mail->IsHTML(true); // set email format to HTML
$mail->Subject = "From Contact Form";
$message = "FullName: ".htmlspecialchars($_POST['fullname'])." <br> <br>
\r\n <br>EmailAddress: ".htmlspecialchars($_POST['email'])." <br> <br>
\r\n <br>Phone Number: ".htmlspecialchars($_POST['mobile'])." <br> <br>
\r\n <br> Message: <br>".htmlspecialchars($_POST['message']);
$mail->Body = $message;
if(!$mail->Send())
{
echo "Sorry the message could not be sent. Please email mail@mydomain.com instead. Thanks<p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
echo "Message has been sent";
header("Location: $redirect_url");
}
?>
而不是实际发送电子邮件,它似乎只是将上面的内容打印到用户的屏幕上,就好像它是一个网页一样。就好像服务器认为它是一个 html 页面并且只是在提供它。