phpmailer,smtp发送邮件实例

张映 发表于 2010-07-11

分类目录: php

标签:, , ,

今天突然发现,本博客的注册功能不能用,我真怀具。我查了一下,服务器上php的mail函数不能用,这就意味着,注册的时候,不能发送邮件给你,这样你就无从知道密码了。发送邮件的东西,我刚接触php的时候,就搞过。当时觉得挺神奇,哈哈。没有搭建邮件服务器照样发邮件。不过是利用别人邮件服务器。phpmailer,smtp都是发送邮件的工具,好东西,我们当然可以拿来用。

一,用phpmailer发送邮件

<?php
include "class.phpmailer.php";    //包函邮件发送类

//邮件发送
function send_mail($frommail,$tomail,$subject,$body,$ccmail,$bccmail) {
 $mail = new PHPMailer();
 $mail->IsSMTP();                            // 经smtp发送
 $mail->Host     = "smtp.163.com";           // SMTP 服务器
 $mail->SMTPAuth = true;                     // 打开SMTP 认证
 $mail->Username = "zhangyinghf@163.com";    // 用户名
 $mail->Password = "**********";          // 密码
 $mail->From     = $frommail;                  // 发信人
 $mail->FromName = "suport of 51yip";        // 发信人别名
 $mail->AddAddress($tomail);                 // 收信人
 if(!empty($ccmail)){
 $mail->AddCC($ccmail);                    // cc收信人
 }
 if(!empty($bccmail)){
 $mail->AddCC($bccmail);                   // bcc收信人
 }
 $mail->WordWrap = 50;
 $mail->IsHTML(true);                            // 以html方式发送
 $mail->Subject  = $subject;                 // 邮件标题
 $mail->Body     = $body;                    // 邮件内空
 $mail->AltBody  =  "请使用HTML方式查看邮件。";
 return $mail->Send();
}

$result= send_mail("zhangyinghf@163.com","xtaying@gmail.com","test","test");
?>

phpmailer的功能很多,非常的全面,你可以打开class.phpmailer.php文件看一下,他里面带了好多功能,发邮件常用的功能它都有。大致如下:

  1. 在发送邮时指定多个收件人,抄送地址,暗送地址和回复地址
  2. 支持多种邮件编码包括:8bit,base64,binary和quoted-printable
  3. 支持SMTP验证
  4. 支持冗余SMTP服务器
  5. 支持带附件的邮件和Html格式的邮件
  6. 自定义邮件头
  7. 支持在邮件中嵌入图片
  8. 调试灵活
  9. 经测试兼容的SMTP服务器包括:Sendmail,qmail,Postfix,Imail,Exchange等
  10. 可运行在任何平台之上

二,用smtp发送邮件

<?php
include "smtp.php";

$smtpserver = "smtp.163.com";                     //SMTP服务器
$smtpserverport = 25;                             //SMTP服务器端口
$smtpusermail = "zhangyinghf@163.com";            //SMTP服务器的用户邮箱
$smtpuser = "zhangyinghf@163.com";                //SMTP服务器的用户帐号
$smtppass = "*********";                      //SMTP服务器的用户密码
$smtpemailto = "xtaying@gmail.com";               //发送给谁

$mailsubject = "账号分配";                                                    //邮件主题
$mailbody = "<h1>this is a test";                //邮件内容
$mailtype = "HTML";                              //邮件格式(HTML/TXT),TXT为文本邮件

$smtp = new smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);//这里面的一个true是表示使用身份验证,否则不使用身份验证.
$smtp->debug = true;//是否显示发送的调试信息
$mailsubject = mb_convert_encoding($mailsubject, "gb2312", "utf-8");
$mailbody = mb_convert_encoding($mailbody, "gb2312", "utf-8");
$result=    $smtp->sendmail($smtpemailto, $smtpusermail,$mailsubject, $mailbody, $mailtype);
?>

smtp的功能少多了,不过能满足基本的需求。如果有需要的朋友,加入qq群:72949212,群共享里面有。



转载请注明
作者:海底苍鹰
地址:http://blog.51yip.com/php/910.html

72 条评论

  1. 张映 留言

    发了。

  2. Yoha 留言

    谢谢你的例子!
    试了下,可以发送到填写进的邮箱了。:D

    我前天搜索了下,发现发布出去的原因是由于服务器PHP没有开启“Support Socket”。之后联系了空间商,让他们帮换了个开启这个功能的服务器之后,就可以发送了。

    不过总是发到邮箱的“垃圾箱”里。--!

    “http://www.regalbali.com/contact.php” 这个是我最后做好的。

    你邮件里提到“不能注册”,我不清楚这情况哦~没试过在这里注册。

  3. Yoha 留言

    是“发现发不出去的原因”, 上面写错了一个字:P

  4. yizhui 留言

    能发我一份么!!! 能用QQ的邮箱发送么!?~

  5. 天行 留言

    找了可多资料,都不行,希望博主的这个可以成功,请给我也发一份吧!
    834058309@qq.com

  6. 张映 留言

    已发

  7. 雨杭 留言

    您好 下面是我的代码
    $mail = new PHPMailer(); //new一个PHPMailer对象出来
    $body = eregi_replace("[\]",'',$body); //对邮件内容进行必要的过滤
    $mail->CharSet ="UTF-8";//设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码
    $mail->IsSMTP(); // 设定使用SMTP服务
    // $mail->SMTPDebug = 1; // 启用SMTP调试功能
    // 1 = errors and messages
    // 2 = messages only
    $mail->SMTPAuth = true; // 启用 SMTP 验证功能
    $mail->SMTPSecure = "ssl"; // 安全协议
    $mail->Host = "192.168.1.203"; // SMTP 服务器
    $mail->Port = 25; // SMTP服务器的端口号
    $mail->Username = "13823769366@163.com"; // SMTP服务器用户名
    $mail->Password = "yuhang8997950"; // SMTP服务器密码
    $mail->From = "13823769366@163.com";
    // $mail->SetFrom('admin@jiucool.com', '发件人名称');
    // $mail->AddReplyTo("admin@jiucool.com","邮件回复人的名称");
    $mail->Subject = $subject;
    $mail->AltBody = "To view the message, please use an HTML compatible email viewer! - From http://www.jiucool.com"; // optional, comment out and test
    $mail->MsgHTML($body);
    $address = $to;
    $mail->AddAddress($address, "收件人名称");
    运行时 错误信息:
    eeCould not instantiate mail function. Mailer Error: Could not instantiate mail function.
    请问大哥该如何决解 小弟刚接触用php发邮件 现在项目需要bcc 求大哥给我例子 小弟不胜感激

  8. 花仙子 留言

    能给我发来一份吗?我很想要得,谢了!

  9. djl 留言

    我想要一个smtp发邮件的smtp.php文件和例子,谢谢

  10. lala 留言

    你好,博主。
    我是初学者可以发一份实例吗?
    关于gmail的smtp
    谢谢

  11. 张映 留言

    网上很多用gmail发邮件的例子,google一下,google邮箱是https的,一般情况下smtp走的是25端口,但gmail不是,如果我没有记错的话。如果想用gmail发邮件,php.ini要加上php_openssl.dll,如果是linux系统加上openssl.so

  12. ruilina 留言

    你好博主,我是个PHP新手,我用phpmailer给QQ发邮件总是发到垃圾箱里去 我也加了那个sll,但是还是不行 你能发给我个样例吗?谢谢了!!!

  13. gnep 留言

    hello,google到博主的文章,想请教一下phpmailer的AddBCC和AddCC方法只能应用在win32系统下吗?linux下应该如何添加一个抄送?
    我想试着在header里加入抄送,但是不知道应该怎么写。
    我试过 mailer->addheader("Bcc:bcc@example.com\r\n");但是不行,没有发出密送

  14. 张映 留言

    phpmailer功能很全,抄送功能肯定有,你看一下phpmailer的说明文档。

  15. 陈红彬 留言

    您好,我是一个php初学者,刚上班公司叫我做个webmail,我不知道改怎么实现邮件的发送,能给我发一个例子么?简单的就行,谢谢!

  16. 黄通 留言

    博主好,在本机windows环境下运行成功的代码,在linus虚拟空间下运行失败这是怎么回事?这是空间的phpinfo():http://www.yellowthrough.com/misstheday_for_test/process/mail.php
    错误提示:请输入至少一个有效的收件地址(大概意思如此,我用的是qq邮箱)
    求大神解释

  17. 张映 留言

    phpmailer会去调用邮件服务器,不管是别人还是自己的。只要mail函数能用,就没什么问题。qq的防垃圾邮件做的相当出色,换个邮件试一下。

  18. 渊哥 留言

    两个发送的方式, 希望把例子和工具都发我邮箱, 谢谢。 把你博文都看了一遍 刚才花了几个小时

  19. ALLEN 留言

    楼主能发份给我么 572212420@qq.com 谢谢

  20. liuliu 留言

    楼主您好, 我想学习下, 能否发下列子, 麻烦了

  21. 金子必发光 留言

    我需要,发给我!!

  22. 罗过的 留言

    楼主为什么我的总是显示Could not instantiate mail function。我都快被逼疯了,楼主可加我QQ解答一下,谢了~