PHPMailer 发送电子邮件并返回带有回显的空白页面

Posted

技术标签:

【中文标题】PHPMailer 发送电子邮件并返回带有回显的空白页面【英文标题】:PHPMailer sending email and returning blank page with echo 【发布时间】:2015-09-23 12:14:56 【问题描述】:

电子邮件发送正确,但随后我的提交页面上的所有内容都消失了(尽管在 url 中它说它是同一页面),除了 echo 语句说“消息发送成功”。

我希望在用户收到验证电子邮件后有一个“祝贺”页面或其他不那么俗气的东西来问候用户...

我尝试在 class.phpmailer.php 中搜索重定向功能,但什么也没有。我确定这很简单,但我似乎无法找到造成这种情况的原因。

<?php
require ('/config.inc.php');
require '../PHPMailer/PHPMailerAutoload.php';

    if(mysqli_affected_rows($dbc) == 1)
        $mail = new PHPMailer;
    $mail->isSMTP();
    $mail->SMTPSecure = 'ssl';
    $mail->Host     = "smtp.gmail.com"; // SMTP server
    $mail->Port = 465;
    $mail->SMTPAuth = true;
    $mail->Username = "censored@gmail.com";
    $mail->Password = "censored";

    //Set who the message is to be sent from
    $mail->setFrom('censored@gmail.com');
    //Set an alternative reply-to address
    $mail->addReplyTo('censored@gmail.com');
    //Set who the message is to be sent to
    $mail->addAddress($trimmed['email']);
    //Set the subject line
    $mail->Subject = 'PHPMailer mail() test';
    //Read an html message body from an external file, convert referenced images to embedded,
    //convert HTML into a basic plain-text alternative body
    $mail->msgHTML('Thank you for registering at The Circle Of Pi. To activate your account,
         please click on this link:\n\n' . BASE_URL . 'activate.php?x=' . urlencode($e) . "&y=$a");

    //Replace the plain text body with one created manually
    $mail->AltBody = 'This is a plain-text message body';
    //Attach an image file
    //$mail->addAttachment('images/phpmailer_mini.png');

    //send the message, check for errors
    if (!$mail->send()) 
        echo "Mailer Error: " . $mail->ErrorInfo;
     else 
        echo "Message sent!1";
    
         exit();
    else 
        echo '<p class=\"error\">You could not be registered due to a system error. We apologize 
        for any inconvenience.</p>';
        
    else
        echo '<p class = \"error\">That email address has already been registered. If you have
         forgotten your password, use the link at the right to have your password sent to you</p>';
    
       else 
        echo '<p class = \"error\">Please try again.</p>';
    
    mysqli_close($dbc);
    
?>

【问题讨论】:

你能给我们看看你的一些代码吗?所以我们可以看看发生了什么? @FilipeFerreira 好的,请参阅编辑 :) PHPMailer 不发出重定向;那不是它的工作。 【参考方案1】:

如果您的请求是 POST,那么您在“消息已发送!1”回显之后调用 exit()

else 
    echo "Message sent!1";

exit();

【讨论】:

【参考方案2】:

在你的:

<form method="post">

为其添加一个动作,例如:

<form method="post" action="pickaname.php">

并创建一个名为 pickaname.php 的文件,并在插入所有数据后将其重定向到您的祝贺页面。

【讨论】:

以上是关于PHPMailer 发送电子邮件并返回带有回显的空白页面的主要内容,如果未能解决你的问题,请参考以下文章

PHPMailer 不发送带有附加 zip 文件的邮件

PHPMailer拒绝发送没有附件的电子邮件

当我们使用 phpMailer 发送带有动态内容的邮件时,如何在电子邮件正文中显示多个内联图像

带有条件回显的 Shell 脚本

带有 yandex 邮件的 phpmailer 类

phpmailer:发送带附件的电子邮件并设置文件名