标签: laravel-mail

Laravel 5.3通知与Mailable

关于是否使用Laravel的NotificationMailable类,我有点困惑.根据我的理解,Mailables仅用于发送电子邮件,而通知可用于发送电子邮件和短信.在我的应用程序中,我暂时没有计划发送短信通知,所以如果我在这种情况下应该使用Mailable类,我很困惑.我的问题是:

  1. 如果我只是要发送电子邮件通知,我使用Mailables而不是Notifications更好吗?

  2. 如果每封电子邮件都有不同的html布局,那么Mailable会是更好的选择吗?

  3. 即使所有电子邮件都是通知电子邮件,使用Mailables而不是Notifications发送它们仍然有意义吗?

有人可以告诉我这两者之间的主要区别,以及我们应该如何决定在Laravel 5.3中发送电子邮件时选择哪种方法.

laravel laravel-mail laravel-5.3 laravel-notification

25
推荐指数
2
解决办法
6197
查看次数

Laravel 5 - 如何捕获邮件:: send()错误?

我有以下方法发送电子邮件:

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 laravel-5 laravel-mail

22
推荐指数
1
解决办法
2万
查看次数

Laravel 5.3 - 将多个文件附加到Mailables

如何将多个文件附加到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 laravel-5 laravel-mail laravel-5.3

13
推荐指数
1
解决办法
9527
查看次数

Laravel 5.3密码代理定制

有谁知道如何覆盖laravel密码代理中使用的函数?我知道文档:

https://laravel.com/docs/5.3/passwords#resetting-views

提供有关如何为视图和一些表面层次的事情做些什么的信息,但它根本不是很清楚,或者我可能没有阅读足够的时间.

我已经知道如何覆盖ResetsPasswords.phpTrait但是覆盖了Password::broker()for的下一层的功能.

如果需要更多信息,我可以提供一些信息.

先感谢您.

php laravel laravel-5 laravel-authorization laravel-mail

12
推荐指数
2
解决办法
6928
查看次数

Laravel 5.4错误地混合了Markdown Mailable中的HTML组件

我有普通的Mailable有一些硬编码的内容.

我发布了可邮寄的观点,将内容更改为降价并替换->view->markdown.

现在邮件很好地形成了降价.

然而,Laravel在编译markdown之后会选择HTML组件定义,原因我无法幻影.在使用Markdown版本的消息之后,所以它在两个Mailable降价视图中混合使用!

我试过了:

  • php artisan cache:clear
  • php artisan view:clear
  • 添加markdown到html组件 - 不会工作,Laravel使用它们通过markdown编译步骤
  • 改变->markdown->markdown-是的,你会得到unexisting方法错误

使用:PHP 7.0,Laravel 5.4.28

问:是否有任何Laravel全局设置会覆盖->markdown呼叫?什么其他的想法可能是错的?

php laravel-mail laravel-5.4

10
推荐指数
1
解决办法
1230
查看次数

Laravel 5.3在没有帐户的情况下向用户发送通知

使用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)

所以我的问题是:

  1. 我能将通知仅发送给用户模型吗?

  2. 有没有办法将通知发送给没有帐户的新用户?

  3. 在这些情况下,我唯一的选择是使用Laravel的Mailable类而不是Notification吗?

laravel laravel-mail laravel-5.3 laravel-notification

9
推荐指数
2
解决办法
5101
查看次数

无法与主机mailtrap.io建立连接[php_network_getaddresses:getaddrinfo failed:没有这样的主机已知.#0]

我收到以下错误:

无法与主机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)

php laravel-5.2 laravel-mail

7
推荐指数
2
解决办法
2万
查看次数

Laravel Mailable 队列,如何将自定义数据传递给 MessageSent 事件

我正在使用 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)

php laravel-events laravel-mail

7
推荐指数
2
解决办法
2658
查看次数

如何自定义/更改通知邮件的标题标志(laravel)

我不知道在哪里可以找到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 laravel-mail

7
推荐指数
1
解决办法
2万
查看次数

在 Laravel 中使用 Sendmail 发送电子邮件的正确配置是什么?

我正在使用 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)

php sendmail laravel laravel-mail laravel-7

6
推荐指数
1
解决办法
7264
查看次数