Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP mail()函数中包含对文件的调用_Php_Email - Fatal编程技术网

如何在PHP mail()函数中包含对文件的调用

如何在PHP mail()函数中包含对文件的调用,php,email,Php,Email,我有以下发送电子邮件的功能: 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 .= "Conte

我有以下发送电子邮件的功能:

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=[call in email.html here]

只需使用
文件获取内容('email.html')
此方法返回一个包含文件内容的字符串

当您要在另一个php文件中调用函数,或者当您想在HTTP响应中包含一些数据时,需要使用该字符串

对于这个问题,
file\u get\u 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);
}
因此,在php代码中,您会说:

$parts_to_mod = array("PUTNAMEHERE", "PUTMESSAGEHERE", "PUTSENDERHERE");
$replace_with = array($name, $theBodyOfYourEmail,  $whoYouAre);

您可以使用此功能调用自定义电子邮件模板

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;  
}

无需使用file\u get\u contents()读取内容并将其放入变量中。这太棒了,谢谢。我有一个问题,如果我想包含另一个参数$name,然后将其输出到电子邮件中,我将如何使用它?我需要先将变量传递到email.html文件吗?我想你的意思是说“亲爱的$name”之类的话。在这种情况下,我将添加一些示例代码@弗朗西丝卡如果这是你认为最好的答案,那么投票并接受答案总是很感激的,因为我的声誉可能需要一些帮助;)斯宾塞+1为您提供时间、精力和优质答案。。投票结果应该比现在好得多。
$parts_to_mod = array("PUTNAMEHERE", "PUTMESSAGEHERE", "PUTSENDERHERE");
$replace_with = array($name, $theBodyOfYourEmail,  $whoYouAre);
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>
 <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');