在配置文件中设置我的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。因此,我需要每个客户端一个帐户,我似乎无法通过配置文件这样做。
非常感谢你的帮助。
答案 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();
创建组件是最快的解决方案,否则,您可以使用该参数来存储配置,并在需要时调用。