无法与主机smtp.mailtrap.io建立连接。

4
我正在尝试使用Laravel中的smtp.mailtrap.io发送电子邮件。我按照Youtube教程操作,但一直收到以下错误信息:

无法与主机smtp.mailtrap.io建立连接

下面是我的代码:
PagesController
    <?php 

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Post;
use Mail;
use Session;

class PagesController extends Controller {

public function getIndex() {
$posts = Post::orderBy('created_at', 'desc')->limit(4)->get();
return view('welcome')->withPosts($posts);
}

public function getAbout() {
$first = 'Niamh';
$last = 'Flannery';

$fullname = $first . " " . $last;
$email = 'niamh3516@hotmail.co.uk';
$data = [];
$data['email'] = $email;
$data['fullname'] = $fullname;
return view('pages.about')->withData($data);
}

public function getContact() {
return view('contact');
}

public function postContact(Request $request) {
$this->validate($request, [
'email' => 'required|email',
'subject' => 'min:3',
'message' => 'min:10']);

$data = array(
'email' => $request->email,
'subject' => $request->subject,
'bodyMessage' => $request->message
);

Mail::send('emails.contact', $data, function($message) use ($data){
$message->from($data['email']);
$message->to('niamh3516@hotmail.co.uk');
$message->subject($data['subject']);
});

Session::flash('success', 'Your Email was Sent!');

return redirect('/');
}


}

Contact.blade.php

    <div class="row">
        <div class="col-md-12">
            <h1>Contact Me</h1>
            <hr>
            <form action="{{ url('contact') }}" method="POST">
                {{ csrf_field() }}
                <div class="form-group">
                    <label name="email">Email:</label>
                    <input id="email" name="email" class="form-control">
                </div>

                <div class="form-group">
                    <label name="subject">Subject:</label>
                    <input id="subject" name="subject" class="form-control">
                </div>

                <div class="form-group">
                    <label name="message">Message:</label>
                    <textarea id="message" name="message" class="form-control">Type your message here...</textarea>
                </div>

                <input type="submit" value="Send Message" class="btn btn-success">
            </form>
        </div>
    </div>

web.php

Route::get('contact', 'PagesController@getContact');

Route::post('contact', 'PagesController@postContact');

contact.php

<h3> You have a new contact via the contact form </h3>

<div>

{{$bodyMessage}}

</div>

<p> Sent Via {{$email}}</p>

.env

MAIL_DRIVER=smtp

MAIL_HOST=smtp.mailtrap.io

MAIL_PORT=25

MAIL_USERNAME=c388d55897e620

MAIL_PASSWORD=f3d7fa90a9c6ab

MAIL_ENCRYPTION=null

1
检查你的 port,有些使用 SMTP 的 SSL,类似于 465,如果我没记错的话。 - ArtisticPhoenix
@ArtisticPhoenix 我的 Mailtrap 帐户上的端口说要使用 25 或 465 或 2525,我应该尝试所有这些来查看吗? - Niamh Flannery
1
不过也无妨,您还需要确保防火墙中的端口对外传输是开放的。邮件无法发送成功可能有很多原因。 - ArtisticPhoenix
@ArtisticPhoenix 尝试更改端口,但它们都返回与上述相同的错误。检查了我的防火墙,发现已关闭,所以我已经打开了它,但仍然收到相同的错误。 - Niamh Flannery
这有帮助吗? - Eazy Sam
你成功解决了这个问题吗?我也遇到了同样的问题。 - CodeBoyCode
4个回答

11
请在您的.env文件中使用以下设置。
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=587
MAIL_USERNAME=c388d55897e620
MAIL_PASSWORD=f3d7fa90a9c6ab
MAIL_ENCRYPTION=tls

在你的config/mail.php文件底部添加以下内容。
'stream' => [
      'ssl' => [
          'allow_self_signed' => true,
          'verify_peer' => false,
          'verify_peer_name' => false,
      ],
    ],

并检查是否正确

'sendmail' => '/usr/sbin/sendmail -bs',

请确保在本地主机上启用并正确配置了ssl和smtp(检查您的php.ini文件)


我在哪里可以找到php.ini文件? - Niamh Flannery
我不确定你使用的是哪个本地主机,但它应该在php文件夹中。例如,如果你正在使用xampp,它应该在你的xampp/php/php.ini中。 - user6780526
2
你成功解决了这个问题吗?我也遇到了同样的问题。 - CodeBoyCode

1
如果您正在从Cpanel运行项目并尝试使用邮件捕获提供的其他端口中的优先级之一,而优先使用端口465,则在本地运行时请使用2525。

1
在我的情况下,这是一个SELinux问题(CentOS 7),以下内容有帮助:
sudo semanage port -a -t http_port_t -p tcp 2525

如果仍然不起作用,请检查以下内容:
sudo setsebool -P httpd_can_sendmail 1
sudo setsebool -P httpd_can_network_connect 1

-2
运行命令:php artisan optimize

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接