2017-01-06 30 views
1

从我在WordPress的自定义主题,我想发送一个HTML电子邮件。WordPress的 - 阅读HTML电子邮件模板存储在一个文件

而不是填充体像这样:

$message = ""; 
$message = "<h3>Someone has applied for a job on the site.</h3>" . "<br><br>"; 
$message .= "Profile Picture URL: " . $Picture . "<br>"; 
$message .= "Name: " . $Name . "<br>"; 
$message .= "Email: " . $Email . "<br>"; 
$message .= "Phone: " . $Phone . "<br>"; 
$message .= "Work Phone: " . $WorkPhone . "<br>"; 
$message .= "Resume: " . $Resume . "<br>"; 
$message .= "Preferences: " . sanitize_text_field($Preferences) . "<br><br>"; 

相反,我想的HTML电子邮件模板是它自己的文件。

然后,我想读取HTML电子邮件模板文件,并用一些存储在php变量中的数据填充它的一部分。

所以,让我们说,我有一个html文件:

emailtemplate.html

<h3>Name: [NameGoesHere]</h3> 
<h3>Address: [AddressGoesHere]</h3> 

然后,在我的PHP文件我有:

$name = "Jane Doe"; 
$address = "123 Street"; 
$message = ""; 
wp_mail($to, $subject, $message, $headers, $attachments); 

如何阅读那个html文件,把名字和地址放在哪里,然后把它存储在$ message中?

我的例子看起来太简单了,但我实际上已经构建了3个非常全面的HTML电子邮件,我想要使用它们并且每个都有很多代码。

谢谢,

回答

1

你可以用str_replace做到这一点。

首先你会想,模板内容抓取作为变量

$template = file_get_contents('/path/to/your/template.html'); 

那么你需要的位置标记现有的变量去交换。从您的示例源代码中,您可以将名称字段替换为:

$template = str_replace('[NameGoesHere]', $name, $template); 

根据需要随时重复以更换任何需要的内容。

然后,当您完成后,只需使用结果作为您的电子邮件内容。

1

我认为你最好的自己编写的解决方案只是使用php内置方法解析它。

读取文件,使用file_get_contents

// From Link 
<?php 
// <= PHP 5 
$file = file_get_contents('./HTML_TEMPLATE1.html', true); 
// > PHP 5 
$file = file_get_contents('./HTML_TEMPLATE1.html', FILE_USE_INCLUDE_PATH); 
?> 

来分析HTML文件,使用the explode function

我建议你把一个分隔符是# #例如(看看这会如何帮助你以后) 这将保持实际的字符串的地方。

<?php 
// Example 
// Use previous $file-> ($file = "<html>...";) 

$pieces = explode("#", $file);// "#" is YOUR_DELIMITER 
echo $pieces[0]; // piece1 
echo $pieces[1]; // piece2 
?> 

然后,填补了数组的奇/偶指数法(取决于你如何解析它)。

如果你用#解析它,就像我建议的那样,你将会得到一堆你想用php代码中的值填充的空项 - 只需迭代数组并设置它们即可。您可以从您要插入的所有值的数组,然后它会更容易

,然后重新连接排列为一个字符串,并将其thenset到$message使用implode

简单的例子从链接:

<?php 

$array = array('lastname', 'email', 'phone'); 
$comma_separated = implode(",", $array); 

echo $comma_separated; // lastname,email,phone 
?> 

,然后将其设置回$message和邮件:

$message = $value_of_attached_array; 
wp_mail($to, $subject, $message, $headers, $attachments); 

希望这会有所帮助:)