【问题标题】:Mailer Error: SMTP Error: Could not connect to SMTP host邮件程序错误:SMTP 错误:无法连接到 SMTP 主机
【发布时间】:2019-10-01 18:55:52
【问题描述】:

如何解决这个错误?我做了所有可能的事情来解决这个问题,但它无法解决。这是我的 .env 文件代码

MAIL_DRIVER=smtp
MAIL_HOST=fluorine.cloudhosting.co.uk
MAIL_PORT=465
MAIL_USERNAME=contacts@cleansafeltd.com
MAIL_PASSWORD=Hggjgjgghv123
MAIL_ENCRYPTION=ssl

这里是mail.php的代码

<?php

return [
    'driver' => env('MAIL_DRIVER', 'smtp'),
    'host' => env('MAIL_HOST', 'fluorine.cloudhosting.co.uk'),
    'port' => env('MAIL_PORT', 465),
    'from' => [
        'address' => env('MAIL_FROM_ADDRESS', 'contacts@cleansafeltd.com'),
        'name' => env('MAIL_FROM_NAME', 'Contact'),
    ],
    'encryption' => env('MAIL_ENCRYPTION', 'ssl'),
    'username' => env('MAIL_USERNAME'),
    'password' => env('MAIL_PASSWORD'),
    'sendmail' => '/usr/sbin/sendmail -bs',
    'markdown' => [
        'theme' => 'default',
        'paths' => [
            resource_path('views/vendor/mail'),
        ],
    ],
];

这是邮件控制器

public function sendMail($to_email, $template_id, $users_insertId = 0) {
    set_time_limit(0);
    $mail = new PHPMailer(true);
    $mail->IsSendmail();
    $mail->IsSMTP(true);
    $mail->Host = "fluorine.cloudhosting.co.uk";
    $mail->SMTPAuth = true;
    $mail->SMTPSecure = "ssl";
    $mail->Username = "website@cleansafeltd.com";
    $mail->Password = "Star9000!";
    $mail->Port = "465";
    $mail->IsHTML(true);
}

我也用 tls 或端口 587 做所有的事情,但没有解决。

【问题讨论】:

  • 关注the PHPMailer troubleshooting guide。当您使用 SMTP 时,您无需致电 isSendmail()。其他设置看起来不错,因此您的 ISP 可能会阻止出站 SMTP。设置$mail-&gt;SMTPDebug = 3 并查看调试输出的内容。该指南将帮助您找出问题所在。

标签: laravel phpmailer


【解决方案1】:

使用您的凭据(顺便说一句,您不应该在公共场所发布您的密码,您最好更改它),我能够使用以下代码向自己发送一封邮件

Mail::to('mymail@domain')->send(new \App\Mail\TestMail);

\App\Mail\TestMail是一个Mailable类,定义如下

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;

class TestMail extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    // Optional params are commented out. 
    // replyTo changes the address one gets when clicking the reply button
    public function build()
    {
        return $this->from(env('MAIL_USERNAME'), 'An alias name')
                    // ->to('mail@domain', 'alias name for recipient')
                    // ->cc('mail2@domain', 'alias name for cc')
                    // ->bcc('mail3@domain', 'alias name for bcc')
                    // ->replyTo('mail4@domain', 'alias for replyTo')
                    ->subject('This is a test')
                    ->view('mails.sample_mail'); // This is a laravel view.
    }
}

【讨论】:

    【解决方案2】:

    试试这个:

    1. 设置您的 gmail 帐户

      • 转到设置 -> 转发和 POP/IMAP

            - Check -> POP download: Enable POP for all mail (even mail that's already been downloaded)
        
          - Check -> IMAP access: Enable IMAP
        
          - Save
        
        • 转到 Google 帐户 -> 安全性 -> 不太安全的应用访问

          • 设置为开启而不是关闭
    2. 将此设置为您的 .env 文件

      MAIL_DRIVER=smtp

      MAIL_HOST=smtp.googlemail.com

      MAIL_PORT=465

      MAIL_USERNAME=您的电子邮件用户名

      MAIL_PASSWORD=您的电子邮件密码

      MAIL_ENCRYPTION=ssl

      MAIL_FROM_ADDRESS=您的电子邮件地址

      MAIL_FROM_NAME=您的电子邮件名称

    3. 现在您可以使用 smtp gmail 帐户发送电子邮件了

    【讨论】:

    • 他有没有问过如何通过gmail发送?不。您的回答是否有助于他了解如何更多地了解它为什么不起作用?没有。
    猜你喜欢
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 2018-05-17
    • 2017-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多