【问题标题】:PHP send email with loop dataPHP 发送带有循环数据的电子邮件
【发布时间】:2012-09-08 08:29:29
【问题描述】:

您好,我想使用 php 邮件功能发送循环数据,这是我的代码:

foreach ($data['query'] as $row){
    echo $row->name;
    echo "<br>";
    echo $row->time;
    echo "<br>";
    echo $row->dosage;
    echo "<br>";
    echo $row->frequency;
    echo "<br>";
    echo $row->quantity;
    echo "<br>";
}

$to = "somebody@example.com";
$subject = "My subject";
$txt = "Hello world!";
$headers = "From: webmaster@example.com";
mail($to,$subject,$txt,$headers);

谁能告诉我如何将 foreach 循环数据附加到电子邮件正文中,我的意思是,我想发送循环数据,而不是在正文中发送此文本(Hello World!)。

【问题讨论】:

    标签: php


    【解决方案1】:

    连接$txt:

    $txt = "";
    foreach ($data['query'] as $row){
        $txt .= $row->name;
        $txt .= "<br>";
        $txt .= $row->time;
        $txt .= "<br>";
        $txt .= $row->dosage;
        $txt .= "<br>";
        $txt .= $row->frequency;
        $txt .= "<br>";
        $txt .= $row->quantity;
        $txt .= "<br>";
    }
    
    $to = "somebody@example.com";
    $subject = "My subject";
    $headers = "From: webmaster@example.com";
    mail($to,$subject,$txt,$headers);
    

    【讨论】:

    • 只剩下一个问题
      在已发送邮件中不起作用,您能帮忙吗?
    • 您必须将标题设置为 HTML 或添加 $txt .= "\n"; 而不是 &lt;br&gt;
    【解决方案2】:

    纯字符串连接如下:

       $str = ''; 
       foreach ($data['query'] as $row){
          $str .= $row->name;
          $str .= "<br>";
          $str .= $row->time;
          $str .= "<br>";
          $str .= $row->dosage;
          $str .= "<br>";
          $str .= $row->frequency;
          $str .= "<br>";
          $str .= $row->quantity;
          $str .= "<br>";
        }
    
        $to = "somebody@example.com";
        $subject = "My subject";
        $headers = "From: webmaster@example.com";
        mail($to,$subject,$str,$headers);
    
        $str = ''; // empty the $str again
    

    【讨论】:

      【解决方案3】:

      我想这就是你所追求的:

          $to = "somebody@example.com";
          $subject = "My subject";
          $txt = "Hello world!";
          $headers = "From: webmaster@example.com";
      
          foreach ( $data['query'] as $row ) {
            $txt = $row->name;
            $txt .= "<br>";
            $txt .= $row->time;
            $txt .= "<br>";
            $txt .= $row->dosage;
            $txt .= "<br>";
            $txt .= $row->frequency;
            $txt .= "<br>";
            $txt .= $row->quantity;
            $txt .= "<br>";
      
            mail( $to, $subject, $txt, $headers );
          }
      

      这会为每个循环发送一封邮件。如果你想要的话,你的问题还不清楚。您也可以收集所有数据,并将其作为 1 封电子邮件发送:

      $to = "somebody@example.com";
      $subject = "My subject";
      $txt = "";
      $headers = "From: webmaster@example.com";
      
      foreach ( $data['query'] as $row ) {
        $txt .= $row->name;
        $txt .= "<br>";
        $txt .= $row->time;
        $txt .= "<br>";
        $txt .= $row->dosage;
        $txt .= "<br>";
        $txt .= $row->frequency;
        $txt .= "<br>";
        $txt .= $row->quantity;
        $txt .= "-- end of row<br>";
      
      }
      
      mail( $to, $subject, $txt, $headers );
      

      【讨论】:

        【解决方案4】:
        <?php
        $dataArray  =   array('name','time','dosage','frequency','quantity');
        $txt        =   '';
        foreach ($data['query'] as $row)
        {
            foreach($dataArray as $key=>$data)
            {
               $txt .= ($row->$data.'</br>');
            }
        }
        
        $to = "somebody@example.com";
        $subject = "My subject";
        $txt = "Hello world!";
        $headers = "From: webmaster@example.com";
        mail($to,$subject,$txt,$headers);
        
        ?>
        

        【讨论】:

          猜你喜欢
          • 2023-03-16
          • 2012-06-15
          • 2017-03-04
          • 1970-01-01
          • 2020-11-20
          • 2014-02-28
          • 2011-07-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多