【问题标题】:Issue with $mail->Body in the PHPMailerPHPMailer 中 $mail->Body 的问题
【发布时间】:2014-10-13 02:28:09
【问题描述】:

这里是初学者。

我已经检查了论坛以找到答案,但我没有成功,其他问题专门针对 PHPMailer 的某些部分,但我的问题更笼统。所以我希望没有人会像我在学习曲线中那样将我的问题标记为重复。

我正在开发一个 PHP 项目。它的工作原理是用户进入页面并在表单(文本编辑器)中编写一些 cmets,然后单击发送按钮。我可以在我的电子邮件中收到他的消息。出于显而易见的原因,我已将密码和主机设置为空,但稍后它将是我拥有自己域的真实电子邮件。

这里有两个问题:

  • 我不想使用 $mail->Body 发送静态正文,但我希望程序获取用户的消息、姓名和电子邮件地址并将该消息发送到我的电子邮件。
  • 当我收到电子邮件时,我看不到发件人的姓名和电子邮件,这意味着程序无法从会话中获取用户的电子邮件和姓名

能否请您提供有帮助的建议或示例代码。谢谢。

if($_POST['mode']=='send'){

    $mail = new PHPMailer();

    $mail->IsSMTP();                                // telling the class to use SMTP
    $mail->Host     = "myhost";                     // SMTP server
                                                    //$mail->SMTPSecure = 'ssl';
    $mail->From     = "my email";
    $mail->port     = '26';                             // can also change to 465
    $mail->SMTPAuth = true; 
    $mail->Username= "my email"; 
    $mail->Password = "my password"; 

    $mail->AddAddress("my email");

    $Name = mysql_real_escape_string($_POST['part_fname']);    //this code is not getting the name and email
    $Email = mysql_real_escape_string($_POST['part_email']);

    $mail->Subject  = "New Bug Report";
    $mail->Body     = "User Information, Name = " . $Name . " ||  Email = " . $Email; // I want to get the user's message not a static message!
    $mail->WordWrap = 50;

    if(!$mail->Send())
     {
      echo 'Message was not sent.';
      echo 'Mailer error: ' . $mail->ErrorInfo;
    } 
    else 
    {
            $message = 'Thanks for your suggestion';
    }
 }

这是html中的表格:

<form role="form" name="Form2" action="" method="post" class="form-horizontal">
<textarea name="bug" cols="100" rows="15" id="textarea" placeholder="Enter text ..."></textarea>
<input name="mode" value="send" type="hidden">
<p style="margin-top:5px;"><input type="reset" value="Clear Text!" class="btn btn-danger">&nbsp; <button type="submit" class="btn btn-primary">Send report</button></p>
</form>

【问题讨论】:

  • 向我们展示 html 表单
  • 你为什么要使用mysql_real_escape_string()
  • @Dagon,我正在尝试获取姓名和电子邮件并将它们转换为字符串,以便将它们发送到我的电子邮件。我应该删除它们吗?顺便说一句,我将 html 表单添加到上面的代码中,请在几分钟后查看它。非常感谢。
  • 如果表格正确,您只需要$mail-&gt;Body = "User Information, Name = " . $_POST['part_fname'] . " || Email = " . $_POST['part_email'];
  • @Dagon,现在附上 html。你能复习一下吗?谢谢。

标签: php email


【解决方案1】:

删除mysql_real_escape_string它需要连接到mysql。

$Name = $_POST['part_fname'];    
$Email = $_POST['part_email'];
$message= $_POST['bug'];//add this to get the textarea value

然后将值附加到正文中:

$mail->Body = "User Information, Name = " . $Name . " ||  Email = " . $Email;
$mail->Body .= "Message: ".$message;

如果你想要会话

用户何时登录:

session_start();
$_SESSION['part_fname'] = $Name;
$_SESSION['part_email'] = $Email;

发送电子邮件时:

session_start();
$Name = $_SESSION['part_fname']; 
$Email = $_SESSION['part_email']; 
$message= $_POST['bug']; 

【讨论】:

  • 嗨@meda,此代码有效,但我的电子邮件中的结果是这样的:用户信息,名称 = ||电子邮件 = 消息:您好,这是一个错误……这意味着它现在将用户消息发送给我,而不是电子邮件和名称。请问有什么建议吗?
  • 您需要在表单中添加字段,参见 dagon answer the HTML
  • 是的,它适用于该字段,但我的要求是我不应该有任何字段来获取用户的姓名和电子邮件。用户已经使用他的用户名和电子邮件登录,因此应该有一种方法可以在不要求他再次输入的情况下获取电子邮件和用户名。我对么?如果是,您对此有什么建议吗?非常感谢
  • 使用 session 你的意思是这样的: $Name = $_SESSION['part_fname']; $Email = $_SESSION['part_email']; $message= $_POST['bug'];
  • 不幸的是,即使我使用了您的会话建议,它仍然没有从会话中获取名称和电子邮件!
【解决方案2】:

您需要在表单中添加姓名和电子邮件字段,如下所示:

<input name="part_fname" value="" type="text">
<input name="part_email" value="" type="text">

然后修改代码:

$Name = $_POST['part_fname'];    
$Email = $_POST['part_email'];
$message= $_POST['bug'];// textarea value

$mail->Body = "User Information, Name = " . $Name . " ||  Email = " . $Email;
$mail->Body .= "Message: ".$message;

【讨论】:

  • 是的,它适用于该字段,但我的要求是我不应该有任何字段来获取用户的姓名和电子邮件。用户已经使用他的用户名和电子邮件登录,因此应该有一种方法可以在不要求他再次输入的情况下获取电子邮件和用户名。我对么?如果是,您对此有什么建议吗?非常感谢
  • 也许用户详细信息在 A 会话中?我怎么可能知道?
  • 是的,你认为我们可以使用这个:$Name = $_SESSION['part_fname']; $Email = $_SESSION['part_email']; $message= $_POST['bug'];
  • 是的,请确保在访问这些变量之前使用session_start();
  • 不幸的是,使用会话后仍然没有从会话中获取名称和电子邮件!
猜你喜欢
  • 2021-08-05
  • 2010-11-17
  • 1970-01-01
  • 1970-01-01
  • 2011-07-28
  • 1970-01-01
相关资源
最近更新 更多