我想在laravel中存储电子邮件以及同时将电子邮件发送给用户。如何同时存储数据?

时间:2019-06-19 08:51:45

标签: laravel

$data= Input::except('_token');
if($data) {
    \Illuminate\Support\Facades\Mail::send('email.sendemail', ['data' => $data], function ($m)
    {

        $m->from(config('app.email') );

        $m->to( 'dsh@fads.com')
            ->subject('Ete');

        Session::flash('flash_success', 'Email sent Successfully!');
    });
}

else
{
    Session::flash('flash_warning', 'Error in process!!');
}
return redirect()->back();

2 个答案:

答案 0 :(得分:1)

您必须使用Laravel Mail事件来捕获数据库中的任何类型的数据。这将是所有邮件的通用位置。此外,它还可以确保您在邮件处于sending状态或sent时触发。

这里是捕获发送的电子邮件中数据的示例。

1。创建名称为CaptureMailData的侦听器类,例如:


<?php

namespace App\Listeners;

Illuminate\Mail\Events\MessageSent;

class CaptureMailData
{
    /**
     * Create the event listener.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Handle the event.
     *
     * @param  \Illuminate\Mail\Events\MessageSent  $event
     * @return void
     */
    public function handle(MessageSent $event)
    {
        // Log the message
        Log::info($event->message);

        // Add your save functionality here.
    }
}

2。注册侦听器以接收邮件事件。

EventServiceProvider.php

protected $listen = [
    'Illuminate\Mail\Events\MessageSent' => [
        'App\Listeners\CaptureMailData'
    ]
];


发送其他数据:

如果您要发送附加数据以捕获。您可以使用withSwiftMessage()来设置带有message属性的其他数据。喜欢:

$user = User::first(); //any kind of data.

$this->withSwiftMessage(function ($message) use ($user) {
        $message->user = $user;
});

并且可以通过以下方式访问CaptureMailData侦听器内的其他数据:

public function handle(MessageSending $mailEvent)
{
    $user = $mailEvent->message->user;

    Log::info($user); // just to log.
}

以下是发送其他数据的链接:

https://laracasts.com/discuss/channels/laravel/accessing-the-mailable-properties-from-the-messagesending-event-that-is-triggered-when-sending-mail-through-the-mail-facade

答案 1 :(得分:0)

签出此how to send email in laravel

这可能对您有所帮助。其次,要将电子邮件保存在数据库中,请尝试以下操作:

public function SendMail(Request $request)
{
    $email=$request->input('email');
    DB::table('table')->insert([

      'email'=>$email,

    ]);
}