2016-09-18 1 views
1

Я столкнулся с проблемой с использованием PHPmailer, которую я просто не понимаю. У меня есть вспомогательная функция redirect для функции заголовка, которая работает на 100% в показанном положении. Он не работает в позициях, показанных в комментариях, где я бы хотел, чтобы он работал. Все остальное отлично работает независимо от того, где размещена функция перенаправления. Есть идеи? Это также мой первый пост, так что извиняйтесь заранее, если уже есть решение, которого я не смог найти.Ошибка перенаправления PHP-mailer

<?php 

if(isset($_POST['replyall'])) { 

    redirect("index.php?leadreply"); // Why does this have to be here to work???? //  

    if(isset($_POST['chk1'])) { 

     $email = new PHPMailer(); 
     $email->From  = $_POST['author']; 
     $email->FromName = 'JGM Decorating'; 
     $email->Subject = 'Reply to your contact request'; 
     $email->Body  = $_POST['comments']; 
     $email->AddAddress($_POST['destination']); 

     $file_to_attach = '../crm/gtcjgm.pdf'; 

     $email->AddAttachment($file_to_attach , 'Terms and Conditions.pdf'); 

     return $email->Send(); 

     // I would like to have the redirect here but it doesn't work??// 

    } else { 

     $email = new PHPMailer(); 
     $email->From  = $_POST['author']; 
     $email->FromName = 'JGM Decorating'; 
     $email->Subject = 'Reply to your contact request'; 
     $email->Body  = $_POST['comments']; 
     $email->AddAddress($_POST['destination']); 

     $file_to_attach = ''; 

     $email->AddAttachment($file_to_attach , 'Terms and Conditions.pdf');  

     return $email->Send(); 

     // I would like to have a different redirect here but it doesn't work??//  

    } 
} 
?> 
+3

Потому что вы «возвращаетесь», прежде чем называть «перенаправление». – tkausl

+0

Если это реальный код, как вы думаете, вы ___ возвращаетесь to___ Его не функция, поэтому возврат не имеет значения – RiggsFolly

+0

Это рабочий код, взятый из другого ответа, касающегося почтовых вложений. Я принял ваш совет и удалил «возврат». Работает именно так, как я хотел, спасибо @RiggsFolly !!! – Greg

ответ

0

Этот код:

return $email->Send(); 

Объяснение: Это будет возвращать функцию, и это остановит процесс на самой этой стадии, и после этого какой линии вы размещаете это не будет работать , (Например) Echo-инструкция также не будет работать.

Если вы хотите сделать это, вам необходимо выполнить процесс отправки почты с помощью Ajax, и после этого вам придется перенаправить, как вам нужно.

Поскольку возврат прекратит выполнение в тот момент. Поэтому, чтобы сделать это, вы можете использовать его с hep AJAX, а затем перенаправить его.

+0

Спасибо! Я новичок во всем этом, но буду в AJAX. – Greg

+0

Ya вам нужно отправить электронное письмо с помощью функции AJAX, и после этого вам нужно перенаправить в соответствии с запросом, который вы сделали. –