Отправить письмо в laravel с помощью mailtrap - PullRequest
0 голосов
/ 20 октября 2019

Здравствуйте, это мой проект с laravel для отправки электронного письма с использованием mailtrap. Это мой контроллер отправления почты

<?php
namespace App\Http\Controllers;
 use App\Model\Sendemail;
 use Illuminate\Http\Request;
 use Mail;
 use App\Mail\TestStarted;
 class SendemailController extends Controller
{
  public function start(Request $request)
 {

    $send_email = Mail::to($request->email)->send(new TestStarted);
    if ($send_email) 
     {
   return redirect()->back()->with('success', 'Sens email 
  successfully.');        
     }
 }
}

и эта функция для передачи одобрения учащемуся в studentcontroller

public function shareapproval($uniid)
{
$approval = Student :: where ('uniid', $uniid)->firstOrFail();
return view('SendEmail.Request.share',compact('approval'));
}

иэтот TestStarted.php в почтовом файле

<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;

class TestStarted extends Mailable
{
use Queueable, SerializesModels;

public function build()
{
    return $this->view('SendEmail.Request.mail');
    return redirect()->back()->with('success', 'Sens email successfully.');
}
}

это в config.mail.php

'from' => [
    'address' => env('MAIL_FROM_ADDRESS', 'testgp2@system.com'),//
    'name' => env('MAIL_FROM_NAME', 'Example'),
],

, и это моя форма, чтобы написать электронное письмо с инструктором для отправки электронного письма

@extends('layouts.app')
@section('content')
<div class="container">
<form method="post" action="/sendemail">
@csrf
 <h1>  send email </h1>
  <br>
  <<div class="form-group">
   <label for="email">write the instructor email</label><br>
   <input type="text" id="email" name="email" class="form-control" >
 </div>
 <button type="submit" class="btn btn-primary">send </button><br>
  </form>
</div>
@endsection

и это содержимое почты, которую я хочу отправить. Это mail.blade.php в (resources \ views \ SendEmail \ Request \ mail.blade.php)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-enguiv="X-UA-compatible" content="ie=edge">
 <title>document </titel>
 </head>

 <body background-color: coral>
<h2> thank you for your order </h2>

</body
</html>

Наконец, это мой маршрут

Route::post('/student/share-approval/{uniid}', 
 'StudentController@shareapproval');

//SendEmail
Route::post('/sendemail','SendemailController@start');
Route::get('/start','SendemailController@start');

, и я настроил .env с MAIL_USERNAME и MAIL_PASSWORD, как показано в моей учетной записи на mailtrap

1 Ответ

0 голосов
/ 21 октября 2019

Хорошо, начнем с маршрута. Вы указываете один и тот же метод для запроса GET и POST:

Route::post('/sendemail','SendemailController@start');
Route::get('/start','SendemailController@start');

В результате почтовое поле Mail::to($request->email) становится пустым. Что может быть причиной неудачи. Поэтому попробуйте использовать разные методы для обработки запросов GET и POST вместо одного.

Route::get('/start','SendemailController@start');
Route::post('/sendemail','SendemailController@sendMail');

Во-вторых, в приведенном ниже коде вы возвращаетесь дважды. Но в реальной жизни он выполнит только первое и проигнорирует второе.

public function build()
{
    // this is executing
    return $this->view('SendEmail.Request.mail');
    // this is getting ingorned
    return redirect()->back()->with('success', 'Sens email successfully.');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...