在Laravel中的电子邮件附件中插入图像

时间:2018-04-10 04:56:36

标签: php laravel-5.4 email-attachments dompdf

我使用Laravel创建了一个应用程序并将其上传到实时服务器(shared hosting)。我对其进行了编程,以便将电子邮件与通过DOMPDF生成的电子邮件附件一起发送给客户。问题是我在Gmail收件箱中收到有关附件的网上诱骗错误。当我从附件中删除图片时,错误消失。好像我没有在刀片文件中正确插入图像。请帮助我如何通过控制器添加图像,然后将其解析到视图(作为附件发送)?

〜问候

加载PDF文件的PDF控制器

class PDFController extends Controller
{
    //Loads the PDF document
    public function getPDF(){
        $pdf = \PDF::loadView('pdf.customer', ['format' => 'A5-L']);
        return $pdf->stream('customer.pdf')->header('Content-Type','application/pdf');
    }
}

电子邮件刀片

        <div class="logo pull-right">
            <?php $image_path = '/img/logo.png'; ?>
           <a href='#'> <img src="{{  public_path().$image_path }}" alt="logo"> </a>

        </div>

发送电子邮件的PagesController

$pdf = PDF::loadView('pdf.customer', $data);
        Mail::send('emails.feedback', $data, function($message) use ($data, $pdf){
            $message->from('info@*************');
            $message->to($data['email']);
            $message->subject('Feedback');
             //Attach output from PDF doc, customer.pdf is the name of the file attached
            $message->attachData($pdf->output(),'customer.pdf');
        });

1 个答案:

答案 0 :(得分:0)

如果您正在使用Laravel内置邮件程序,请按照以下结构

使用

的克里特邮件类
php artisan make:mail MailFileName

MailFileName.php

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;

class MailFileName extends Mailable
{
    use Queueable, SerializesModels;

    public $data;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($data)
    {
           $this->data = $data;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->from('from_email' ,'Title')->view('emails.email_ blade_file')->with(['data' => $this->data])->subject($subject)->attach($this->data['attachment_url']);
    }
}

在视图中,您传递的是$ data变量,因此您可以像使用普通刀片文件一样使用所有这些变量。

View File - resource/views/emails/email_ blade_file.blade.php

在您想要呼叫邮件功能添加的控制器中,

SomeController.php

使用App \ Mail \ MailFileName;

内幕功能,

$data['subject'] = 'New message from';
$data['data'] = ['your data'];


 Mail::to($to_email)->send(new MailFileName($data));