我无法在视图中访问资源。
这是我的代码。
$mail->addAttachment(asset($file), 'receiptFile', 'base64', 'application/octet-stream');
浏览器显示以下错误:
无法访问文件: http://localhost/receiptGenerator2/public/5a46187d954de.png消息 无法发送.Mailer错误:无法访问文件: http://localhost/receiptGenerator2/public/5a46187d954de.png ------
正如您所见,文件的路径已成功找到。
如果Laravel可以找到该文件,为什么会显示错误。
答案 0 :(得分:1)
请尝试这种方式 使用资产并提供图片名称,如果文件是任何文件夹而不是{{资产(' folder_name / image_name')}}}
{{ asset('5a46187d954de.png') }}
生成http://localhost/receiptGenerator2/public/5a46187d954de.png
答案 1 :(得分:0)
试试这个:
->attach(
public_path('receiptGenerator2/public/5a46187d954de.png'), [
'as' =>"attachment.png" ,
'mime' => 'application/octet-stream',
]);
来源:https://laravel.com/docs/5.5/mail#attachments
编辑:由于您使用的是phpmail,这应该可以解决问题
$mail->addAttachment(public_path($file), 'receiptFile', 'base64','application/octet-stream');
Mail需要完整路径,是的,您可以从浏览器中打开该URL中的文件,但phpmailer会尝试访问您磁盘中的http://localhost/receiptGenerator2/public/5a46187d954de.png,因此它会尝试从/ var / www / html获取该文件/ project / http://localhost/receiptGenerator2/public/5a46187d954de.png无效。
答案 2 :(得分:0)
如the docs for addAttachment()
所述,第一个参数必须是本地文件系统路径;如果你给它一个URL它将无法工作。 PHPMailer不是HTTP客户端 - 还有许多其他功能和库可以帮助解决这个问题,因此如果您需要从远程URL获取某些内容以用作附件,请使用它们。您不应该使用本地资源的localhost URL,因为它不必要地效率低下。