Yii 使用gmail发送邮件

如果你有自己的邮件服务器,可以使用你自己的邮件服务器的smtp来发邮件,但是有个问题,很多邮件服务商,如果google和yahoo可能会把从你邮件服务器发出的邮件视为垃圾邮件,其实这不算严重,严重者直接拒绝接受你的邮件。

因此使用gmail来发送邮件是个不错的选择。

Yii强大之处在于,它有很多的插件(extension),我们这里要用就是 yii-mail这个插件,地址如下:

http://www.yiiframework.com/extension/mail/

下载后解压到,

protected/extension

这个文件夹下面。

接下来配置

protected/config/main.php

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

然后就直接使用此插件发送邮件,代码如下:

    $message = new YiiMailMessage;  
    $message->setBody('here is message body', 'text/html');  
    $message->subject = 'test subject';  
    $message->addTo('testTo@gmail.com');  
    $message->from = Yii::app()->params['adminEmail'];  
    Yii::app()->mail->send($message);  

这样你就能发送邮件到testTo@gmail.com了。

这种方式你需要注意打开openssl的支持,如何检测你当前的php的配置是否支持openssl呢?使用phpinfo()。如

<?php

echo phpinfo();

?>

如果在Configure Command看到

‘–with-openssl’

说明你的php编译的时候是支持openssl的。

如果你看到下面的字样

o普penssl

OpenSSL support enabled
OpenSSL Library Version OpenSSL 1.0.0-fips 29 Mar 2010
OpenSSL Header Version OpenSSL 1.0.0-fips 29 Mar 2010

说明你的php不仅编译的选择支持openssl,并且当前的配置也是支持openssl的。

可能你在发送的邮件的时候会碰到这样的错误,

fsockopen(): unable to connect to tls://smtp.gmail.com:465 (Permission denied)

这个情况很可能是背selinux给阻止了,将selinux设为被动模式再试试。

sudo setenforce 0

版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.

    分享到:

Leave a Reply

Your email address will not be published. Required fields are marked *