【问题标题】:Php variable not showing up in emailPHP 变量未显示在电子邮件中
【发布时间】:2016-03-14 18:01:52
【问题描述】:

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

我有一个复选框,可以检查多个值,在我的 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>

问题 2。这里没有呼应任何值。

为了解决问题 1,我尝试了以下代码:

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

}

在电子邮件中打印出不带逗号但仍为空值的值。

此外,由于我通过电子邮件发送这些值以呼应结果没有意义,因此我仅出于测试目的进行尝试。

按要求输出 $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>

我的情况如何?

更新:这是替换每个发布的 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);

                }
            }

【问题讨论】:

  • Okie,为什么邮件里是空的?任何想法。
  • 电子邮件代码是文件夹中的单独模板文件。除此之外的所有其他值都是可见的。
  • 试试你的建议..现在
  • @Don'tPanic 我已将代码更改为 - if(!empty($_POST['procedure'])) { foreach($_POST['procedure'] as $procedure) { $ proc .= implode(",", (array)$procedure);回声 $proc; } } 电子邮件中的值仍然为空
  • 通过(未知)表单和其他未显示的 PHP 获得了我的钱,包括 mail()

标签: php email


【解决方案1】:

句子 $proc = implode(",", (array)$procedure);

看起来不会在每次迭代中累积值。 所以它可能是:

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

(抱歉我还不能添加 cmets,只能回复)

【讨论】:

  • You should have waited... --- “电子邮件中的值仍然为空 – phpnewbie”
  • 我已经更改了在 bigging 中添加该点的代码,值正在回显,但 html 电子邮件中没有任何内容,显示为空。
  • 也许您正在尝试解析此处指定的模板电子邮件? php-html-email-using-html-template
  • @MikeBau 如果你能帮助我了解我将如何在我的代码中使用它。
【解决方案2】:

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

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

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

要解决这个问题,你必须使用 operator'.='

新代码:

  $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>

<strong>Which procedure(s) are you inquiring about?</strong>
<p>{{proc}}</p>

在您的 PHP 脚本中使用以下代码

$gethtml = file_get_contents('../forms/mailer/email-templates/contact');
$gethtml = str_replace('{{proc}}', $proc, $gethtml);

//发送邮件 使用

'html_template'  => $gethtml,

或者使用PHPmailer的'body'属性

body = $gethtml;

【讨论】:

  • 我收到此警告警告:file_get_contents($gethtml): failed to open stream: No such file or directory.
  • 因为contact-email.html 位于主表单以外的其他目录中。我的问题中提到了目录结构。
  • file_get_contents('../forms/mailer/email-templates/contact');
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-24
  • 1970-01-01
  • 2019-07-05
  • 2020-10-19
相关资源
最近更新 更多