将额外内容添加到wp_mail“消息”段

时间:2013-03-05 23:53:29

标签: php wordpress email

我正在使用使用wp_mail功能的自定义Wordpress模板。

所以我在下面有这个代码,粗体部分给我带来了问题:

wp_mail($ et_email_to,sprintf('[%s]'。esc_html($ _ POST ['et_contact_subject']),$ et_site_name), esc_html($ _ POST ['et_contact_message']), 'From:''。esc_html($ _ POST ['et_contact_name'])。'“<'。esc_html($ _ POST ['et_contact_email'])。'>');

我想在Message部分中包含额外的东西。 esc_html($_POST['et_contact_message'])

当我尝试在那里添加额外的东西时,它会产生各种PHP错误。

如果我用{12345'这样的普通文本替换esc_html()部分,它就可以了。

我想在消息末尾添加的是:

"IP Address: ".$_SERVER['REMOTE_ADDR']."

Came From: ".$_SERVER['HTTP_REFERER']."

Browser: ".$_SERVER['HTTP_USER_AGENT']

如果我删除esc_html()部分,它可以正常工作,但我不能让它们一起工作。

esc_html()也能正常工作,它会从联系表单打印消息。 我无法让两件事情一起工作。

这些将失败,例如:

esc_html($_POST['et_contact_message']) 12345,

esc_html($_POST['et_contact_message'] $_SERVER['REMOTE_ADDR']),

等...

请帮帮我。 谢谢!

2 个答案:

答案 0 :(得分:2)

在PHP中检查字符串连接 - 有很多方法可以做到这一点,我将突出显示http://www.php.net/manual/en/language.types.string.php中的一些

<?php
$foo = 'some';
$bar = 'baz';

$message = '';
$message .= 'Add ' . $foo;
$message .= ' variable to a string';

// You can do this all at once, in one line or many
$mesage = 'Add ' . $foo . ' variable to a string';

// Double-quotes are useful
$message = "Add {$foo} variable to a string";

// And there are other methods, like HEREDOC
$message = <<<TEXT
Add $foo variable to a string...in a HEREDOC



block.
TEXT;

// Some editors, like VIM, support syntax highlighting in HEREDOC
// Useful if you want to write out legeble code from other languages, like
// SQL.
$message = <<<SQL
SELECT
    *
FROM
    table
WHERE
    col = %s
SQL;

$wpdb->prepare($message, $foo);

答案 1 :(得分:0)

我终于找到了让它发挥作用的方法! 这是代码:

$message = $_POST['et_contact_message'];
$message .= '

IP Address: ' . $_SERVER['REMOTE_ADDR'];
$message .= '

Came From: ' . $_SERVER['HTTP_REFERER'];
$message .= '

Browser: ' . $_SERVER['HTTP_USER_AGENT'];
wp_mail($et_email_to, sprintf( '[%s] ' . esc_html($_POST['et_contact_subject']), $et_site_name ), $message,'From: "'. esc_html($_POST['et_contact_name']) .'" <' . esc_html($_POST['et_contact_email']) . '>');