从localhost发送但未在托管后发送的电子邮件?

时间:2016-05-18 07:10:24

标签: php smtp yii2

我正在使用yii2 MVC框架。我已经创建了一个电子邮件应用程序,它在localhost中工作正常,但是在代码在线后它给出了一个连接超时异常我使用ssl和tls都加密,我找不到任何正版解决方案请帮助

我的配置文件代码为:

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

邮件发送代码:

Yii::$app->mailer->compose()
                ->setFrom($from)
                ->setTo($to)
                ->setSubject('Hello')
                ->setTextBody('Hello')
                ->send();

错误:

Swift_TransportException
Connection could not be established with host smtp.gmail.com [Connection timed out #110]

3 个答案:

答案 0 :(得分:0)

您应该尝试更换主机:

smtp.gmail.com

173.194.65.108gmail-smtp-msa.l.google.com

如果仍然无效,请尝试将您的端口更改为25465

答案 1 :(得分:0)

在您的配置文件中:

  • port更改为 465 ,将encryption更改为 ssl
  • 在您的Gmail帐户设置中,检查您是否已启用 IMAP

有关Gmail设置的信息:

[1] https://support.google.com/a/answer/176600?hl=en&ref_topic=1354753

[2] https://support.google.com/accounts/answer/6010255?hl=en

答案 2 :(得分:0)

从config.yml spool: { type: memory }

中删除

然后你将添加像这样的try catch

try{
        $mailer = $this->getMailer();
        $response = $this->getMailer()->send($message);
    }catch(\Swift_TransportException $e){
        $response = $e->getMessage() ;
    }

或者其他

尝试以下端口号

'port' => 26 

'port' => 465.