通过ajax发送HTML-在标签中添加backklash



以下问题。我得到一个带有占位符标记的文本块,用正确的内容替换这些占位符,并将此文本块放置在文本区域中。jquery val((。

在此文本区域中,所有内容都显示正确。换行符和URL链接。(标签的HTML(

如果我现在得到这个val((并通过Ajax将其发送到发送邮件的PHP函数,那么问题就会出现。文本块是邮件的正文。

文本块在邮件中显示正确,粗体标记,换行,没有问题。

但有了标签,我在中得到了反斜杠

我现在已经看了很多,包括escape、json等,但它不会成功。

也许我迷路了。有人能告诉我它在哪里,并给我指明正确的方向吗。

以下是一些代码摘录。

$( ".jsClickClaimsSendSH" ).click(function() {
var ajaxurl = $(this).data("ajax");
var action = 'claim_defects_breach_of_contract_send_mail';

var claimtype = $(this).data("claimtype");
var leadID = $(this).data("leadid");
var uniqueid = $(this).data("uniqueid");

var subject = $("#claimsmailbodycontainer .claimssubjectbody").val();
var mailbody = $("#claimsmailbodycontainer .claimsmailbody").val();
$.ajax({
type: "POST",
url: ajaxurl,

data: {
action : action,
claimtype : claimtype,
leadID : leadID,
uniqueid : uniqueid,
subject : subject,
mailbody : mailbody
},
success: function( result ){
}
});         


});

在PHP函数中,它看起来像这个

$mailbody = $_POST['mailbody'];

$headers = [];
$headers[] = 'From: '.$mailFrom;
$headers[] = 'Reply-To: '.$mailReplyTo;        
$headers[] = 'Content-Type: text/html; charset=UTF-8';
$headers[] = 'X-Mailer: PHP/' . phpversion(); 
ob_start();
include_mail_template_php ($getPageLanguage.'/claimmail');
$message = ob_get_contents();
ob_end_clean(); 
// '%%text-body%%' is placeholder tag in the mail template for the $mailbody
$variables = array(
'%%text-body%%',
); 
// set replacements for variables
$values = array(
$mailbody
);
$message = str_replace( $variables, $values, $message );

wp_mail($empfaenger, $subject, $message, $headers);

邮件中标记的HTML如下所示。你不能点击那个链接。

<a+href="http://localhost/abc/page/?l=6194a9edac24c"+target="_blank">more</a>

添加剂1

在来自jquery调用的请求中,HTML看起来仍然不错。

<a+href="http://localhost/abc/page/?l=6194a9edac24c"+target="_blank">hier</a>

占位符标记所在的邮件模板部分。此占位符将替换为邮件正文文本。

<table role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>
<td style="padding: 20px; font-family: sans-serif; font-size: 15px; line-height: 20px; color: #555555; background-color: white; white-space: pre-line; ">
<p style="margin: 0;">
%%text-body%%
</p>
</td>
</tr>  

添加2

一天从哪里来。我用ACF保存了一个文本,占位符如下

<a href="%%LinkInvoice%%" target="_blank">more</a>

您尝试过使用wp_unslash()函数吗。

这种情况下的用法类似于:

$message = str_replace( $variables, $values, $message );
$message = wp_unslash( $message ); // Strip slashes here!

wp_mail($empfaenger, $subject, $message, $headers);

或者甚至。。。

// set replacements for variables
$values = array(
wp_unslash( $mailbody )
);

您的问题没有提供足够的信息来说明示例<a>标记输出的来源。

最新更新