扩展YiiMaill(Swiftmailer)无法从gmail

时间:2017-10-27 12:37:26

标签: php email yii swiftmailer yii-extensions

我有一个运行 Yii Framework 的PHP应用程序,并且它使用 YiiMail 扩展程序,该扩展程序基于 Swiftmailer

我的应用程序昨天工作正常,但今天发布了以下错误:

fsockopen(): SSL操作失败,代码为1. OpenSSL错误消息: 错误:14090086:SSL例程:ssl3_get_server_certificate:证书验证失败

我的Yii应用配置:

'mail' => 
  array('class' => 'application.extensions.yii-mail.YiiMail',
        'transportType' => 'smtp', 
        'transportOptions' => array(
             'host' => 'smtp.gmail.com', 
             'username' => '**@gmail.com', 
             'password' => '***', 
             'port' => '465', 
             'encryption'=>'tls' ), 
         'viewPath' => 'application.views.mail', 
         'logging' =>false, 
         'dryRun' => false
 )

答案:快速解决方案

我的应用程序在Windows中运行,因此我进行了快速配置以解决此问题。

我使用 sendmail 进行了配置,并启用了我的php.ini文件。

Ps:主要问题是如果你有许多应用程序在同一个php中运行。怎么不对我这个问题,这是独立的应用程序,我刚刚做了。

这样的事情:

sendmail.ini

[sendmail]
smtp_server=smtp.gmail.com
smtp_port = 587
#default_domain = gmail.com it's is not necessary
auth_username= your gmail@gmail.com
auth_password=your password

的php.ini

[mail function]
sendmail_path = "path to sendmail installation"
SMTP = smtp.gmail.com
smtp_port = 587

2 个答案:

答案 0 :(得分:0)

这是我在Yii2项目中的工作smtp设置: 公共/配置/主local.php

return [
    'components' => [
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=localhost;dbname=bd-sys',
            'username' => 'root',
            'password' => '',
            'charset' => 'utf8',
        ],
        'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            // send all mails to a file by default. You have to set
            // 'useFileTransport' to false and configure a transport
            // for the mailer to send real emails.
            'useFileTransport' => false,
            'transport' => [
                'class' => 'Swift_SmtpTransport',
                'host' => 'smtp.gmail.com',
                'username' => '******@gmail.com',
                'password' => '******',
                'port' => 587,
                'encryption' => 'tls',
            ],
        ],
    ],
];

答案 1 :(得分:0)

如果你当前的配置以前有效,那么突然停止了。请考虑以下内容:

之前我遇到过类似的问题,启用了较少安全的应用,然后当我为我的Google帐户设置2 Step Verification时,它就停止了工作。

然后生成一个APP密码,就行了!