我正在尝试发送原始邮件,但是出现错误“没有发件人地址就无法发送消息”,并且我似乎看不到我要去哪里。我已经在.env文件中提供了发件人电子邮件,但仍然会显示该错误
我的控制器!
<?php
namespace App\Http\Controllers\User;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Mail;
class ContactController extends Controller
{
public function show()
{
return view('user.contact');
}
public function store()
{
request()->validate(['email' => 'required|email']);
Mail::raw('it works', function ($message) {
$message->to(request('email'))
->subject('Hi There');
});
return redirect()->back();
}
}
我的.env文件
MAIL_MAILER=log
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=admin@example.com
MAIL_FROM_NAME="${APP_NAME}"
我的mail.php文件
<?php
return [
'mailers' => [
'smtp' => [
'transport' => 'smtp',
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'timeout' => null,
'auth_mode' => null,
],
'ses' => [
'transport' => 'ses',
],
'mailgun' => [
'transport' => 'mailgun',
],
'postmark' => [
'transport' => 'postmark',
],
'sendmail' => [
'transport' => 'sendmail',
'path' => '/usr/sbin/sendmail -bs',
],
'log' => [
'transport' => 'log',
'channel' => env('MAIL_LOG_CHANNEL'),
],
'array' => [
'transport' => 'array',
],
],
'markdown' => [
'theme' => 'default',
'paths' => [
resource_path('views/vendor/mail'),
],
],
];
我的表格!
<form action="{{ route('contact')}}" method="post">
@csrf
<div class="form-group">
<label>E-mail</label>
<input type="email" name="email" class="form-control">
@error('email')
<p style="color: red; font-size: 15px; margin-top: 5px">{{ $message }}</p>
@enderror
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
我正在尝试发送原始邮件,但出现错误
没有发件人地址就无法发送消息
而且我似乎看不出我要去哪里。我已经在.env文件中提供了发件人电子邮件,但仍然会显示该错误
答案 0 :(得分:0)
在您的环境文件中,您的用户名和密码为空,您应该能够从mailtrap中获取用户名和密码,并且应该可以使用
答案 1 :(得分:0)
尝试一下,它应该可以工作:
public function store(Request $request)
{
$this->validate($request, [
'email' => 'required|email'
]);
$email = $request->email;
$data = [
'email' => $request->email,
];
Mail::send('mail', $data, function ($message) use ($email) {
$message->to('myemail@gmail.com', 'Email Title')->subject('Test Subject 2');
$message->from($email, "Sender Name");
});
echo "HTML Email Sent. Check your inbox.";
}
答案 2 :(得分:0)
配置被缓存后, .env 文件将不再加载。相反,Laravel使用缓存的配置,以便应用程序更快地加载。 因此,更改 .env 文件时,最好运行 php artisan config:cache 。
答案 3 :(得分:0)
您需要清除缓存以防止发生此错误。依次使用以下命令,您的错误将得到解决。
- php artisan cache:clear
- php artisan route:cache
- php artisan view:clear
- php artisan config:cache
希望它对您有所帮助。