【发布时间】:2015-11-07 08:29:11
【问题描述】:
我知道在 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();
【问题讨论】:
-
我猜你在这段代码中遗漏了一些东西。邮件怎么知道,你把base64encoded数据放在那里?如果我是对的,您需要指定编码。
-
我已经阅读了山魈文档mandrillapp.com/api/docs/messages.JSON.html#method=content 我认为这就是 'type' => 'text/csv' 的用途。所以这可能不是它
-
@ndm '传统' cakeemail 与它看起来的山魈方式略有不同。在 cakeemail 附件中是一个函数,而在 mandrill api 中它是一个属性。无论如何,我查看了您发布的链接并尝试了以下操作:$email->attachments($uri)。其中 uri 是来自 csv 文件句柄的 uri。但我在尝试附加 csv 时不断收到:'找不到文件“”'。我使用 fopen('php://temp//fname.csv',''rw') 创建了我的文件。我知道这与我原来的问题完全不同,但我还没有找到解决方案:(
-
Mandrill 是一个电子邮件基础架构,具有 SMTP 集成、REST API 和适用于各种编程语言的 API 客户端。这些都不会影响 CakePHP 核心代码的工作方式!没有
CakeEmail::$attachments属性,甚至Mandrill PHP API 客户端在任何地方都没有这样的属性,并且无论您使用CakeEmail使用什么SMTP 服务器,它都不会导致这样的属性神奇地出现,不是这样这个作品。 Mandrill REST API 支持/messages/send.json请求的attachments参数,但您没有使用 REST API。
标签: php email cakephp attachment mandrill