-1

我有这个代码,它应该发送邮件到一个地址。问题是:在标题中我应该得到像“Bob Marley”这样的名字,但如果名字大于一个单词,它会说“(未知发件人)”。如果名称恰好是一个词,它就可以工作。如果我将 $_POST['nume'] 值连接到 $message,它就在那里。出于某种原因,在标题中,它不能正常工作。

<form name="contact" method="post" class="clearfix" id="formular">
   <input class="inputC" type="text" placeholder="Full Name" id="numeCo" onClick="clearValue(this.id)" onBlur="testValue(this.id)" name="nume"/>

   <input class="inputC" type="text" placeholder="E-mail Address" id="adresaCo" onClick="clearValue(this.id)" onBlur="testValue(this.id)" name="adrMail"/>

   <input class="inputC" type="text" placeholder="What services do you need?" id="serviciiCo" onClick="clearValue(this.id)" onBlur="testValue(this.id)" name="servicii"/>

   <div class="sumarise">
   <textarea class="textAreaC" placeholder="Please summarize your project..." id="textArCo" onClick="clearValue(this.id)" onBlur="testValue(this.id)" name="descriere"></textarea>
   </div>
   <div class="sB clearfix">
   <input class="submitC" type="submit" value="Send Message" />
   </div>                              
   </form>
   <?php
   if(isset($_POST['nume'], $_POST['adrMail'], $_POST['descriere']))
    {
     /*echo "<script> return checkForm();</script>";*/
     $to = "radu.mircea.andrei@gmail.com";                                                                              
     $subject = $_POST['servicii'];
     $message = $_POST['descriere'];                                        
     $name = $_POST['nume'];
     $headers= "From: ".$name."\n".'Reply-To: '.$_POST['adrMail'];
     mail($to,$subject,$message,$headers);                                      
    }
  ?>
4

2 回答 2

2

“to”地址需要符合RFC 2822 - 也许 from 地址也可以:

From: Birthday Reminder <birthday@example.com>

请参阅PHP 邮件示例

PHP 文档还指出\n应该是有效的,如果您遇到问题,建议您这样做\r\n- 所以我认为这不太可能是问题,尽管尝试这样做也没有害处。

于 2012-08-16T11:21:43.563 回答
0

我将把它作为答案,因为我认为这对你来说非常重要。

mail()像使用用户定义的标头一样使用该功能时存在漏洞From。在这里看到这个问题:正确防止 PHP 中的邮件注入

但是要解决您的实际问题:

  • 也尝试使用 \r\n (就像@Sudhir 说的那样)(我发现 \r\n 更符合某些邮件客户端)
  • 也像@Sohnee 说的那样输入电子邮件
于 2012-08-16T11:24:27.027 回答