1

PHP を使用して送信しようとしている HTML メールの適切な構造を構築するための助けが必要です。メールを送信する行は次のとおりです。

$this->_send_user_email($recipient, $subject, $message);

私が問題を抱えているのは、$message. $message動的な行数を持つテーブルを含める必要があります。$message変数の現在の構造は次のとおりです。

$message = "Hello, <br><br> 
Please review details in the table below:
<br><br>
**** NEED TO INSERT DYNAMIC PHP TABLE HERE ****
<br><br>
If you have questions, please call 1-888-888-8888 and we will assist you.
<br><br>
Customer Support<br> 
<br><br>
";  

$messsageこの既存の変数内に PHP foreach ループを挿入する方法がわかりません。いつ引用符を閉じるか、どのように続行するかなどについて混乱します。挿入しようとしている foreach ループのコードは次のとおりです。

<?php if (is_array($foo['bar'])):  ?>    
<table>
    <tr>
        <th >1</th>
        <th >2</th>
        <th >3</th>
    </tr>
<?php $row = 01; 
foreach ($foo['bar'] as $key => $value): ?>
<tr>
    <td ><?php echo str_pad($row++, 2, '0', STR_PAD_LEFT); ?></td>
    <td >AAA</td>
    <td >BBB</td>
</tr>
<?php endforeach; ?>
</table>
<?php endif; ?>

だから私の質問は次のとおりだと思います:このPHP foreachループを$message上記の変数に挿入する正しい方法は何ですか?

4

4 に答える 4

2

これを行う方法は、テンプレート メッセージを $message1 と $message2 の 2 つの文字列に分割することです。最初の文字列には動的テーブルまでのすべてが含まれ、後者にはテーブルの後に始まるすべての文字列が含まれます。次に、文字列連結を使用して動的テーブルを生成し、メッセージ全体の 3 つの部分を連結します。

$message1 = "Hello, <br><br> 
Please review details in the table below:
<br><br>";

$message2 = "<br><br>
If you have questions, please call 1-888-888-8888 and we will assist you.
<br><br>
Customer Support<br> 
<br><br>";

$row = "01";

$table = "";

if(is_array($foo['bar'])) {   

    $table .= "<table>
                <tr>
                    <th >1</th>
                    <th >2</th>
                    <th >3</th>
                </tr>"; 

    foreach($foo['bar'] as $key => $value) {
        $table .= "<tr>
                     <td >" . str_pad($row++, 2, '0', STR_PAD_LEFT) . "</td>
                     <td >AAA</td>
                     <td >BBB</td>
                   </tr>";
    }

    $table .= "</table>";
}

$message = $message1 . $table. $message2;

コメントで誰かが言及したように、このコードは機能しますが、php ロジックとプレーンな html テキストを大量に混在させるという意味で、かなり面倒です。理想的には、これら 2 つをできるだけ分離する必要があります。

于 2013-01-05T22:25:24.130 に答える
1

ユーザーに送信される php を使用して静的な HTML メッセージを作成することはできますが、メール内に php を含めることはできません (そうしようとしている場合)。そのため、メールは動的に表示されます。したがって、前者を実行していると仮定すると、joe42s の回答のコードは適切です。彼はあなたのために書かれています!

人々が見たときに (php を使用して) 変化する動的に更新された電子メールが必要な場合は、ユーザー用にカスタマイズされた Web ページを表示するパラメータを含む電子メールで送信されるリンクを生成できます。

于 2013-01-05T22:22:08.233 に答える
0

さて、あなたの方法は何らかの方法で機能するかもしれませんが、私はあなたがメッセージコンテンツとして表示を使用できる電子メールを送信するためのより適切な方法でアドバイスするかもしれません、例えば:

$data=$foo;
$message = $this->load->view('some view',$data,true);

そして、あなたはそれを通常のビューとして扱うことができます

于 2013-01-06T02:09:16.137 に答える
0
            <?php 
            $message = "Hello, <br><br> 
            Please review details in the table below:
            <br><br>";

            if (is_array($foo['bar'])) {  
                $message .= "<table>
                    <tr>
                        <th >1</th>
                        <th >2</th>
                        <th >3</th>
                    </tr>";

                $row = 01; 
                foreach ($foo['bar'] as $key => $value) {
                    $message .= "<tr>
                        <td >".str_pad($row++, 2, '0', STR_PAD_LEFT)."</td>
                        <td >AAA</td>
                        <td >BBB</td>
                    </tr>";
                }
                $message .= "</table>";
            }

            $message .= "<br><br>
            If you have any questions, please call 1-888-888-8888 and we will be happy to assist you.
            <br><br>
            Customer Support<br> 
            <br><br>
            ";  
            ?>
于 2013-01-05T22:21:05.003 に答える