首页 > 解决方案 > 在 Laravel 中通过电子邮件发送图像

问题描述

我正在尝试向新注册的用户发送自动回复,并且我想向他们发送图像而不是文本,但是当我尝试发送图像时,邮件确实发送了但收到的图像已损坏。我研究了 StackOverflow 的许多答案,并尝试了互联网上的许多其他解决方案,但似乎没有任何效果。

我的邮件类:

namespace App\Mail;

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

class autoMail extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->subject("Subject")
            ->view('emails.autoemail');
    }
}

这是我调用这个邮件类的函数。

Mail::to($request->email)->send(new autoMail());

最后但并非最不重要的一点是我将通过电子邮件发送的观点。

<!DOCTYPE html>
<html>
<head>
    <title>Auto Email</title>
</head>
<body>
    <img src="{{ asset('img/email.png') }}">
</body>
</html>

标签: laravel-5smtplaravel-mail

解决方案


您可以通过该with()方法手动将数据传递给视图。

class autoMail extends Mailable
{
    use Queueable, SerializesModels;

    public function build()
    {
        $image = env('APP_URL')."/img/email.png";

        return $this->subject("Subject")
            ->view('emails.autoemail')
            ->with(['image' => $image]);
    }
}

一旦数据被传递给with()方法,它将自动在您的视图中可用,因此您可以像访问 Blade 模板中的任何其他数据一样访问它:

<!DOCTYPE html>
<html>
<head>
<title>Auto Email</title>
</head>
<body>
<img src="{{ $image }}">
</body>
</html>

推荐阅读