【问题标题】:Send email in laravel by using mailtrap使用 mailtrap 在 laravel 中发送电子邮件
【发布时间】:2020-02-16 22:20:30
【问题描述】:

你好,这是我的 laravel 项目,使用 mailtrap 发送电子邮件 这是我的 sendemail 控制器

<?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

这是我要发送的邮件内容 这是(resources\views\SendEmail\Request\mail.blade.php)中的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');

我使用 MAIL_USERNAME 和 MAIL_PASSWORD 设置了我的 .env,如我在 mailtrap 上的帐户所示

【问题讨论】:

  • 您遇到的实际问题是什么?您看到错误了吗?
  • 无法与主机 smtp.mailtrap.io 建立连接 [无法建立连接,因为目标机器主动拒绝。 #10061]

标签: php laravel


【解决方案1】:

好的,让我们从路线开始。您为 GET 和 POST 请求指向相同的方法:

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

因此,邮件字段Mail::to($request-&gt;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.');
}

【讨论】:

  • 这种情况下,你需要在 SendemailController 中添加方法 sendMail,你需要在其中放置发送邮件的东西
  • 无法与主机 smtp.mailtrap.io 建立连接 [无法建立连接,因为目标机器主动拒绝。 #10061]
  • 你能分享你的 .env 文件,尤其是邮件陷阱部分吗
  • 写下你的邮件发给你
猜你喜欢
  • 2017-07-16
  • 2020-08-26
  • 2020-08-14
  • 2021-03-27
  • 2015-12-24
  • 1970-01-01
  • 2019-05-08
  • 2015-12-20
  • 1970-01-01
相关资源
最近更新 更多