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变量未显示在电子邮件中_Php_Email - Fatal编程技术网

Php变量未显示在电子邮件中

Php变量未显示在电子邮件中,php,email,Php,Email,我已经尽了我所能,终于想到在这里问: 我有一个复选框,可以检查多个值,在我的php中,我试图在如下变量中获取这些值: if(!empty($_POST['procedure'])) { foreach($_POST['procedure'] as $procedure) { $proc = implode(",", (array)$procedure); } echo $proc; } 问题1。它会回显上一个选定值,而不是多个选定值 在我的html电子邮件模板中,我有以下内容:

我已经尽了我所能,终于想到在这里问:

我有一个复选框,可以检查多个值,在我的php中,我试图在如下变量中获取这些值:

if(!empty($_POST['procedure'])) {
foreach($_POST['procedure'] as $procedure) {
      $proc = implode(",", (array)$procedure); 
}
echo $proc;
}
问题1。它会回显上一个选定值,而不是多个选定值

在我的html电子邮件模板中,我有以下内容:

<strong>Which procedure(s) are you inquiring about?</strong>
<p><?php echo $proc; ?></p>
打印值,不带逗号,但在电子邮件中仍为空值

另外,由于我通过电子邮件发送这些值,结果没有意义,所以我只是为了测试目的而尝试

按要求输出$proc:

Vertical  Horizontal Flat
这些是复选框的值,echo$proc正在正确捕获它们

更新:邮件功能代码

$user_email = addslashes($_POST['email']);
$filter_values = 'form, submit-btn';
$errors = '<p class="alert alert-success">Your message has been successfully sent !</p>';
$options = array(
'from_email'     =>  '',
'from_name'      =>  'form', // optional
'reply_to'       =>  'test@test.com', // optional
'adress'         =>  'my@gmail.com',
'subject'        =>  'contact',
'attachments'    =>  'img/wallacegromit.jpg', // optional
'filter_values' => 'form, submit-btn',
'html_template'  => '../forms/mailer/email-templates/contact-email.html', // optional
'css_template'   => '../forms/mailer/email-templates/contact-email.css', // optional
'sent_message'   => '<p class="alert alert-success">Your message has been successfully sent !</p>', // optional
'display_errors' => true // optional, default false
);
$sent_message = Form::sendAdvancedMail($options);

<strong>Which procedure(s) are you inquiring about?</strong>
 <p>{proc} </p>
$user\u email=addslashes($\u POST['email']);
$filter_values='form,submit btn';
$errors='

您的邮件已成功发送

",; $options=array( '来自电子邮件'=>'', 'from_name'=>'form',//可选 '回复'=>'test@test.com“,//可选 '地址'=>'my@gmail.com', “主题”=>“联系人”, '附件'=>'img/wallacegromit.jpg',//可选 '筛选值'=>'表单,提交btn', 'html_template'=>'../forms/mailer/email templates/contact email.html',//可选 'css_template'=>'../forms/mailer/email templates/contact email.css',//可选 “已发送消息”=>”

您的消息已成功发送!

,//可选 “显示错误”=>true//可选,默认为false ); $sent_message=Form::sendAdvancedMail($options); 您想了解哪些程序? {proc}

我的情况如何

更新:这是替换html电子邮件的所有已发布值的代码

$filter = explode(",", $filter_values);
            for ($i = 0; $i < count($filter); $i++) {
                $filter[$i] = trim(mb_strtolower($filter[$i]));
            }
            $replacements = array_merge($values, $custom_replacements);
            foreach ($replacements as $key => $value) {
                if (!in_array(mb_strtolower($key), $filter) && !is_array($value)) {
                    $html = str_replace('{' . $key . '}', $replacements[$key], $html);

                }
            }
$filter=explode(“,”,$filter\u值);
对于($i=0;$i$value){
如果(!in_数组(mb_strtolower($key),$filter)&&!is_数组($value)){
$html=str_replace('{.$key.'}',$replacements[$key],$html);
}
}
这句话 $proc=内爆(“,”,(数组)$procedure)

看起来似乎不会在每次迭代中累积值。 因此可能是:

  $proc = "";
  if(!empty($_POST['procedure'])) {
        foreach($_POST['procedure'] as $procedure) {
        //accumulate with '.=' operator
        $proc .= implode(",", (array)$procedure); 
  }
  echo $proc;

(很抱歉,我还不能添加注释,只能添加响应)

echo$proc将只输出数组的最后一个元素。$proc的值将被替换

  $proc = "";
  if(!empty($_POST['procedure'])) {
        foreach($_POST['procedure'] as $procedure) {

        $proc = implode(",", (array)$procedure); 
  }
  echo $proc;
要解决此问题,必须使用运算符“.=”

新代码:

  $proc = "";
  if(!empty($_POST['procedure'])) {
        foreach($_POST['procedure'] as $procedure) {

        $proc .= implode(",", (array)$procedure); 
  }
  echo $proc;

要在php中获得$proc,应该使用占位符。所以改变

<strong>Which procedure(s) are you inquiring about?</strong>
<p><?php echo $proc; ?></p>
//寄信 使用

或者使用PHPmailer的属性“body”

body = $gethtml;

好吧,为什么邮件里是空的?电子邮件代码是文件夹中一个单独的模板文件。除此之外,所有其他值都可见。正在尝试您的建议。。now@Don'tPanic I已将代码更改为此-如果(!empty($_POST['procedure']){foreach($_POST['procedure']as$procedure){$proc.=内爆(“,”,(array)$procedure);echo$proc;}}电子邮件中的值仍然为空,我的钱在(未知)表单和其他取消下载的PHP,包括
mail()
——“电子邮件中的值仍然为空–phpnewbie”我已经更改了代码,在bigging中添加了点,这些值正在回显,但html电子邮件中没有任何内容显示为空。也许您正在尝试解析模板电子邮件,就像这里指定的那样@MikeBau,如果你能帮助我理解我将如何在代码中使用它。我收到以下警告:file\u get\u contents($gethtml):无法打开流:没有这样的文件或目录。因为contact-email.html位于主窗体以外的其他目录中。我的问题中提到了目录结构;
<strong>Which procedure(s) are you inquiring about?</strong>
<p>{{proc}}</p>
$gethtml = file_get_contents('../forms/mailer/email-templates/contact');
$gethtml = str_replace('{{proc}}', $proc, $gethtml);
'html_template'  => $gethtml,
body = $gethtml;