2013-06-12 4 views
2

Недавно я перешел из общего хостинга Windows в VPS. Я пытаюсь заставить phpmailer работать на контактную форму на моем веб-сайте.Настройка phpmailer на iis7

Код для моего сайта наборы вверх по электронной почте, чтобы отправить это:

$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 = "[email protected]"; // SMTP username 
$mail->Password = "########"; // SMTP password 
$mail->Port = 587; 

Этот код работал на старых окнах общих хостинг. Также все остальное идентично и сайту (файл class.phpmailer.php и т. Д.)

Итак, я предполагаю, что это связано с моей настройкой iis или самого сервера.

Подключение работ на порт 587 по моим хостингов которые проверяли, что для меня

Я установил PHP с помощью инструмента Microsoft, который делает все для вас. сайт находится в php и работает, и он смотрит на мой неподготовленный глаз, как будто все в порядке.

Я проверил, что php_openssl.dll включен.

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

спасибо!

Фил.

EDIT:

Действие на форме 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 = "[email protected]"; // 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("[email protected]", "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 [email protected] instead. Thanks<p>"; 
    echo "Mailer Error: " . $mail->ErrorInfo; 
    exit; 
} 

echo "Message has been sent"; 
header("Location: $redirect_url"); 
} 
?> 

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

+1

любые сообщения об ошибках/отладки от phpmailer? можете ли вы опубликовать вывод SMTPDebug? или это ошибка перед этим? – x4rf41

+0

спасибо, что вернулись ко мне так быстро. Я отредактировал выше, чтобы дать больше информации. Я не получаю никаких сообщений об ошибках, просто php выполняется, как если бы это была страница html. благодаря! –

+0

Мое предположение заключается в том, что его тег ' Spudley

ответ

1

Вы писали:

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

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

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

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

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

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

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

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

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

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

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

Надеюсь, что помогает.

+0

Я изменил свой код на «

0

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

+0

Фил, я опубликовал свой комментарий как полный ответ (я уже делал это, когда вы разместили его, поэтому я решил закончить). Рад, что я смог помочь. – Spudley

Смежные вопросы