laravel 中的邮件发送 - 未显示错误且未发送电子邮件
Mail sending in laravel-not showing errors and not sending email
这里我没有将联系方式存储在数据库中。我只想将联系表格数据发送到邮件,但我没有收到任何错误,也没有收到邮件。为此,我正在使用我的 Gmail 帐户,并且还在我的 google 帐户设置中启用了不太安全的访问。提交表格后,它出现在相同的 page.what 我应该这样做才能工作。
.env 文件:-
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=xxxx@gmail.com
MAIL_PASSWORD=xxxxxxx
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"
控制器:-
function sendmail(Request $request)
{
$this->validate($request,[
'name' =>'required',
'email'=>'required|email',
'phone'=>'required',
'message'=>'required']);
\Mail::send('contact_email',
array(
'name' => $request->get('name'),
'email' => $request->get('email'),
'phone' => $request->get('phone'),
'bodyMessage' => $request->get('message'),
), function($message) use ($request)
{
$message->from($request->email);
$message->to('harsha1604gandhi@gmail.com');
});
return back()->with('success', 'Thank you for contact us!');
}
查看:-
<form action="contact" method="POST" class="row">
{{csrf_field()}}
<!-- name -->
<div class="col-md-6">
<input type="text" name="name" class="form-control main" placeholder="Name" required>
</div>
<!-- email -->
<div class="col-md-6">
<input type="email" class="form-control main" placeholder="Email" required>
</div>
<!-- phone -->
<div class="col-md-12">
<input type="text" name="phone" class="form-control main" placeholder="Phone" required>
</div>
<!-- message -->
<div class="col-md-12">
<textarea name="message" rows="15" class="form-control main" placeholder="Your message"></textarea>
</div>
<!-- submit button -->
<div class="col-md-12 text-right">
<button class="btn btn-style-one" type="submit">Send Message</button>
</div>
</form>
emails.contact.blade.php
<h2>Hello Admin,</h2>
You received an email from : {{ $name }}
Here are the details:
<b>Name:</b> {{ $name }}
<b>Email:</b> {{ $email }}
<b>Phone Number:</b> {{ $phone }}
<b>Message:</b> {{ $message }}
Thank You
您在电子邮件输入中缺少 name="email"
,将其更改为
<div class="col-md-6">
<input type="email" name="email" class="form-control main" placeholder="Email" required>
</div>
您的表单验证失败,因为它有 'email' =>'required|email'
,但由于缺少名称值,您没有发送电子邮件。
Mail::send 需要传递一个 Mailable 对象的实例。
编辑:抱歉,我看到 Laravel 也允许您的方法。
此外,请记住,如果您正在使用配置缓存,则需要在对 .env 进行更改后刷新它
这里我没有将联系方式存储在数据库中。我只想将联系表格数据发送到邮件,但我没有收到任何错误,也没有收到邮件。为此,我正在使用我的 Gmail 帐户,并且还在我的 google 帐户设置中启用了不太安全的访问。提交表格后,它出现在相同的 page.what 我应该这样做才能工作。
.env 文件:-
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=xxxx@gmail.com
MAIL_PASSWORD=xxxxxxx
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"
控制器:-
function sendmail(Request $request)
{
$this->validate($request,[
'name' =>'required',
'email'=>'required|email',
'phone'=>'required',
'message'=>'required']);
\Mail::send('contact_email',
array(
'name' => $request->get('name'),
'email' => $request->get('email'),
'phone' => $request->get('phone'),
'bodyMessage' => $request->get('message'),
), function($message) use ($request)
{
$message->from($request->email);
$message->to('harsha1604gandhi@gmail.com');
});
return back()->with('success', 'Thank you for contact us!');
}
查看:-
<form action="contact" method="POST" class="row">
{{csrf_field()}}
<!-- name -->
<div class="col-md-6">
<input type="text" name="name" class="form-control main" placeholder="Name" required>
</div>
<!-- email -->
<div class="col-md-6">
<input type="email" class="form-control main" placeholder="Email" required>
</div>
<!-- phone -->
<div class="col-md-12">
<input type="text" name="phone" class="form-control main" placeholder="Phone" required>
</div>
<!-- message -->
<div class="col-md-12">
<textarea name="message" rows="15" class="form-control main" placeholder="Your message"></textarea>
</div>
<!-- submit button -->
<div class="col-md-12 text-right">
<button class="btn btn-style-one" type="submit">Send Message</button>
</div>
</form>
emails.contact.blade.php
<h2>Hello Admin,</h2>
You received an email from : {{ $name }}
Here are the details:
<b>Name:</b> {{ $name }}
<b>Email:</b> {{ $email }}
<b>Phone Number:</b> {{ $phone }}
<b>Message:</b> {{ $message }}
Thank You
您在电子邮件输入中缺少 name="email"
,将其更改为
<div class="col-md-6">
<input type="email" name="email" class="form-control main" placeholder="Email" required>
</div>
您的表单验证失败,因为它有 'email' =>'required|email'
,但由于缺少名称值,您没有发送电子邮件。
Mail::send 需要传递一个 Mailable 对象的实例。
编辑:抱歉,我看到 Laravel 也允许您的方法。
此外,请记住,如果您正在使用配置缓存,则需要在对 .env 进行更改后刷新它