我有以下发送电子邮件的功能:
function send_email($email){
$subject = "TITLE";
$message = "HERE IS THE MESSAGE";
// Always set content-type when sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
// More headers
$headers .= 'From: <emaily>' . "\r\n";
mail($email,$subject,$message,$headers);
}
而不是$message
是一个字符串,我想调用保存我模板的文件email.html
。
我添加了这个:
require 'email.html';
但是如何调用文件呢?
$ message = [在此处使用email.html调用]
答案 0 :(得分:5)
当你想在另一个php文件中调用函数,或者想要在HTTP响应中包含一些数据时,使用Require。
对于此问题,file_get_contents('email.html')
是首选选项。这将是我将使用的方法:
function send_email($email){
$subject = "Subject of your email";
$message = "";
if(file_exists("email_template.html")){
$message = file_get_contents('email_template.html');
$parts_to_mod = array("part1", "part2");
$replace_with = array($value1, $value2);
for($i=0; $i<count($parts_to_mod); $i++){
$message = str_replace($parts_to_mod[$i], $replace_with[$i], $message);
}
}else{
$message = "Some Default Message";
/* this likely won't ever be called, but it's good to have error handling */
}
// Always set content-type when sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
// More headers
$headers .= 'From: <doNotReply@myDomain.com>' . "\r\n";
$headers .= "To: <$email>\r\n";
$header .= "Reply-To: doNotReply@myDomain.com\r\n";
mail($email,$subject,$message,$headers);
}
我稍微修改了您的代码,并添加了file_get_contents
和file_exists
。 file_exists
确认该文件存在。如果不是,它可以避免尝试读取它的潜在错误,并可以更改为使用某些默认值。我的下一个补充是for循环。在$parts_to_mod
数组中,输入需要替换的模板的默认值。在$replace_with
数组中,输入要用模板替换部分模板的唯一值。
作为我使用此功能的示例,我有一个代表id=IDENTIFIER&hash=THEHASH
的程序的模板网址,因此在我的计划中,我的parts_to_mod
说$parts_to_mod = array("IDENTIFIER", "THEHASH");
和{{1} } {} {}说。然后它进入for循环并用replace_with
中的值替换$replace_with = array($theUsersIdentifier, $theUsersHash);
中的值。
简单的概念,它们使您的代码更短,更容易维护。
修改强>
以下是一些示例代码:
让我们说模板是:
parts_to_modify
所以,在你的PHP代码中你会说:
replace_with
答案 1 :(得分:2)
只需使用file_get_contents('email.html')
此方法返回包含文件内容
答案 2 :(得分:0)
您可以使用此功能调用自定义电子邮件模板。
function email($fields = array(),$name_file, $from, $to) {
if(!empty($name_file)) {
$mail_tem_path = 'templates/mails/mail--'.$name_file.'.php'; //change path of files and type file.
if(file_exists($mail_tem_path)) {
$headers = "MIME-Version: 1.0". "\r\n";
$headers .= "Content-Type: text/html;charset=UTF-8". "\r\n";
// Additional headers
$headers .= "From:".$fields["subject_from"]." <$from>". "\r\n";
$headers .= "Content-Transfer-Encoding: 8Bit". "\r\n";
$message = file_get_contents($mail_tem_path);
$message = preg_replace("/\"/", "'", $message);
foreach ($fields as $field) {
// Replace the % with the actual information
$message = str_replace('%'.$field["name"].'%', $field["value"], $message);
}
$send = mail($to, $fields["subject"], $message, $headers);
} else {
$send = mail($to, "Error read mail template", "Contact with admin to repair this action.");
}
} else {
$send = mail($to, "Error no exist mail template", "Contact with admin to repair this action.");
}
return $send;
}
模板html
<html>
<body>
<a href="/home">TODO write content %value_on_array%</a>
</body>
</html>
数组和执行函数。
$fields = array(
"subject" => "tienda_seller_subject",
"subject_from" => "tienda_email_subject_from",
0 => array(
"name" => "value_on_array",
"value" => "result before change"
),
);
//email($fields = array(),$name_file, $from, $to);
email($fields, 'admin', 'owner@email.com', 'client@email.com');