如果你有自己的邮件服务器,可以使用你自己的邮件服务器的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
完
版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.