【问题标题】:Creating A New Line In $body Of PHP Mail Function在 PHP 邮件函数的 $body 中创建一个新行
【发布时间】:2012-02-05 14:46:55
【问题描述】:

我的 PHP mail(): 函数适用于我在我的网站上使用的表单。我现在正在尝试格式化 $body 属性,以便在收到后续电子邮件时看起来更漂亮、更有条理。

我试过了\n我也试过了
都给了我

这是我正在使用的代码的 sn-p(我认为这只是我做错的语法问题):

if(!empty($brandname) && !empty($firstname) && !empty($lastname) && !empty($email) && !empty($goals) && !empty($bio)){
        $to = 'test@test.com';
        $subject = 'Submission Form';
        $body = 'Brand Name: '.$brandname.'<br />Name: '.$firstname.' '.$lastname.'<br />Email: '.$email.'<br />About the Company:'.$bio;
        $headers = 'From: '.$email;

它只是在我收到的电子邮件中将&lt;br /&gt; 显示为文本。当我使用 \n 时也是如此(我假设这实际上是正确的方法)。我究竟做错了什么?谢谢。

【问题讨论】:

    标签: php forms email


    【解决方案1】:

    最简单的方法

    $newline = '
    ';
    

    在任何你想要的地方使用 $newline 变量 (:

    【讨论】:

    • 根据您键入回车键的位置,您将获得不同的结果,因为 Mac、Window 和 Linux 使用 \r\n 的不同组合处理换行符。
    【解决方案2】:

    您必须将 \n 放在双引号中 " 而不是在单引号之间 ' 如果您希望将此序列解释为换行符(换行符 0x0A)

    看看这个 php 文档:

    http://php.net/manual/en/language.types.string.php

    【讨论】:

      【解决方案3】:

      manual page of the mail() function 中,我们了解到为了发送 HTML 电子邮件,需要说明额外的标头。这在Example #4 中得到了简明的演示。

      但是,对于换行符,我不建议使用 HTML。为此,只需在字符串中插入“\n”,确保使用双引号,正如亚伯拉罕所说的那样。

      【讨论】:

        【解决方案4】:

        使用 "&lt;br&gt;" 而不是 \n 它会 100% 我的发现起作用

        例如

        $subject="Mail from customer ".$_POST['Name'].`"<br>"`;
        

        享受:)

        【讨论】:

          【解决方案5】:

          (PHP 4,PHP 5)

          $body = 'Brand Name: '.$brandname."\r\n".'Name: '.$firstname.' '.$lastname."\r\n".'Email: '.$email."\r\n".'About the Company:'.$bio;
          

          如上所述使用"\r\n"作为换行符

          【讨论】:

            【解决方案6】:

            我无法对 Mohammad Saqib 的回答添加评论,但我想说的是,您不应使用 &lt;br&gt; 代替 \r\n,因为这可能会导致电子邮件被“行太长”捕获' 垃圾邮件过滤器。新行对于保持电子邮件更加人性化并成功交付非常重要!

            我推荐的方法是:

            $output[] = "line 1";
            $output[] = "line 2";
            $EmailBody = join("\r\n",$output);
            

            此外,您必须确保“清理”标头以避免用户输入的标头注入,这是一个双重确保停止注入的功能:

            function sanitize(&$data){
               return str_ireplace(array("\r", "\n", "%0a", "%0d"), '', stripslashes($data));
            }
            
            
            $headers = 'From: '.sanitize($email);
            

            如果您希望在电子邮件中显示 HTML 标记,请使用标题更改类型:

            $headers = 'Content-type: text/html;\r\nFrom: '.sanitize($email);
            

            如果你确实显示了 HTML,你应该清理用户输入以避免任何意外......即 HTML 注入。在 HTML 中显示用户输入的任何地方都可以使用此函数:

            function htmlclean($str){
                return htmlentities($str, ENT_QUOTES);
            }
            

            例如$body = "品牌名称:" . htmlclean($brandname);

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-03-29
              • 1970-01-01
              • 2018-12-29
              • 1970-01-01
              • 2021-10-09
              • 1970-01-01
              相关资源
              最近更新 更多