Laravel 在生产环境中不发送电子邮件

Laravel doesnt' send emails in production

我有一个 Laravel 应用程序,它会在用户每次想要重设密码时发送一封电子邮件。在我的电脑上一切正常,但是当我将它上传到我的 VPS 服务器(由 Ionos 提供支持并安装了 Plesk Obsidian)时,没有发送任何电子邮件,也没有显示任何错误。电子邮件在作业队列中发送,作业也成功完成且没有错误。

我尝试从我的服务器使用 ssh 连接,结果是:

openssl s_client -connect smtp.ionos.es:587 -starttls smtp

CONNECTED(00000003)
depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA
verify return:1
depth=1 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = GeoTrust RSA CA 2018
verify return:1
depth=0 C = DE, ST = Rheinland-Pfalz, L = Montabaur, O = 1&1 IONOS SE, CN = smtp.ionos.es
verify return:1
---
Certificate chain
 0 s:C = DE, ST = Rheinland-Pfalz, L = Montabaur, O = 1&1 IONOS SE, CN = smtp.ionos.es
   i:C = US, O = DigiCert Inc, OU = www.digicert.com, CN = GeoTrust RSA CA 2018
 1 s:C = US, O = DigiCert Inc, OU = www.digicert.com, CN = GeoTrust RSA CA 2018
   i:C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIGvzCCBaegAwIBAgIQAkvpQmOcYv666PeadD8D0zANBgkqhkiG9w0BAQsFADBe
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMR0wGwYDVQQDExRHZW9UcnVzdCBSU0EgQ0EgMjAxODAe
Fw0yMDA3MjIwMDAwMDBaFw0yMjA3MjcxMjAwMDBaMGoxCzAJBgNVBAYTAkRFMRgw
FgYDVQQIEw9SaGVpbmxhbmQtUGZhbHoxEjAQBgNVBAcTCU1vbnRhYmF1cjEVMBMG
A1UECgwMMSYxIElPTk9TIFNFMRYwFAYDVQQDEw1zbXRwLmlvbm9zLmVzMIIBIjAN
BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs6FtGm46MqN3f1fS/zNhm0OCqcQ4
jjjyr+cjPC811xNJtGADBdS6ymiXrUd5dPNaJhj2JHt8wbw/tw+ycfNlg91pmQkh
GpT54giFDLZWOkSc54EDOgOcO6k34ZOoeOXRyhch3GAEak5+WJwGM7LedkTZjILL
d/MgwE6tR4bsagiuNdVozA2HtQEjEIlwD9ZyVGkmrV24xAqSER6H1BOD1YZhaISh
tikdS7zRJEPrw2KDz4kmxg/Na8LAVVzI4LonYYi1J9tsuK0UpZVLQlhSYFCsck4Q
cUmRHqIHrlHd6p0mW9kgRzaGYEsZvuhBhDW/I2+4qpvsfx3Y+mBAs0gPOQIDAQAB
o4IDazCCA2cwHwYDVR0jBBgwFoAUkFj/sJx1qFFUd7Ht8qNDFjiebMUwHQYDVR0O
BBYEFEyvAZrDZHHPO08pdOz6DlFloFJ1MGEGA1UdEQRaMFiCDXNtdHAuaW9ub3Mu
ZXOCDHBvcC5pb25vcy5lc4INaW1hcC5pb25vcy5lc4INc210cC4xYW5kMS5lc4IM
cG9wLjFhbmQxLmVzgg1pbWFwLjFhbmQxLmVzMA4GA1UdDwEB/wQEAwIFoDAdBgNV
HSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwPgYDVR0fBDcwNTAzoDGgL4YtaHR0
cDovL2NkcC5nZW90cnVzdC5jb20vR2VvVHJ1c3RSU0FDQTIwMTguY3JsMEwGA1Ud
IARFMEMwNwYJYIZIAYb9bAEBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LmRp
Z2ljZXJ0LmNvbS9DUFMwCAYGZ4EMAQICMHUGCCsGAQUFBwEBBGkwZzAmBggrBgEF
BQcwAYYaaHR0cDovL3N0YXR1cy5nZW90cnVzdC5jb20wPQYIKwYBBQUHMAKGMWh0
dHA6Ly9jYWNlcnRzLmdlb3RydXN0LmNvbS9HZW9UcnVzdFJTQUNBMjAxOC5jcnQw
DAYDVR0TAQH/BAIwADCCAX4GCisGAQQB1nkCBAIEggFuBIIBagFoAHYAKXm+8J45
OSHwVnOfY6V35b5XfZxgCvj5TV0mXCVdx4QAAAFzdV59fQAABAMARzBFAiAstDPu
ooEGKD4VxkFAgGyboZZmgGTcyHuin7+nUOFuswIhAIibYRxOJHTbTsAbWHtz1Xep
9Est6w/SUGVZQbJ3AHUBAHYAIkVFB1lVJFaWP6Ev8fdthuAjJmOtwEt/XcaDXG7i
DwIAAAFzdV59rgAABAMARzBFAiB4U2uTuGB5UNEroxCpQk05wJD9/Ee4oRfprcG7
UzBflgIhAI2CUcvStJim7VxSwfDpR1okdjZ6FfvtQ9IUw8F/iMllAHYAQcjKsd8i
RkoQxqE6CUKHXk4xixsD6+tLx2jwkGKWBvYAAAFzdV59SwAABAMARzBFAiEAhV0T
vEnjBOq8LGjruVELVDUywDFbWgxEo1CBAc8kHMMCIGWaDeTcgEZFC6ch2W9g8ZSL
7ZCkA9TfwQVgc7WSRxmKMA0GCSqGSIb3DQEBCwUAA4IBAQAKFvzVNIuW7Tv0IuLn
tyUoaLpjGZHoS6aeLLGHiFhaSSG7nr1yeCal3zpbiPKAFzoKAXmotGMlIiDvK0V+
mlriU/wpGrESAx450FmOb30JUQ5t1tsdAZ0H1L66wTfC5m0JCavPM7KnWn4seSao
AqSBy449b6vy31+I1JaAwzievZmE3QMPhO+OSBTRbs+MukO7NwnJ0xsOa3IGBG5+
v3xge1LeE0gUtRaDlSNjglhCROYRb050lkwQB/nNUVCCZOYBAUcIPEDhi2aJBin8
/tgsAcmDegDEOPSUzX1/LXwaBgPCDlo1wjb2bCK16TWA5NZ8bkmEzSk2HdR1/Vdj
MJfu
-----END CERTIFICATE-----
subject=C = DE, ST = Rheinland-Pfalz, L = Montabaur, O = 1&1 IONOS SE, CN = smtp.ionos.es

issuer=C = US, O = DigiCert Inc, OU = www.digicert.com, CN = GeoTrust RSA CA 2018

---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 3657 bytes and written 418 bytes
Verification: OK
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
250 STARTTLS

但是如果我尝试 EHLO "I am here" 我没有收到任何回复。

这是我的 .env 配置:

MAIL_MAILER=smtp
MAIL_HOST=smtp.ionos.es
MAIL_PORT=587
MAIL_USERNAME=****
MAIL_PASSWORD=****
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=***
MAIL_FROM_NAME="${APP_NAME}"

我在这里发送电子邮件:

<?php

namespace App\Mail\auth;

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

class RememberPassword extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * URL to reset password
     *
     * @var String
     */
    public $url;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct(string $url, string $token)
    {
        $this->url = str_replace('{token}', $token, $url);
        $this->url = str_replace('%7Btoken%7D', $token, $url);
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this
            ->view('email.auth.remember-password');
    }
}

我如何找出阻止在生产环境中发送电子邮件的原因?

加入“config/mail.php”

'stream' => [
   'ssl' => [
       'allow_self_signed' => true,
       'verify_peer' => false,
       'verify_peer_name' => false,
   ],
],

改变它

MAIL_ENCRYPTION=ssl

固定

当我尝试使用 Gmail 帐户时,它可以正常工作,但不能用于 Outlook。最后我去了邮箱,看起来 Outlook 使用了一个名为 Spamhaus 的服务,它是一个垃圾邮件 IP 列表。我提供的服务出于任何原因将电子邮件归类为垃圾邮件,并且 Outlook 退回了所有电子邮件。