yii2 mailer smtp连接拒绝

时间:2017-10-22 21:52:40

标签: email yii2 smtp mailer

在配置文件中设置我的smtp邮件程序时,它可以正常工作。但是,如果我手动创建SMPT邮件程序,它将失败(连接被拒绝)。有人可以帮忙吗?

Yii2配置文件:

'components'=[
        'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            'transport' => [
                'class' => 'Swift_SmtpTransport',
                'host' => 'smtp.gmail.com',  
                'username' => 'email@gmail.com',
                'password' => 'password',
                'port' => '587', 
                'encryption' => 'tls', 
            ],

我的控制器中的以下代码不起作用:

$mailer = new \yii\swiftmailer\Mailer();
$mailer->transport = new \Swift_SmtpTransport();
$mailer->transport
    ->setHost('smtp.gmail.com')
    ->setPort(587)
    ->setEncryption('tls');
$mailer->transport->setUsername('email@gmail.com');
$mailer->transport->setPassword('password');

我收到一条错误消息:Connection拒绝#111

我在ssl上尝试过端口465并收到相同的消息。

我这样做的主要原因是我有不同的客户帐户,每个帐户都有自己的smtp。因此,我需要每个客户端一个帐户,我似乎无法通过配置文件这样做。

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

我刚试过它对我有用,我做了如下

'components'=[
    'mailer' => [  //Your default mailer
        'class' => 'yii\swiftmailer\Mailer',
        'transport' => [
            'class' => 'Swift_SmtpTransport',
            'host' => 'smtp.gmail.com',  
            'username' => 'email@gmail.com',
            'password' => 'password',
            'port' => '587', 
            'encryption' => 'tls', 
        ],
    ],
'mailer2' => [  //Your custom mailer
        'class' => 'yii\swiftmailer\Mailer',
        'transport' => [
            'class' => 'Swift_SmtpTransport',
            'host' => 'smtp.gmail.com',  
            'username' => 'new_email@gmail.com',
            'password' => 'new_password',
            'port' => 'new_port587', 
            'encryption' => 'new_tls', 
        ],
    ]

以下是默认配置

 Yii::$app->mailer->compose()
        ->setFrom('info@gmail.com')
        ->setTo('xxx@gmail.com')
        ->setSubject('Subject')
        ->setTextBody('Plain text content')
        ->setHtmlBody("Hello")
        ->send();

关注自定义邮件程序配置

 Yii::$app->mailer2->compose()
        ->setFrom('info@gmail.com')
        ->setTo('xxx@gmail.com')
        ->setSubject('Subject')
        ->setTextBody('Plain text content')
        ->setHtmlBody("Hello")
        ->send();

创建组件是最快的解决方案,否则,您可以使用该参数来存储配置,并在需要时调用。