【问题标题】:Sending images in an email in Laravel在 Laravel 中通过电子邮件发送图像
【发布时间】:2026-01-30 09:20:18
【问题描述】:

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

我的邮件类:

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>

【问题讨论】:

  • "image receive is broken" 是什么意思?也许尝试使用&lt;img src="{{ $message-&gt;embed("img/email.png") }}"&gt;嵌入图像
  • @Remul 我也试过了,它一直在加载页面,然后说达到了最大执行时间。 “图像接收已损坏”是指当注册用户收到邮件时,我发送的图像已损坏。
  • 你的图片存在于public/img/email.png?
  • 是的,当我输入 localhost:8000/img/email.png 时,它确实存在,它确实返回了图像。

标签: laravel-5 smtp laravel-mail


【解决方案1】:

您可以通过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>

【讨论】: