繁体   English   中英

如何在 Laravel 5.8 中发送电子邮件

[英]How send email in Laravel 5.8

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

我有这个代码:

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 - 这是我的电子邮件

如何将此消息作为电子邮件发送?

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

我怎样才能恢复它?

  1. 首先你必须在 app/Mail 中创建一个邮件类
  2. 创建您的视图
  3. 在您的 sendcontactform 控制器上调用邮件类
  4. 不要忘记也调用邮件门面: 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

希望这可以帮助

为了发送电子邮件,您可能需要添加类似下面提到的代码片段的内容:

Mail::send('email',
   array(
       'name' => $request->get('name'),
       'email' => $request->get('email'),
       'user_message' => $request->get('message')
   ), function($message)
   {
       $message->from('abc@gmail.com');
       $message->to('test@cloudways.com', 'Admin')->subject('Cloudways 
Feedback');
   });
    }

有关如何发送邮件的详细信息,请参阅此链接

在 Laravel 5.8 中发送电子邮件

Mail::send('blade.php', $email_data, function($message) use ($officer) {
    $message->from('from@gmail.com','web title');
    $message->subject("Appointment Scheduled");
    $message->to($email_data['email']);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM