我一直在尝试在邮件标题上获取此格式:“有些用户< my@mail.com>”,但我不能。
我有两个可以从表单中检索的变量。这些是$_POST['form_email'])
和$_POST['form_name'])
。
在php中我有:
$headers = "From: ". strip_tags($_POST['form_email']) . "\r\n";
但我不知道如何将$_POST['form_name'])
添加到FROM
。
我想也许可能
$headers = "From: ". strip_tags($_POST['form_email']) . "\r\n";
$headers .= "From: ". strip_tags($_POST['form_name']) . "\r\n";
......但是不行。
谢谢你们。
答案 0 :(得分:0)
我认为这应该有用
$headers = "From: ". strip_tags($_POST['form_name']) . " <". strip_tags($_POST['form_email']) . ">\r\n".
答案 1 :(得分:0)
不知道你想要完成什么,但strip_tags()是一个HTML操作函数,电子邮件标题必须是纯文本。 <my@mail.com>
处的尖括号与HTML没有任何关系。
你基本上必须替换它:
$headers = "From: ". strip_tags($_POST['form_email']) . "\r\n";
......在这一行上有一些东西:
$form_name = filter_input(INPUT_POST, 'form_name');
$form_email = filter_input(INPUT_POST, 'form_email', FILTER_VALIDATE_EMAIL);
if( !preg_match('/[\r\n]/u', $form_name) && $form_email ){
$headers = sprintf('From: "%s" <%s>\r\n', $form_name, $form_email);
}else{
// Don't send anything: either email injection attack or missing data
}
完成?还没。您仍然需要encode $form_name
properly,因为它可以包含引号或非ASCII字符。事实上,电子邮件很难,你不应该自己尝试。像Swift Mailer或PHPMailer这样的第三方软件包将是更好的选择。