【问题标题】:php mail From: & Reply-to: headers issuephp mail From: & Reply-to: headers issue
【发布时间】:2015-01-14 06:37:58
【问题描述】:

好的,所以我正在编写一个 php 联系表格,它将发送两封电子邮件。一封给网站管理员,其中包含信息和发送给表单提交者的类似确认电子邮件。

问题在于确认电子邮件。我正在尝试配置 From: 标头和 Reply-to: 但由于某种原因遇到了障碍。

最初我将我的 php 设置为声明每个标头参数...

$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$guests = $_POST['guests'];
$type = $_POST['type'];
$month = $_POST['month'];
$day = $_POST['day'];
$year = $_POST['year'];
$message = $_POST['message'];
$formcontent="THIS IS A FORM SUBMISSION FROM domain.COM... \n \n PARTY INQUIRY \n \n From: $name \n Email: $email \n Phone: $phone \n # of Guests: $guests \n Type: $type \n Date Requested: $month $day, $year \n \n Additional Info: $message";
$comfirmcontent="THIS IS A CONFIRMATION OF YOUR FORM SUBMISSION TO domain.COM... \n \n PARTY INQUIRY \n \n From: $name \n Email: $email \n Phone: $phone \n # of Guests: $guests \n Type: $type \n Date Requested: $month $day, $year \n \n Additional Info: $message \n\n\n If you have any further questions please email info@mydomain.com";
$confirmsubject="Confirmation for your inquiry to mydomain.COM";
$confirmheader="From: mydomain.com" . "\r\n" .
"Reply-To: info@mydomain.com" . "\r\n" .
"X-Mailer: PHP/" . phpversion();
$recipient = "info@domain.com";
$subject = "Party Inquiry from Website";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
mail($email, $confirmsubject, $comfirmcontent, $confirmheader) or die("Error!");
header('Location: party-form-thank-you.html')

据我所知,这是正确的方法,但我仍然有 From: 说“mydomain.com@myhostdomain.com 作为发件人姓名和发件人电子邮件。这就是我什至声明标题和它是空的。

然后我尝试使用覆盖

mail($email, $confirmsubject, $comfirmcontent, $confirmheader,'-finfo@mydomain.com') or die("Error!");

返回相同的结果。

所以我只好使用以下没有声明的标题。

mail($email, $confirmsubject, $comfirmcontent, null,'-finfo@mydomain.com') or die("Error!");

这给了我正确的发件人/回复地址,但也将其作为发件人姓名。

所以我的问题是,是否有任何方法可以编写标题以便电子邮件这样表述:

发件人姓名:myDomain.com

发件人电子邮件:info@mydomain.com

【问题讨论】:

  • 是的,这一切都在手册中php.net/manual/en/function.mail.php
  • 如果您指的是该手册中的此代码,那是我最初编写的代码。正如你在我的帖子中看到的那样。 $to = 'nobody@example.com'; $subject = '主题'; $message = '你好'; $headers = '来自:webmaster@example.com' 。 "\r\n" 。 “回复:webmaster@example.com”。 "\r\n" 。 'X-Mailer: PHP/' 。 php版本();邮件($to, $subject, $message, $headers);
  • 你需要深入挖掘它;-)
  • From: 应该是一个电子邮件地址。你没有提供一个 - 你只是在打一个域名。 From: foo@example.com - 很好。 From: example.com - 不好。
  • 实际上$fromname="mydomain.com"; $fromemail="info@mydomain.com"; 'From: "' . $fromname . '" <' . $fromemail . '> 完美地显示了我想要的发件人姓名和发件人电子邮件

标签: php email header


【解决方案1】:

我使用一个数组作为我的标题,然后implode 他们在 "\r\n":

$headers = array();
$headers[] = 'Content-type: text/html; charset="UTF-8";';
$headers[] = 'Date: ' . date('r', $_SERVER['REQUEST_TIME']);
$headers[] = 'Message-ID: <' . $_SERVER['REQUEST_TIME'] . md5($_SERVER['REQUEST_TIME']) . (empty($_SERVER['SERVER_NAME']) ? '' : '@' . $_SERVER['SERVER_NAME']) . '>';

// here is the from and reply-to part:
$headers[] = 'From: "' . $fromName . '" <' . $fromAddress . '>';
$headers[] = 'Reply-To: "' . $replyToName . '" <' . $replyToAddress . '>';
$headers[] = 'X-Mailer: PHP v' . phpversion();
if (!empty($_SERVER['SERVER_ADDR'])) {
    $headers[] = 'X-Originating-IP: ' . $_SERVER['SERVER_ADDR'];
}

// Use the implode function to collapse the array into a single string
mail($to, $subject, $message, implode("\r\n", $headers));

【讨论】:

  • 太棒了,谢谢!这让我几乎一路走到了那里。我尝试实现相同的代码,但没有数组:
  • $fromname="mydomain.com"; $fromemail="info@mydomain.com"; $confirmheader= 'From: "' . $fromname . '" &lt;' . $fromemail . '&gt;'; 'Reply-To: "' . $fromname . '" &lt;' . $fromemail . '&gt;'; 'X-Mailer: PHP v' . phpversion(); $recipient = "info@mydomain.com"; $subject = "Contact From Website"; $mailheader = "From: $email \r\n"; mail($recipient, $subject, $formcontent, $mailheader) or die("Error!"); mail($email, $confirmsubject, $comfirmcontent, $confirmheader) or die("Error!"); header('Location: contact-form-thank-you.html')
  • 这已获得正确显示的发件人姓名和电子邮件。但是,当我回复电子邮件时,它没有回复该地址,它会尝试回复收件人?
  • 该数组很好,因为您可以将每个条目放在一行上,并且直到最后都不必担心新行。 '$email' 和 '$fromemail' 变量的值是多少?此外,如果您收到确认电子邮件并回复了该邮件,则您的发件人和回复人是相同的。
  • 很遗憾,由于我是前端开发人员,php 不是我的强项。所以我试图简化它;)我确实收到了确认电子邮件并试图回复它,它奇怪地回复了我自己。
猜你喜欢
  • 2017-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-02
  • 2010-11-17
  • 2013-12-15
  • 1970-01-01
  • 2011-06-24
相关资源
最近更新 更多