所以我使用并成功发送电子邮件使用PHPmailer但是一旦电子邮件发送我不知道在哪里将页面重定向回到你来自的页面,并带有一条消息,说明可能发送的消息?
<?php
if (isset($_POST['hp']) && $_POST['hp'] && $_POST['hp'] != '') {
}
else {
require 'c:\php\includes\PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = ''; // Specify main and backup server
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = ''; // SMTP username
$mail->Password = ''; // SMTP password
$mail->SMTPSecure = 'ssl'; // Enable encryption, 'ssl' also accepted
$mail->Port =;
$mail->From = '';
$mail->FromName = '';
foreach ($members as $user) {
$mail->addAddress($user->user_email);
}
foreach ($committee as $user) {
$mail->AddCC($user->user_email);
}
$mail->WordWrap = 50; // Set word wrap to 50 characters
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = $_POST["Subject"];
$mail->Body = $_POST["contentfield"];
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
exit;
}
}
?>
出于显而易见的原因,我已经把所有细节都拿走了。
答案 0 :(得分:2)
为什么不在if()
邮件中添加else而不发送语句,如果if语句没有失败则重定向用户?
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
exit;
} else {
// email sent successfully, redirect to success page
header ('Location: sent.php');
}
您的电子邮件仍应发送,因为如果$mail->send()
评估为真,浏览器只会重定向您...此时邮件已经发送。
如果您愿意,也可以在if()
语句之后放置重定向,这也应该有效,因为如果您的if()
语句的计算结果为true,它将退出脚本。
答案 1 :(得分:1)
您可以使用位置标头在PHP中发送HTTP重定向:
<?php
header('Location: /path/to/page');
exit;
答案 2 :(得分:0)
您不一定需要重定向。您可以返回204 No Content
,浏览器将保持原样。如果要返回状态代码,可以将重定向中的结果作为参数传递,重定向到其他页面,或在会话中粘贴一个值,准备在下一页显示。类似的东西:
if(!$mail->send()) {
header('Location: failed.php?error='.rawurlencode($mail->ErrorInfo));
}
header('Location: success.php');
}