使用队列时,Laravel邮件不起作用

时间:2015-09-08 16:49:05

标签: php email laravel queue mailgun

我已经在laravel中工作了几个月的电子邮件,但我们认为可能是时候将它们移到队列中而不是减慢用户的页面加载速度。

但是,只要我切换到数据库队列驱动程序,我就会收到以下错误:

  

local.ERROR:异常   带有消息的'Symfony \ Component \ Debug \ Exception \ FatalErrorException'   '方法Swift_Message :: __ toString()不得抛出异常   /Applications/MAMP/htdocs/tp/vendor/laravel/framework/src/Illuminate/Mail/Transport/MailgunTransport.php:0

如果我切换回sync驱动程序,一切都会再次运作。

这可能与权限或运行不同作业的不同用户有关吗?

作为参考,排队是:

Mail::queue('emails.new_team', [], function($message) use ($team)
{
    $message->to('hiden@hidden.co', 'hiden');
    $message->from('hiden@hiden.co', 'hiden');
    $message->subject($team->name.' - Team Just Created!');
});

包含new_team电子邮件(admin是我的路线之一):

@extends('emails.baseemail')

@section('content')
            <h2 style="margin-bottom: 20px; font-weight: 900; font-size: 25px;">Theres a new team!!</h2>

<div style="margin: 20px 0;">
    <a href="{{ url('admin') }}">Go to Admin</a>
</div>
@stop

包含以下内容的基本电子邮件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    @yield('specificMETA')
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0">
    <link rel="shortcut icon" type="image/x-icon" href="/img/favicon.ico">
</head>

<body style="font-family: 'Dosis', sans-serif; font-weight: 300; color: #666; background: #FDFDFD; margin: 0;" bgcolor="#FDFDFD">
<style type="text/css">
.button:hover {
background: #7f8c8d;
}
.cta:hover {
background: #2980b9;
}
</style>
<div id="header" style="position: inherit; z-index: 73411; font-size: 30px; line-height: 70px; color: #ecf0f1; width: 100%; height: 70px; background: #27ae60;">
        <div class="centre_col" style="width: 1024px; margin: 0 auto;">
            <div id="header_left" class="l" style="float: left;">
                <a href="/" title="Go to the xxx Homepage" class="logo" style="text-decoration: none"><img alt="tp" src="{{$message->embed(asset('img/tp.jpg'))}}"></a>
            </div>
        </div>
    </div>
    <div id="content" style="margin-top: 20px;">
        <div class="centre_col" style="width: 1024px; margin: 0 auto;">@yield('content')</div>
    </div>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

事实证明问题是在基本电子邮件中的img标记中使用asset()

所以<img alt="tp" src="{{$message->embed(asset('img/tp.jpg'))}}">

变为<img alt="tp" src="{{$message->embed('http://tp.co/img/tp.jpg')}}">

到目前为止,我只需要对图像的路径进行硬编码。

请注意,它必须是完整路径,因此我选择了我的实时服务器路径。

这不太理想,所以如果有人知道如何在排队的电子邮件中做相对路径,请告诉我,我会接受这个答案。