gpt4 book ai didi

php - 如何使用 Laravel 发送电子邮件?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:46:51 24 4
gpt4 key购买 nike

我正在尝试发送电子邮件,但我不能再移动了,这就是我的观点:

<h1>Contact TODOParrot</h1>
<form action="contact" method="post">

<div class="form-group">
<label>Your First Name</label>
<input type="text" name="Fname" placeholder="Your First Name" />
</div>

<div class="form-group">
<label>Your Last Name</label>
<input type="text" name="Lname" placeholder="Your Last Name" />
</div>

<div class="form-group">
<label>Your Email</label>
<input type="email" name="Email" placeholder="Your Email" />
</div>
<div class="form-group">
<label>Your Phone Number</label>
<input type="text" name="Phone" placeholder="Your Phone" />
</div>
<div class="form-group">
<label>Your Order</label>
<input type="text" name="Order" placeholder="Your Order" />
</div>

<div class="form-group">
<button class="btn btn-default" name="Submit" type="Submit">Send Order</button>
</div>
</form>

那是我的 Controller :

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests\ContactFormRequest;

class aboutController extends Controller
{
//
public function create()
{
return view('about.contact');
}

public function store(ContactFormRequest $request)
{
\Mail::send('about.contact',
array(
'Fname' => $request->get('Fname'),
'Lname' => $request->get('Lname'),
'Email' => $request->get('Email'),
'Phone' => $request->get('Phone'),
'Order' => $request->get('Order')
), function($message)
{
$message->from('mohamedsasa201042@yahoo.com');
$message->to('elbiheiry2@gmail.com', 'elbiheiry')->subject('TODOParrot Feedback');
});

return \Redirect::route('contact')
->with('message', 'Thanks for contacting us!');
}
}

这是我的路线:

Route::get('contact', 
['as' => 'contact', 'uses' => 'AboutController@create']);
Route::post('contact',
['as' => 'contact', 'uses' => 'AboutController@store']);

这是 .env 文件中的配置:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=ssl

当我按下发送时,我删除了问题中的名称和密码,它给我一条“禁止访问”的消息。

有人能帮忙吗?

最佳答案

和OP聊天后,这里是答案。

主要问题:

您的 ContactFormRequest.php 具有以下规则函数:

public function rules()
{
return [
'name' => 'required',
'email' => 'required|email',
'message' => 'required',
];
}

但是您的表单没有名称和消息,因此您需要删除不存在的元素或根据需要修改它们,出于测试目的,我只保留了电子邮件:

public function rules()
{
return [
'Email' => 'required|email',
];
}

保持命名约定是一种很好的做法,例如,如果您使用大写字母 E 的电子邮件,而不是在任何地方都使用电子邮件。

因此表单从未提交发送。

我还建议你构造你的 store 函数,我已经做过测试并且它有效,你可以修改它以满足你的要求:

$data = [
'no-reply' => 'contact-from-web@nomail.com',
'admin' => 'mohamedsasa201042@yahoo.com',
'Fname' => $request->get('Fname'),
'Lname' => $request->get('Lname'),
'Email' => $request->get('Email'),
'Phone' => $request->get('Phone'),
'Order' => $request->get('Order'),
];

\Mail::send('about.contact', ['data' => $data],
function ($message) use ($data)
{
$message
->from($data['no-reply'])
->to($data['admin'])->subject('Some body wrote to you online')
->to($data['Email'])->subject('Your submitted information')
->to('elbiheiry2@gmail.com', 'elbiheiry')->subject('Feedback');
});

它应该可以工作,

我只使用 Mandrill API 电子邮件服务对其进行了测试,但您可以尝试使用 SMTP 或 API,这取决于您。

如果您想进行电子邮件确认,您需要创建电子邮件确认 View ,将您的数据转发给它,如下所示:

\Mail::send('about.emailconfirmation', ['data' => $data],

您的 View 可能如下所示:

<tr>
<td>
<h1>Contact form</h1>
<p>Dear {{ $data['Fname'] }},</p>
<p>Thank you for contacting me.</p>
<p>I will respond to your inquiry as quickly as possible.</p>
<hr/>
<p><b>Provided email</b></p>
<p>Email: {{ $data['Email'] }},</p>
</td>
</tr>

这只是示例,您可以进一步修改它。

关于php - 如何使用 Laravel 发送电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35830567/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com