HPMailer 是一个专门用于php语言的邮件发送类,功能十分地强大,丰富了 PHP 本身单一的 mail() 函数。支持 SMTP 等、附件等。 PHPMailer 遵守 LGPL 授权,可以免费下载。
下载地址:http://sourceforge.net/projects/phpmailer/files/phpmailer%20for%20php5_6/PHPMailer%20v5.1/PHPMailer_v5.1.zip/download
使用方法(只说法邮件,其收邮件的功能飘过):
代码如下 | 复制代码 |
IsSMTP(); $mail->SMTPAuth = true; //smtp要求身份验证 $mail->SMTPSecure = 'ssl'; //smtp验证方式 $mail->Port = 465 ; //smtp端口号 $mail->Username = "[email protected]"; // 注册了的gmail用户邮箱(用你的gmail邮箱就可以) $mail->Password = "password"; //密码 $mail->Host = 'smtp.gmail.com'; // 发邮件的服务器 $mail->IsHTML(true); // 是否使支持 HTML 邮件的发送,默认为 false , $mail->From ='[email protected]'; // 发信人的邮箱,用你的gmail邮箱就可以 $mail->FromName = 'Mailer'; // 你的姓名 $mail->Subject = '邮件标题'; // 邮件标题 $mail->Body ='Hello world'; // 邮件内容,支持HTML代码 $mail->AddAddress('[email protected]', 'First Last'); // 收件人邮箱和姓名 if (!$mail->Send()) { echo $mail->ErrorInfo; } |
本来一般是照上面的配置就可以通过指定的smtp服务器发送邮件了,但是经个人测试上面的设置只能用163,126的smtp发送邮件,像qq,gmail等都发送不出去! 在google上搜了N久,终于找到了下面的方法可以成功通过gmail发送邮件了,当然还包括:qq、sina、sohu等(雅虎的不能通过,貌似雅虎默认smtp没有开通,得开通他们的一个叫‘邮件提醒’功能才给你开通smtp/pop3)
下面是解决方法: 只需要在 class.phpmailer.php 中查找到下面的代码(可能由于下载的版本不同而稍微有点区别):
代码如下 | 复制代码 |
if(eregi(’^(.+):([0-9]+)$‘, $hosts[$index], $hostinfo)) { $host = $hostinfo[1]; $port = $hostinfo[2]; } else { $host = $hosts[$index]; $port = $this->Port; } |
更改为( 不任什么版本都改成下面的内容):
代码如下 | 复制代码 |
if(eregi(’^#(([a-z]+://)?[^:]+):(d+)#i‘, $hosts[$index], $hostinfo)) { $host = $hostinfo[1]; $port = $hostinfo[3]; } else { $host = $hosts[$index]; $port = $this->Port; } |
几经修改希望你也可以顺利的通过gmail的smtp发送邮件了(当然要在win下面要能发邮件,还得在IIS中安装smtp以及在php中有OpenSSL扩展的支持)。 最后经测试,这种修改后能顺利通过 126163qqgmailsinasohu的smtp发送邮件