Ala*_*lan 9 php email ssl laravel self-signed-certificate
我正在尝试发送包含此配置的电子邮件:
return [
'driver' => 'smtp',
'host' => 'mail.mydomain.com',
'port' => 26,
'from' => ['address' => 'mailer@mydomain.com', 'name' => 'Mailer'],
'encryption' => 'tls',
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,
];
Run Code Online (Sandbox Code Playgroud)
当我提交表格时,我收到了这个erorr:
ErrorException in StreamBuffer.php line 95:
stream_socket_enable_crypto(): SSL operation failed with code 1.
OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Run Code Online (Sandbox Code Playgroud)
我找到了这个解决方案,人们似乎已经解决了同一个库的问题,但我无法在Laravel中解决它.
M A*_*fan 21
在config/mail.php的底部添加它
'stream' => [
'ssl' => [
'allow_self_signed' => true,
'verify_peer' => false,
'verify_peer_name' => false,
],
],
Run Code Online (Sandbox Code Playgroud)
这将解决您的问题.
编者注:禁用SSL验证具有安全隐患.如果不验证SSL/HTTPS连接的真实性,恶意攻击者可以冒充受信任的端点(例如GitHub或其他一些远程Git主机),并且您将容易受到中间人攻击.在将此作为解决方案之前,请确保完全了解安全问题.
小智 7
在 Laravel 9 中,不再支持为 SMTP 传输定义流选项。相反,如果支持的话,您必须直接在配置中定义相关选项。例如,要禁用 TLS 对等验证:
'smtp' => [
// Laravel 8.x...
'stream' => [
'ssl' => [
'verify_peer' => false,
],
],
// Laravel 9.x...
'verify_peer' => false,
],
Run Code Online (Sandbox Code Playgroud)
小智 5
如果您使用的是 Laravel 7.0,您可以通过这种方式在 SwiftMailer 中禁用 SSL 验证(请注意,不建议禁用 SSL 验证!):
config/mail.php
'mailers' => [
'smtp' => [
'transport' => 'smtp',
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'timeout' => null,
'stream' => [
'ssl' => [
'allow_self_signed' => true,
'verify_peer' => false,
'verify_peer_name' => false,
],
],
],
],
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
22781 次 |
最近记录: |