php string attachement - 将csv从字符串附加到电子邮件

时间:2011-12-13 16:28:07

标签: php email

我想重写下面的代码来生成一个字符串。这个字符串我想附加到一个eamil上。它应该显示为csv文件。

$fh = fopen($file,'w');

    function __outputCSV(&$vals, $key, $filehandler) {
        fputcsv($filehandler, $vals, ';', '"');

    }
   array_walk($aData, '__outputCSV', $fh);
   fclose($fh);

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您最好的办法是获得一个MIME兼容的电子邮件类,可以发送带附件的电子邮件。我记得前一段时间使用RMail或PHPMimeMail,你必须谷歌。

否则,您需要自己学习如何构建MIME邮件。但是,对于所有值得我努力的麻烦,我真的会建议你找一个已经为你做过的课程。

编辑:

我一开始并不理解你的问题,也许你应该完全重新格式化并改变你的头衔。这是我的建议:

$data = '';
foreach($aData as $aDataLine) {
    foreach($aDataLine as $aDataKey => $aDataField) {
        $aDataLine[$aDataKey] = '"'.str_replace('"', '\\"', $aDataField).'"';
    }
    $data .= implode(',', $aDataLine)."\n";
}
//$data contains your CSV

我不认为我忘了什么,它应该开箱即用......

答案 1 :(得分:0)

明显而懒惰的方法不是重写它,而是简单地创建一个临时文件并在之后调用file_get_contents()

然而,这将是无聊的,所以我将建议可以说是一种过于复杂的方法,但它应该很好地工作,并且将完全在内存中完成:

使用PHP手册中提供的this class作为如何编写自定义协议处理程序的示例,以及以下示例代码:

function __outputCSV(&$vals, $key, $filehandler) {
    fputcsv($filehandler, $vals, ';', '"');
}

stream_wrapper_register("var", "VariableStream");

$myCSVdata = "";

$fh = fopen('var://myCSVdata', 'w');
array_walk($aData, '__outputCSV', $fh);
fclose($fh);

echo $myCSVdata; // Ta Da!