zoukankan      html  css  js  c++  java
  • laravel5.6 发送邮件附带邮件时,Unable to open file for reading,报错文件路径问题

    https://stackoverflow.com/questions/48568739/unable-to-open-file-for-reading-swift-ioexception-in-laravel-mailable

    “Unable to open file for reading” (Swift_IoException) in Laravel Mailable

    I'm trying to use Mailable in Laravel, I have run into an issue that I haven't come across before and it appears nothing currently out there can help.

    In developing a new Mailable, I have everything working except attaching an EXISTING file to the mailable.

    An error returns as such:

    "message": "Unable to open file for reading [/public/storage/shipments/CJ2K4u6S6uluEGd8spOdYgwNkg8NgLFoC6cF6fm5.pdf]",
        "exception": "Swift_IoException",
        "file": "E:\\webserver\\htdocs\\truckin\\vendor\\swiftmailer\\swiftmailer\\lib\\classes\\Swift\\ByteStream\\FileByteStream.php",
        "line": 131,
    

    But if you go through the folders and files, there is in fact a file there and I can open it, I can even open it through an ajax popup to view details.

    Here is my mailable:

    <?php
    
    namespace App\Mail;
    
    use Illuminate\Bus\Queueable;
    use Illuminate\Mail\Mailable;
    use Illuminate\Queue\SerializesModels;
    use Illuminate\Contracts\Queue\ShouldQueue;
    
    use App\Shipment;
    use App\Shipment_Attachment;
    
    class shipmentAttachments extends Mailable
    {
        use Queueable, SerializesModels;
    
        /**
         * Create a new message instance.
         *
         * @return void
         */
        public $shipment, $attachment, $storagePath;
    
        public function __construct($shipment, $attachment, $storagePath)
        {
            $this->shipment = $shipment;
            $this->attachment = $attachment;
            $this->attachmentFile = '/public'.$storagePath;
            $this->proNumber = $shipment->pro_number;
        }
    
        /**
         * Build the message.
         *
         * @return $this
         */
        public function build()
        {
             return $this->from('billing@cmxtrucking.com')
                        ->cc('billing@cmxtrucking.com')
                        ->subject('New Attachment(s) - '. $this->proNumber)
                        ->view('emails.shipments.shipmentAttachments',['shipment'=> $this->shipment])
                        ->attach($this->attachmentFile);
        }
    }
    

    And here is my controller that leads to the mailable:

    public function attachmentsEmail(Request $request){
            $shipment = Shipment::findOrFail($request->shipmentID);
            $attachment = Shipment_Attachment::findOrFail($request->attachmentID);
            $storagePath = Storage::url($attachment->attachmentPath);
            $email = $request->email;
    
                 Mail::to($email)->send(new shipmentAttachments($shipment, $attachment, $storagePath));  //maybe try to use queue instead of send...        
            return back();
        }
    

    So I'm not sure where this could be coming from.

    解决方法:

    Try to use public_path() laravel helper function instead of '/public'.

     
        
    $this->attachmentFile = public_path() . '/' . $storagePath;  亲测可行

    Maybe you need to change this variable in public/index.php. I have right below the require bootstrap:

    $app->bind('path.public', function() {
        return __DIR__;
    });
    

    Make some tests.

    dd(public_path());
    dd(public_path() . '/' . $storagePath);
    

    Or maybe verify if file exist with FileSystem class.

    Hope this help you!

    邮件中的图片问题:

    方法一:
     <img src="{{ $message->embed(public_path().$user->avatar) }}">
    

     方法二:

    <img src="http://blog.com/{{$user->avatar}}">
    

     

  • 相关阅读:
    Exsi上Windows主机增加硬盘容量
    第6章:vuerouter,vuecli和单文件组件
    Python之爬取天气预报并生成图表
    第3章:vue生命周期及实例的属性
    Python 获得NOAA全球开放气象数据
    第5章:组件即组件间的通信
    MACBOOK M1 PRO 下运行.NET CORE(MAC下如何与X86_64兼容)
    DOTNET 运行AESGCM程序 ON MACOS(错误ALGORITHM ‘AESGCM’ IS NOT SUPPORTED ON THIS PLATFORM)
    1.3\~1.4 控制措施类型、安全框架
    mac 安装brew带来的种种问题
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15454139.html
Copyright © 2011-2022 走看看