关于是否使用Laravel的Notification或Mailable类,我有点困惑.根据我的理解,Mailables仅用于发送电子邮件,而通知可用于发送电子邮件和短信.在我的应用程序中,我暂时没有计划发送短信通知,所以如果我在这种情况下应该使用Mailable类,我很困惑.我的问题是:
如果我只是要发送电子邮件通知,我使用Mailables而不是Notifications更好吗?
如果每封电子邮件都有不同的html布局,那么Mailable会是更好的选择吗?
即使所有电子邮件都是通知电子邮件,使用Mailables而不是Notifications发送它们仍然有意义吗?
有人可以告诉我这两者之间的主要区别,以及我们应该如何决定在Laravel 5.3中发送电子邮件时选择哪种方法.
我有以下方法发送电子邮件:
Mail::send('emails.configuration_test', array(), function($email)use($request){
$email->to($request->test_address)->subject('Configuration Test');
});
Run Code Online (Sandbox Code Playgroud)
如果出现上述错误,我希望能够捕获异常.当我使用以下内容时:
try{
Mail::send('emails.configuration_test', array(), function($email)use($request){
$email->to($request->test_address)->subject('Configuration Test');
});
}
catch(Exception $e){
// Never reached
}
Run Code Online (Sandbox Code Playgroud)
从未捕获过例外.相反,如果send()方法出错,我会得到一个Laravel堆栈跟踪作为响应.
在这种情况下如何捕获异常?
如何将多个文件附加到laravel 5.3 mailable?
我可以使用->attach($form->filePath)我的mailable构建方法轻松地附加单个文件.但是,当我将表单字段更改为数组时,我收到以下错误:
basename() expects parameter 1 to be string, array given
Run Code Online (Sandbox Code Playgroud)
我在堆栈上搜索文档和各种搜索术语无济于事.任何帮助将不胜感激.
构建方法:
public function build()
{
return $this->subject('Employment Application')
->attach($this->employment['portfolio_samples'])
->view('emails.employment_mailview');
}
Run Code Online (Sandbox Code Playgroud)
控制器的邮件呼叫:
Mail::to(config('mail.from.address'))->send(new Employment($employment));
Run Code Online (Sandbox Code Playgroud) 有谁知道如何覆盖laravel密码代理中使用的函数?我知道文档:
https://laravel.com/docs/5.3/passwords#resetting-views
提供有关如何为视图和一些表面层次的事情做些什么的信息,但它根本不是很清楚,或者我可能没有阅读足够的时间.
我已经知道如何覆盖ResetsPasswords.phpTrait但是覆盖了Password::broker()for的下一层的功能.
如果需要更多信息,我可以提供一些信息.
先感谢您.
我有普通的Mailable有一些硬编码的内容.
我发布了可邮寄的观点,将内容更改为降价并替换->view为->markdown.
现在邮件很好地形成了降价.
然而,Laravel在编译markdown之后会选择HTML组件定义,原因我无法幻影.在使用Markdown版本的消息之后,所以它在两个Mailable降价视图中混合使用!
我试过了:
php artisan cache:clearphp artisan view:clear->markdown到->markdown-是的,你会得到unexisting方法错误使用:PHP 7.0,Laravel 5.4.28
问:是否有任何Laravel全局设置会覆盖->markdown呼叫?什么其他的想法可能是错的?
使用Laravel 5.3通知功能,我看到通知发送给用户,如下所示:
$user->notify(new InvoicePaid($invoice));
Run Code Online (Sandbox Code Playgroud)
我认为$user是值得注意的实体.如果我想向没有帐户的用户发送通知怎么办?在我的应用中,用户向他们的朋友发送邀请以加入.我正在尝试使用Laravel的通知将邀请代码发送给尚未拥有帐户的用户.
当用户邀请某人时,他们的数据存储在邀请模型中,如下所示:
class Invite extends Model
{
protected $table = 'invites';
protected $fillable = array('name', 'email', 'invite_code', 'expires_at', 'invited_by');
protected $dates = ['expires_at'];
}
Run Code Online (Sandbox Code Playgroud)
我以为我可以使用notify向Invite模型发送通知,如下所示:
$invite = Invite::find($inviteId);
$invite->notify(new InvitationNotification(ucfirst($invite->name), $invite->invite_code, $invite->expires_at));
Run Code Online (Sandbox Code Playgroud)
但上述方法无效.我收到错误:
Call to undefined method Illuminate\Database\Query\Builder::notify()
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:
我能将通知仅发送给用户模型吗?
有没有办法将通知发送给没有帐户的新用户?
在这些情况下,我唯一的选择是使用Laravel的Mailable类而不是Notification吗?
我收到以下错误:
无法与主机smtp.gmail.com建立连接[php_network_getaddresses:getaddrinfo failed:没有这样的主机已知.
0]
我的.env文件看起来像:
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=xxxxxxxxxxxxxx
MAIL_PASSWORD=xxxxxxxx
#MAIL_ENCRYPTION=null
Run Code Online (Sandbox Code Playgroud)
我在config中的mail.php文件看起来像:
/*
|--------------------------------------------------------------------------
| Mail Driver
|--------------------------------------------------------------------------
|
| Laravel supports both SMTP and PHP's "mail" function as drivers for the
| sending of e-mail. You may specify which one you're using throughout
| your application here. By default, Laravel is setup for SMTP mail.
|
| Supported: "smtp", "mail", "sendmail", "mailgun", "mandrill",
| "ses", "sparkpost", "log"
|
*/
'driver' => env('MAIL_DRIVER', 'smtp'),
/*
|--------------------------------------------------------------------------
| SMTP Host Address
|-------------------------------------------------------------------------- …Run Code Online (Sandbox Code Playgroud) 我正在使用 Laravel Mailable 发送电子邮件,我想记录已成功发送的电子邮件。
Laravel Mailable 有默认事件,在电子邮件发送后触发
https://laravel.com/docs/5.6/mail#events
所以我让我的听众关注这个事件
protected $listen = [
'App\Events\Event' => [
'App\Listeners\EventListener',
],
'Illuminate\Mail\Events\MessageSent' => [
'App\Listeners\LogSentEmailNotification',
],
];
Run Code Online (Sandbox Code Playgroud)
监听处理程序
public function handle(MessageSent $event)
{
//get extra data
$job_request_id = $event->message->job_request_id;
$message = $event->message;
$data = [
'job_request_id' => $job_request_id,
'to' => $message->getHeaders()->get('To'),
'from' => $message->getHeaders()->get('From'),
'cc' => $message->getHeaders()->get('Cc'),
'bcc' => $message->getHeaders()->get('Bcc'),
'subject' => $message->getHeaders()->get('Subject')->getFieldBody(),
'body' => $message->getBody(),
];
$email_notification_log = $this->email_notification_log->create($data);
}
Run Code Online (Sandbox Code Playgroud)
额外的数据 job_request_id 是从 Mailable 类 CustomEmailNotification.php 中的 build() 方法传递的
class CustomEmailNotification extends …Run Code Online (Sandbox Code Playgroud) 我不知道在哪里可以找到header logo下面的示例(平方):
public function toMail($notifiable)
{
return (new MailMessage)
->line('The introduction to the notification.'.$user->name)
->line('Hey Now hey now')
->action('Notification Action', route('register.select'))
->line('Thank you for using our application!');
}
Run Code Online (Sandbox Code Playgroud)
email.blade.php:
@component('mail::message')
{{-- Greeting --}}
@if (! empty($greeting))
# {{ $greeting }}
@else
@if ($level === 'error')
# @lang('Whoops!')
@else
# @lang('Hello!')
@endif
@endif
{{-- Intro Lines --}}
@foreach ($introLines as $line)
{{ $line }}
@endforeach
... and so on, and so forth
Run Code Online (Sandbox Code Playgroud)
logo header … 我正在使用 Laravel 7,我想通过 Laravel Mail 门面使用 Sendemail 驱动程序发送电子邮件。当我使用 PHP 邮件功能时它有效,但我想使用 Laravel Mail 外观。
我的 .env 文件电子邮件配置:
MAIL_DRIVER=sendmail
MAIL_SENDMAIL='/usr/sbin/sendmail -t -i'
Run Code Online (Sandbox Code Playgroud)
我在 config/mail.php 中的默认邮件设置:
'default' => env('MAIL_MAILER', 'sendmail'),
'mailers' => [
'smtp' => [
'transport' => 'smtp',
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
],
'ses' => [
'transport' => 'ses',
],
'sendmail' => [
'transport' => 'sendmail',
'path' => '/usr/sbin/sendmail -bs',
],
'log' => [
'transport' => 'log',
'channel' …Run Code Online (Sandbox Code Playgroud) laravel-mail ×10
laravel ×7
php ×5
laravel-5 ×3
laravel-5.3 ×3
laravel-5.2 ×1
laravel-5.4 ×1
laravel-7 ×1
sendmail ×1