从本地存储添加电子邮件附件

时间:2017-07-25 19:08:31

标签: laravel storage lumen

我正在使用laravel / lumen。我可以使用Storage::disk("local")->put();在我的存储目录中保存文件。但是现在我想将这些文件中的一些附加到电子邮件中并发送,这是通过我得到的错误的作业来完成的

  

lumen.ERROR:exception' Swift_IoException'有消息'无法   打开文件进行阅读

现在我读了一些关于我试过的符号链接的内容,但这根本没有改变结果,我仍然无法将我的存储文件夹中的文件附加到我的电子邮件中。

这是我的目录结构:

/家庭/ XXXXXX /

-example.app

- 存储

---应用

----公

-public_html

- example.app

---存储

像这样附加文件:

foreach ($params["attachments"] as $attachment) {
    $mail->attach($attachment["file"], [
        'as' => $attachment["name"],
        'mime' => $attachment["mime"]
    ]);
}

2 个答案:

答案 0 :(得分:1)

您已经意识到attach()方法需要文件的完整路径。但是,其他人可能会发现有用的知识如何实现。因此,如果您使用本地商店的默认设置,则可以通过调用storage_path()帮助程序获取完整路径。这样:

/*
 * This will return the full path to the file:
 *
 * /path/to/laravel/storage/app/attachment/path
 */
storage_path('app/' . $attachment['file']);

答案 1 :(得分:0)

好的,当你传递一个完整的url而不是文件的真实路径时,显然swift邮件程序会失败。没有人知道这一点,不知道它是不是一个错误,或者它是由设计完成的。