Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php string attachement-将字符串中的csv附加到电子邮件_Php_Email - Fatal编程技术网

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

php string attachement-将字符串中的csv附加到电子邮件,php,email,Php,Email,我想重写下面的代码来生成一个字符串。我要将此字符串附加到eamil。它应该显示为csv文件 $fh = fopen($file,'w'); function __outputCSV(&$vals, $key, $filehandler) { fputcsv($filehandler, $vals, ';', '"'); } array_walk($aData, '__outputCSV', $fh); fclose($fh); 有什么想法

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

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

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

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

有什么想法吗?

您最好的选择是获得一个与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

我不认为我忘记了什么,它应该是开箱即用的…

明显而懒惰的方法不是重写它,而是简单地创建一个临时文件,然后调用file\u get\u contents

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

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

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!

可能的副本,我将与Zend_邮件一起发送。这不是问题所在。关键是要得到正确的字符串。