如何在Laravel 5.8中发送电子邮件 [英] How send email in Laravel 5.8
本文介绍了如何在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
我该如何续写它?
推荐答案
- 首先,您必须在app/Mail中创建一个邮件类
- 创建您的视图
- 在sendcontactform控制器上,调用邮件类
- 不要忘记也调用邮件外观:
use Illuminate\Support\Facades\Mail;
- first of all you have to create a mail class in app/Mail
- create you view
- on your sendcontactform controller call the mail class
- 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屋!
查看全文