2013-12-27 17:36:16

PHP使用PHPMailer和谷歌免费SMTP发送邮件

在PHP中实现邮件发送功能是很简单的,只需要简单的使用mail()函数就可以。但是要让mail()函数能正确运行,我们还需要进行其他的配置。

我们需要明白的是PHP不会直接向对方邮箱发送邮件的,因为PHP是搭建在apache上的,而apache本上是没有能力发送邮件的。所以,我们要在程序中实现发送邮件的功能,必须让PHP程序正确的与SMTP服务器通信,然后由SMTP服务器负责邮件的发送。换句话说,如果我们在本地开发邮件发送的功能,就必须有一个SMTP服务器,并且使PHP能正确与之通信。通常我们可以有两种方式实现一个SMTP服务器,一种是自己在本地搭建一个,另一种是使用一些免费的SMTP服务器。在本篇文章介绍的是如何使用谷歌的免费SMTP服务器。

PHP中有内置的mail()函数实现邮件发送的功能,但是我们这里使用的是一个开源的邮件发送类PHPMailer。相信很多人都是用过这个类,这里也不再做介绍了,如果没使用过,大家可以参考PHPMailer的官网教程。

下面开始介绍,如何使用PHPMailer和谷歌免费的SMTP发送邮件。

在PHP较新的版本(5.3及其以上版本)中,php_smtp是内置的扩展,不需要手动开启。但是在PHP5.3以下的版本中,需要手动进行配置,配置的步骤如下:

1.下载php_smtp.dll扩展,下载地址:http://www.topdll.com/download/php_smtp.dll

2.将下载的文件放在PHP的扩展目录中,这个根据自己的安装路径而定,例如:“…\php\php5.2.6\ext\”。

 3.打开PHP的配置文件php.ini,在“Dynamic Extensions”加入下列代码:

extension=php_smtp.dll
 4.重启服务器,使设置生效。 好了,前期的准备工作已经完成。下面是如何将PHPMailer和谷歌的免费服务器结合起来。  第一步:在apache配置文件httpd.conf中开启ssl_module。  第二步:在PHP配置文件php.ini中开启php_openssl,php_smtp 和 php_sockets扩展  第三步:下载PHPMailer库,并将其放在合适的项目目录中。  第四步:编写代码实现邮件发送功能,下面是一个示例的代码,大家可以仅作参考。
<?php
    //phpinfo();die;
    require 'class.phpmailer.php';
    $mail=new PHPMailer();
    $mail->isSMTP();
    $mail->Mailer='smtp';
    $mail->SMTPAuth=true;
    $mail->SMTPSecure = "ssl";
    //设置谷歌免费SMTP服务器
    $mail->Host='smtp.gmail.com';
    //设置主机端口
    $mail->Port=465;
    //设置谷歌邮箱用户名和密码,自己注册的Gmail邮箱帐号就行
    $mail->Username='你的Gmail邮箱帐号';
    $mail->Password='你的Gmail邮箱密码';
    $mail->isHTML(true);
    //设置发信人和收信人地址
    $mail->from='hello@qq.com';
    $mail->FromName='土豆丫';
    $mail->addAddress('收信人地址');
    $mail->Subject='hello china';
    $mail->Body='hello world! hello china!!';
    if(!$mail->send()){
        echo '邮件发送错误:'.$mail->ErrorInfo;
    }else{
        echo '邮件已发送';
    }
?>

总结:写这篇文章主要是自己在第一次编写邮件发送功能的时候遇到了问题,本人用的是win8系统,在win8上搭建一个smtp服务器挺麻烦的,最后查了资料就选用了这种方法。这种方法,可以让大家在做本地开发的时候,节省很多功夫。当然,如果是企业用户的话,最好还是用付费的邮箱账户,多少有点保证。

发表回复