【问题标题】:Inserting Images in Email Attachment in Laravel在 Laravel 的电子邮件附件中插入图像
【发布时间】:2018-04-10 13:36:37
【问题描述】:

我使用 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');
        });

【问题讨论】:

  • 图片是作为电子邮件模板的一部分还是作为附件?你正在使用内置的 laravel Mailer 来发送邮件?
  • @Nirali 图片嵌入在电子邮件附件中,我正在使用 laravel Mail.. 未使用任何模板

标签: php laravel-5.4 email-attachments dompdf


【解决方案1】:

如果您使用的是 Laravel 内置邮件程序,请遵循以下结构

使用克里特邮件类

php artisan make:mail 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));

【讨论】:

  • 我已经编辑了我的帖子并添加了发送电子邮件及其附件的控制器。请检查一下并告诉我如何在控制器中添加图像并将其解析到视图(附件)。
  • @Pweb 检查这个stackoverflow.com/a/38821155/6429700 。也许它会帮助你。或者实现我的答案中解释中给出的逻辑
猜你喜欢
  • 2019-05-20
  • 2020-08-11
  • 2016-12-17
  • 2013-10-07
  • 2013-02-28
  • 2010-10-29
  • 2011-04-16
  • 2015-05-07
  • 1970-01-01
相关资源
最近更新 更多