如何在Laravel 5.8中发送电子邮件 [英] How send email in Laravel 5.8

查看:108
本文介绍了如何在Laravel 5.8中发送电子邮件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是Laravel的初学者.我在项目中使用Laravel 5.8. 我想通过联系表格发送电子邮件.

I am beginner in Laravel. I use Laravel 5.8 in my project. I want send email from contact form.

我有此代码:

public function sendContactForm($request)
    {
        $this->validate($request, [
        'name' => 'required|string',
        'topic' => 'required|string',
        'email' => 'required|email',
        'message' => 'required|string',
        'captcha' => 'required|captcha',
        'acceptReg' => 'required|integer',
    ]);
    $adminEmail = $this->frontendRepository->getSystemAdminEmail();

    $title = $request->input('topic');
    $txt = nl2br($request->input('message'));
    $userName = $request->input('name');
    $email = $request->input('email');
    $ip = $request->getClientIp();
    $dateTime = date('Y-m-d H:i:s');

    $message = "Masz wiadomość ze strony". env('APP_NAME')."<br/>
    <b>Dane wiadomości:</b> $dateTime [$ip]<br/>
    <b>Tytuł wiadomości:</b> $title<br/>
    <b>Imię:</b> $userName<br/>
    <b>Adres email:</b> $email<br/>
    <b>Wiadomość:</b> $txt<br/>";


    Mail::send('emails.welcome', $message, function ($message) {
        //$message->from('us@example.com', 'Laravel');
        $message->to($adminEmail, $name = null);
        $message->from($email, $name = null);
        $message->sender($email, $name = null);
        $message->replyTo($adminEmail, $name = null);
        $message->subject($title);
        //$message->attach($pathToFile, array $options = []);
        //$message->attachData($data, $name, array $options = []);
        $message->getSwiftMessage();
    });
    }

$ adminEmail-这是我的电子邮件

$adminEmail - this is my email

我如何通过电子邮件发送此消息?

How can I send this message as email?

我有错误:传递给Illuminate \ Mail \ Mailer :: send()的参数2必须为数组类型,给定字符串,在/var/www/vanessa/vendor/laravel/framework/src/Illuminate/中调用237行上的Support/Facades/Facade.php

I have error: Argument 2 passed to Illuminate\Mail\Mailer::send() must be of the type array, string given, called in /var/www/vanessa/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php on line 237

我该如何续写它?

推荐答案

  1. 首先,您必须在app/Mail中创建一个邮件类
  2. 创建您的视图
  3. 在sendcontactform控制器上,调用邮件类
  4. 不要忘记也调用邮件外观:use Illuminate\Support\Facades\Mail;
  1. first of all you have to create a mail class in app/Mail
  2. create you view
  3. on your sendcontactform controller call the mail class
  4. dont forget to also call the mail facades: use Illuminate\Support\Facades\Mail;

示例:

//mail class file inside app/Mail directory

    <?php

    namespace App\Mail;

    use Illuminate\Bus\Queueable;
    use Illuminate\Mail\Mailable;
    use Illuminate\Queue\SerializesModels;
    use Illuminate\Contracts\Queue\ShouldQueue;

    class SendContact extends Mailable
    {
        use Queueable, SerializesModels;
        public $username, $message;
        /**
         * Create a new message instance.
         *
         * @return void
         */
        public function __construct($username, $message)
        {
            //
            $this->username = $username;
            $this->message= $message;
        }

        /**
         * Build the message.
         *
         * @return $this
         */
        public function build()
        {
            return $this->view('contactform');
        }
    }
//your controller

use Illuminate\Support\Facades\Mail;
use App\Mail\SendContact;

public function sendContactForm($request)
    {
        $this->validate($request, [
            'name' => 'required|string',
            'topic' => 'required|string',
            'email' => 'required|email',
            'message' => 'required|string',
            'captcha' => 'required|captcha',
            'acceptReg' => 'required|integer',
        ]);


        $title = $request->input('topic');
        $txt = nl2br($request->input('message'));
        $userName = $request->input('name');
        $email = $request->input('email');
        $ip = $request->getClientIp();
        $dateTime = date('Y-m-d H:i:s');

        $message = "Masz wiadomość ze strony". env('APP_NAME')."<br/>";
        $message .= "
        <b>Dane wiadomości:</b> $dateTime [$ip]<br/>
        <b>Tytuł wiadomości:</b> $title<br/>
        <b>Imię:</b> $userName<br/>
        <b>Adres email:</b> $email<br/>
        <b>Wiadomość:</b> $txt<br/>";  

         Mail::to($email)->send(new SendContact($userName, $message));
         die('mail sent!');
    }

 //your blade contactform.blade.php
@extends('app.layouts')
@section('content')
                Hello, {{ $username }}<br/>
                Your enquiry has been received<br/>

               <br/>
                <p>{{ $message }}</p>


@endsection

 in your .env file define this
    MAIL_DRIVER=smtp
    MAIL_HOST="mail.example.com" //this should be from your webhost
    MAIL_PORT=465
    MAIL_USERNAME="info@example.com" //this is the email from your domain
    MAIL_PASSWORD="************"  //password of the email
    MAIL_FROM_ADDRESS=info@example.com
    MAIL_FROM_NAME='Enquiry Information'
    MAIL_ENCRYPTION=ssl

希望这会有所帮助

这篇关于如何在Laravel 5.8中发送电子邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆