PHP邮件功能中的“发件人”地址

20

我甚至不确定这是否可能,不过我想要做的是这样的。我有一个使用 PHP 脚本生成电子邮件的 HTML 表单。我想要从这个表单收到发送到 abc@xyz.com 的电子邮件,然后希望 from 地址显示为表单中的某个字段。

我查看了一些信息,并在这个网站上找到了一些有用的信息。我不确定在这种情况下是否可以使用 sendmail_from,或者它是否满足我的要求。

如果可以实现,应该如何做?

3个回答

36

请查看同一网站的此页面(示例2):http://www.w3schools.com/php/func_mail_mail.asp

您需要设置邮件头以包括发件人以及其他内容,例如抄送或密送:

<?php
$to = "somebody@example.com";
$subject = "My subject";
$txt = "Hello world!";
$headers = "From: webmaster@example.com\r\n";

mail($to,$subject,$txt,$headers);
?>

请注意,您需要使用换行序列"\r\n"将标题分隔开。


2
请注意,如果这是来自表单的动态字段,请用$variable替换webmaster@example.com。您也可以使用此格式:$username<$email> - Pitchinnate
我会包含PHP的mail()官方手册http://php.net/manual/en/function.mail.php,也可以选择代替。 - Funk Forty Niner

4

对于一个用于联系表单的 PHP 邮件脚本,我已经使用了以下代码:

$from = $_POST["from"];  //posted from the form.

mail("me@myname.com", $subject, $message, "From:" . $from);

我以前在php中没有使用过sendmail_from,只用了一个简单的变量。

希望这可以帮到你!


1
在将$_POST["from"]变量传递给mail()函数之前,您真的应该对其进行消毒处理。使用您的方法,恶意用户可以注入任意数量的其他标题。 - Eric Seastrand
此外,由于“From”不匹配发送域,它很可能最终会被大多数邮件服务器系统放入垃圾邮件文件夹中。我建议将“From”设置为服务器上的本地电子邮件,而将经过消毒的“Reply-To”头设置为代替。 - Mavelo

1

你为什么不能在电子邮件头部完成它呢?

$to      = 'hello@hello.com';
$subject = 'my subject';
$message = 'hello';
$headers = 'From: '.$email_from_form. "\r\n";

mail($to, $subject, $message, $headers);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接