簡體   English   中英

Php 變量未顯示在電子郵件中

[英]Php variable not showing up in email

我已經盡我所能,終於想到在這里問:

我有一個復選框,可以在其中檢查多個值,在我的 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 email 的每個發布值的代碼。

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

                }
            }

這句話 $proc = implode(",", (array)$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;

要解決這個問題,您必須使用 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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM