CakeEmail mandrill电子邮件附件没有得到附件



我知道在stackoverflow上有很多关于这个问题的类似问题,我已经尝试了所有这些问题,但似乎没有一个工作。

我正试图从cron功能发送一封csv附件的电子邮件。我的邮件正在发送,但是没有附件。这是我的代码

$email = new CakeEmail('mandrillSmtp');
$encodedCsv = base64_encode(implode(",",$headers)); 
        //please note that i have debugged encodedCsv. No  errors here
        $email->subject('Report Test');
        $email->from('xxxxx@abc.com');
        $email->to('zzzzz@abc.com');
        $email->emailFormat('html');
        $email->attachments=array(
                array(
                    'content' => $encodedCsv,
                    'type' => "text/csv",
                    'name' => 'report.csv'
                )
            );
        $email->send();

嘿,谢谢大家的帮助。我终于让我的代码工作了。感谢ndm提醒我,mandrill的api与CakeEmail完全不同(我一时愣了一下)。我通过使用tmpfile()而不是fopen('php://temp')解决了无法将文件附加到php://temp输出流的问题。由于某种原因,我不能访问写入临时流的文件,即使我有它们的uri不管怎样,这是我的代码。希望能帮到别人

$email = new CakeEmail('mandrillSmtp');
if($handle =tmpfile()){
                    fputcsv($handle, $headers); 
                    fputcsv($data)    ;
                }

        $fileMeta = stream_get_meta_data($handle);
        $uri = $fileMeta['uri'];

        $email->subject('Report Test');
        $email->from('xxx@abc.com');
        $email->to('zzz@abc.com');
        $email->emailFormat('html');
        $email->attachments(array('test.csv'=>array('mimetype'=>'text/csv','file' => $uri)));
        $email->send();
        fclose($handle);

如果您试图附加CSV文件,那么您需要CSV文件的路径,我建议您按如下方式创建附件数组:

 $email->attachments = array(
array('file' => 'pathToCSVFIle/myCSvFile.csv')
        );

相关内容

  • 没有找到相关文章

最新更新