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 退回了所有电子邮件。
我有一个 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 退回了所有电子邮件。