【问题标题】:Trying to send csv attachment AND body text in email尝试在电子邮件中发送 csv 附件和正文
【发布时间】:2016-11-05 16:43:20
【问题描述】:

我已经能够将 php 脚本(带有 HTML)写入 $_REQUEST 在线表单数据输入,并且要么 (1) 写入 CSV 文件并将其作为附件通过电子邮件发送,或 (2) 在任何电子邮件的正文中包含数据。

但我不能同时做这两件事。我希望将 CSV 快速导入数据库,并且我希望电子邮件正文也包含详细信息,以便运输部门有一个打包清单。如何让这两个功能同时工作而不会相互干扰?

提前谢谢你。

PHP 脚本

        $to = "name@domain.com";
        $subject = "Order - " . $_Tech_Name;

        //Add the headers 
        $semi_rand = md5(time());
        $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

        $headers = "MIME-Version: 1.0\n" .
                   "From: {$email_from}\n" .
                   "Content-Type: multipart/mixed;\n" .
                   " boundary=\"{$mime_boundary}\"";

        // email body includes only fields not null
        $body = "";
        foreach ($_REQUEST as $Field=>$Value) { 
            if($Value != ''){
                $body .= "$Field: $Value\n\n";
            }
        }
        $email_body = "Here are the details: \n\n $body";

        // csv file name format
        $today = date("m.d.y"); 
        $csv_name = "order - " . $_Tech_Name . " " . $today . ".csv";
        $fp = fopen($csv_name,'a');
        fwrite($fp,$data);
        fclose($fp);

        $attachments[] = Array(
           'data' => $data,
           'name' => $csv_name,
           'type' => 'application/vnd.ms-excel'
        );

       //Add sttachments
        foreach($attachments as $attachment){
           $data = chunk_split(base64_encode($attachment['data']));
           $name = $attachment['name'];
           $type = $attachment['type'];

           $message .= 
                      "--{$mime_boundary}\n" .
                      "Content-Type: {$type};\n" .
                      " name=\"{$name}\"\n" .
                      "Content-Transfer-Encoding: base64\n\n" .
                      $data . "\n\n" ;
        }

**PHP SCRIPT - 我已经用以下附加脚本隔离了问题,该脚本是上面显示的脚本的一部分,但我还不明白为什么会出现问题。通过注释掉 $message (附件)或 $email_body (仅正文),我可以让其中一个或另一个工作。但是如果我把两个变量都留在那里,那么它们都不起作用**

        mail(
            $to, 
            $subject, 
            $message,     // for attachment only
        //  $email_body,  // for body only 
            $headers
            );

【问题讨论】:

标签: php


【解决方案1】:

通过在我的原始帖子中隔离问题,我能够通过编写两 (2) 个“邮件”命令来使其工作,如下所示:

        // attachment 
        mail($to, $subject, $message, $headers);

        // body
        mail($to, $subject, $email_body, $headers);

我对这个解决方案很满意,但如果有人能找到一种方法来获取相同的电子邮件以包含正文内容并附加 CSV,那将是理想的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-11
    • 2018-07-24
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    相关资源
    最近更新 更多