PHPMailer类-php发送邮件好帮手


PHPMailer 是一个专门用于php语言的邮件发送类,功能十分地强大,丰富了 PHP 本身单一的 mail() 函数。支持 SMTP 等甚至于附件。
PHPMailer 遵守 LGPL 授权,可以免费下载,当前版本是PHPMailer v2.2.1 更新于2007 年11月16日。
下载地址:http://phpmailer.codeworxtech.com/index.php?pg=sf&p=dl
注:下载时有后缀分别为 .tar.gz 和 .zip 之分,其实它们包含的文件都是一样的,只是压缩格式不同,.tar.gz 经过了双重压缩,文件更小罢了,WinRAR 软件能正确地解压这两种格式。
◆使用方法:
☆前注:解压后,文件包中会有一个 examples 文件夹,里面有“pop3_before_smtp_test.php” 和 “test1.php” 两个文件。其中第一个文件是教授基本的使用方法(见下),而 “test1.php” 则主要介绍了一些新增的特性,这些都在同文件夹下的“index.html” 作出了详细的说明,另一个文件“contents.html” 则是邮件内容,以后可以替换为邮件模版,用以增加邮件的规范化和丰富化。
☆基本方法:pop3_before_smtp_test.php

<?php
require ‘class.phpmailer.php’;
require ‘class.pop3.php’;
$pop = new POP3();
// 建立对象,收邮件
$pop->Authorise(’pop3.example.com’, 110, 30, ‘mailer’, ‘password’, 1);
// 设置收邮件的用户信息
// pop3.example.com:改写成邮箱的 pop3 服务器
// 例如,163 为 pop3.163.com
// mailer:用户名
// password:密码
$mail = new PHPMailer();
// 建立对象,发邮件,如果仅仅是发邮件可以去掉上面
// pop3 部份以及对 class.pop3.php 的包含
$mail->IsSMTP();
// 不变
$mail->SMTPDebug = 2;
$mail->IsHTML(true);
// 是否使支持 HTML 邮件的发送,默认为 false ,
// 为了方便后面使用“邮件模版”,我们把它改为 true
$mail->Host = ‘relay.example.com’;
// 发邮件的服务器
// 例如,163邮箱 为 smtp.163.com
$mail->From = ‘mailer@example.com’;
// 你的邮箱
$mail->FromName = ‘Example Mailer’;
// 你的姓名
$mail->Subject = ‘My subject’;
// 邮件标题
$mail->Body = ‘Hello world’;
// 邮件内容,这里可以使用新特性调用邮件模版,具体详情看后面。
$mail->AddAddress(’name@anydomain.com’, ‘First Last’);
// 收件人邮箱和姓名
if (!$mail->Send())
{
echo $mail->ErrorInfo;
}
?>
◆新增特性-邮件模版:test1.php
☆前注:新增特性就单从 test1.php 来看主要是增加了对邮件模版的支持,可以将以下代码添加到上面就可以实现邮件模版功能了。
……省略部分代码……
$body = $mail->getFile(’contents.html’);
// 调用邮件模版
$body = eregi_replace(”[/]”,”,$body);
// 替换内容,例如邮件中的姓名及称谓
$subject = eregi_replace(”[/]”,”,$subject);
// 替换主题,必要的时候上面都可以做一些针对性修改
……省略部分代码……
◆特注:
(1)注意事项:
getFile()函数内部使用了fopen()函数来实现对文件的调用,函数中设置了能调用的最大文件为 1M,所以不能调用大于 1M 的文件,调用的文件既可以是本地文件也可以是远程文件,PHPMailer 中的全部方法请参考这里。
(2)文件的填写方法:
第一行为 UNIX 系统使用,即是相对地址;第二行是 Windows 系列系统的用法,即是绝对地址;第三、四行则为 URL 的使用范例,即网络地址,这些规范同样适用于上面的 getFile() 函数。
<?
$fp = fopen(”/home/rasmus/file.txt”, “rb”);
$fp = fopen(”c://mydata//info.txt”, “rb”);
$fp = fopen(”http://www.php.net/”, “rb”);
$fp = fopen(”ftp://user:password@my.com/”, “w”);
?>
(3)emegi_replace(”$var1″,”$var2″,$var3)函数:
emegi_replace(”$var1″,”$var2″,$var3) 函数跟 emeg_replace() 函数功能上差不多,都是在 $var3 中查找 $var1 并将其替换为 $var2 ,不同的是 eregi_replace() 函数不区分大小写。更多资料参考这里!
(4)针对 Gmail 的 ssl 加密链接:
前两天才搞定的企业邮局就是为了用来进行 Email 的发送,不过 ssl 加密的 Gmail 并不能简单地使用上面的方法解决,大家可以看看下面这些文章,在文章中提到了解决方法,不过我还没来得及做实验验证!
———-Update 2007.12.1———-
在新版的 PHPMailer 中实现 Gmail 发邮件,只需要在 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;
}
就可以了,有变化的地方做了加粗与倾斜显示。
使用方法:
……
$mail->Host = “ssl://smtp.gmail.com:465″;   // SMTP servers
……

Gmail 的端口号为 465 ,这种修改方法同时支持原有方法,即如果是163,则可以使用以下方法:
……
$mail->Host = “smtp.163.com”;   // SMTP servers
……
———-End  Update ———-
阅读文章:PHPMailer con GMail
阅读文章:让phpmailer支持gmail发送邮件
阅读文章:终于能够通过phpmailer使用gmail账号发送邮件了
(5)邮件模版下载:
网上流传甚广的30套邮件模版 直接下载,挺不错的,在国内 126,163,QQ 这些邮箱中经测试表现都很正常,在 Gmail 中显示不正确, HotMail 未测试。
(6)成功发送邮件后却发现是乱码,怎么办呢?
PHPMailer 使用的字符集为 iso-8859-1,这个字符集并不能准确的显示中文,修改办法是给前面的程序增加一行代码,将字符集指定为 UTF-8:
$mail->CharSet = “UTF-8″; // 这里指定字符集!
为了保险,我们再修改 class.phpmailer.php 文件,找到第 50 行,将
var $CharSet = ‘iso-8859-1′;
修改为:
var $CharSet = ‘UTF-8′;
经测试,这种修改后均能在 126/163/qq/gmail 中正确显示

PHPMailer邮件的使用 第一步:需要下载PHPMailer文件包phpmailer-1.73.tar.gz 来自开源社区: http://phpmailer.sourceforge.net/ 第二步:确认你的服务器系统已经支持socket 如下图,通过phpinfo();查看是否支持sockets   如果没有这一项就请注意: socket 是属于PHP扩展部分,编译时必须给定一个用于./configure --enable-sockets 的配置选项。 第三步:把文件解压到你的web服务器目录下,调用就可以了,说明:首先包含 class.phpmailer.php,然后创建对象,设置参数,调用成员函数。具体请见下面的示例代码: <?php require("phpmailer/class.phpmailer.php"); function smtp_mail ( $sendto_email, $subject, $body, $extra_hdrs, $user_name) { $mail = new PHPMailer(); $mail->IsSMTP(); // send via SMTP $mail->Host = "200.162.244.66"; // SMTP servers $mail->SMTPAuth = true; // turn on SMTP authentication $mail->Username = "yourmail"; // SMTP username 注意:普通邮件认证不需要加 @域名 $mail->Password = "mailPassword"; // SMTP password $mail->From = "yourmail@163.com"; // 发件人邮箱 $mail->FromName = "163.com管理员"; // 发件人 $mail->CharSet = "GB2312"; // 这里指定字符集! $mail->Encoding = "base64"; $mail->AddAddress($sendto_email,"username"); // 收件人邮箱和姓名 $mail->AddReplyTo("yourmail@163.com","163.com"); //$mail->WordWrap = 50; // set word wrap //$mail->AddAttachment("/var/tmp/file.tar.gz"); // attachment //$mail->AddAttachment("/tmp/image.jpg", "new.jpg"); $mail->IsHTML(true); // send as HTML // 邮件主题 $mail->Subject = $subject; // 邮件内容 $mail->Body = ' <html><head> <meta http-equiv="Content-Language" content="zh-cn"> <meta http-equiv="Content-Type" content="text/html; charset=GB2312"></head> <body> 欢迎来到<a href="http://www.163.com">http://www.163.com</a> <br /><br /> 感谢您注册为本站会员!<br /><br /> </body> </html> '; $mail->AltBody ="text/html"; if(!$mail->Send()) { echo "邮件发送有误 <p>"; echo "邮件错误信息: " . $mail->ErrorInfo; exit; } else { echo "$user_name 邮件发送成功!<br />"; } } // 参数说明(发送到, 邮件主题, 邮件内容, 附加信息, 用户名) smtp_mail('yourmail@163.com', '欢迎来到163.com!', 'NULL', '163.com', 'username'); ?> 要注意的内容:   1. 邮件的字符集设置, $mail->CharSet = "GB2312"; // 这里指定字符集!在这里我只指定为GB2312因为这样Outlook能正常显示邮件主题,我尝试过设为utf-8,但在Outlook下显示乱码。   2. 如果是发送html格式的邮件,那么记得也指定为<meta http-equiv="Content-Type" content="text/html; charset=GB2312">   3. 如果你想用它来群发邮件的话,记得修改包含文件函数,如:   require("phpmailer/class.phpmailer.php");   改为   require_once("phpmailer/class.phpmailer.php");   否则的话会产生的重定义。 //使用心得 用sina的刚注册就可以发送 $mail->Host = "smtp.sina.com"; // SMTP servers 用163的刚注册不能发送,得用注册时间长的才可以用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值