2013-05-30 5 views
0

Я был в PHP/электронной почты «ад» - я близко, и не могу показаться, чтобы добраться до «финиша» ....PHPMailer, поведение электронной почты тайна

Ом с помощью PHPMailer, чтобы отправить поддержку запросы на сайте клиентов. мой процесс выглядит следующим образом: FORM -> PROCESS (генерировать сообщение обратной связи и сообщение cc для поддержки) -> почта отправителю -> почта для поддержки -> перенаправление на страницу благодарности.

вопрос состоит из двух частей: 1) электронные письма идут через, как ожидается, если у меня есть отладки включен, но я получаю отладки и не редирект 2) если отключить отладку - электронная почта не выходит и Я получаю пустую страницу - с NO перенаправлять

* Добавление * Письмо просто пришло через - так это только проблема редиректа ... или без отладки, Моя мета обновления не присылают - может быть, есть лучший способ ????

PHP ФОРМА ПРОЦЕССОР

... 
// send two emails 
    $_emailTo = $email; // the email of the person requesting 
    $_emailBody = $text_body; // the stock response with things filled in 
    include ('email.php'); 

    $_emailTo = $notifyEmail; // the support email address 
    $_emailBody = $pretext.$text_body; // pretext added as meta data for support w/ same txt sent to user 
    include ('email.php'); 

// relocate 
    echo '<META HTTP-EQUIV="Refresh" Content="0; URL=success.php" >'; 
    exit; 

PHP MAILER (email.php)

<?php 
    require 'phpmailer/class.phpmailer.php'; 

//Create a new PHPMailer instance 
$mail = new PHPMailer(); 

//Tell PHPMailer to use SMTP 
$mail->IsSMTP(); 

//Enable SMTP debugging 
// 0 = off (for production use) 
// 1 = client messages 
// 2 = client and server messages 
$mail->SMTPDebug = 0; 

//Set the hostname of the mail server 
$mail->Host = "mail.validmailserver.com"; 

//Set the SMTP port number - likely to be 25, 465 or 587 
$mail->Port = 26; 

//Whether to use SMTP authentication 
$mail->SMTPAuth = true; 

//Username to use for SMTP authentication 
$mail->Username = "validusername"; 

//Password to use for SMTP authentication 
$mail->Password = "pass1234"; 

//Set who the message is to be sent from 
$mail->SetFrom('[email protected]', 'no-reply @ this domain'); 

//Set an alternative reply-to address 
//$mail->AddReplyTo('[email protected]','Support'); 

//Set who the message is to be sent to 
$mail->AddAddress($_emailTo); 
$mail->Subject = $_emailSubject; 
$mail->MsgHTML($_emailBody); 

$_emailError = false; 

//Send the message, check for errors 
if(!$mail -> Send()) { 
    $_emailError = true; 
    echo "Mailer Error: " . $mail->ErrorInfo; 
} 
?> 

помощи - пожалуйста

ответ

1

Ваша проблема может быть, что некоторые выходы уже были отправлены в браузер до того перенаправляется. Обычно вы не можете перенаправлять в этой ситуации. Если это так, вы можете быть в состоянии использовать буферизацию вывода, как показано в следующем примере:

ob_start(); 
//statements that output data to the browser 
print "some text"; 
if (!headers_sent()) { 
    header('Location: /success.php'); 
    exit; 
} 
ob_end_flush(); 

Это также может быть включен по умолчанию в файле php.ini с output buffering директивы, в этом случае вы выиграли» t нужны операторы ob_start() и ob_end_flush(). Мой файл php.ini имеет следующее:

output_buffering = 4096 
+0

есть ли способ в php для подавления вывода? – jpmyob

+0

Да, я отредактировал свой ответ, чтобы включить некоторую информацию о буферизации вывода в php. – vjones

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