Настройка phpmailer на iis7

Недавно я перешел из общего доступа к 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 в соответствии с моими веб-хостами, которые проверили это для меня

Я установил php, используя инструмент Microsoft, который делает все для вас. сайт находится в 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-страница, и просто обслуживает ее.

Вы написали:

Вместо того, чтобы фактически отправлять электронное письмо, он просто печатает вышеуказанный [код] на экране пользователя, как будто это веб-страница. это похоже на то, что сервер считает, что это html-страница, и просто обслуживает ее.

Я думаю, что ваша проблема не связана с phpMailer, или вообще электронной почтой.

Это почти наверняка будет просто небольшой разницей между конфигурацией PHP на старых и новых серверах.

Ваш PHP-код использует короткие текстовые теги PHP, то есть начиная с <? ,

Многие серверы PHP настроены так, чтобы не допускать этот тег короткого стиля, и запускать только PHP-код, который начинается с полного <?php .

Учитывая то, что вы указали в замечании, которое я цитировал выше, я подозреваю, что это ваша проблема, потому что то, что вы описываете, является именно тем симптомом, который я ожидал бы от этого.

У вас есть два варианта:

  1. Измените свой код, чтобы использовать длинный стиль <?php tag.

  2. Измените конфигурацию своего сервера, чтобы короткая <? тег.

Я бы рекомендовал использовать опцию (1), если это возможно, потому что теги с длинной формой считаются наилучшей практикой (короткая форма не рекомендуется, так как она может иметь потенциальное столкновение с маркером <?xml в начале большинства документов XML).

Если у вас много коротких форм <? теги (и если вам разрешено это делать), изменение конфигурации сервера может быть целесообразно, но если достаточно легко исправить проблему, переключившись на длинные теги, я бы сказал, что это будет лучше.

Надеюсь, это поможет.

Спасибо Спадли за ответ. У меня было <? (что является сокращением, которое, по-видимому, не работает на новых установках php). Это должно быть <?php что заставило его работать. Еще раз спасибо.