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/comment-page-1

72 条评论

  1. sunicc 留言

    我想要一个邮件发送的例子
    我在我的新浪邮箱已经启动了
    可以用我的新浪邮箱发送
    以前有个例子给丢了
    O(∩_∩)O谢谢 !

  2. 张映 留言

    已经发了,按你的要求,改成用新浪的了。

  3. 彭军 留言

    嗯。 我们公司那个会员注册功能也是用的smtp 很好用
    这里在复习一下。 看看你的demo 呵呵。麻烦你给我发一份吧。谢谢!~

  4. 彭军 留言

    哥哥! 你博客注册还是不能用,杯具

  5. 张映 留言

    我在后台,看到你已经注册了。不能登录吗?我自己注册一个试试,可以注册的。

  6. Richard 留言

    搞了半天都没有搞成功哦,真不知道怎么搞了,能不能发一个实例给我,只要改一改就可以用的哪一种.谢谢

  7. 张映 留言

    已发送到你的yahoo.cn邮箱

  8. xujian2010 留言

    有没有用phpmailer发送带附件的例子啊,最好前台和后台都有啊,谢谢了。

  9. 张映 留言

    有的,公司没有,回去找找,到时发你邮箱。

  10. xujian2010 留言

    十分感谢你啊,我收到了你的邮件。以后有机会还会跟您多交流的啊,呵呵。

  11. xujian2010 留言

    我看了您发给我的例子,没有带附件上传啊,能否帮忙找下啊,急需,谢谢。

  12. 张映 留言

    有附件的,phpmail.tar.gz(16k)

  13. xujian2010 留言

    呵呵,收到了。貌似您的附近忘记上传了吧,和上次的一样啊。麻烦您在发一次咯。

  14. 张映 留言

    附件绝对有的,你看一下,是不是被你们的内部网络给过滤掉了。

  15. Jessa 留言

    我看了一下你写的这些文章,我觉得你真的很了不起,不知道你学php多久了?我也是从事php开发的,在开发的过程中遇到很多和发送邮件有关的问题,今天看你的这篇文章,简直是让人太高兴了。以前很多迷惑的东西,有可能以后就不再迷惑了。真的希望能够好好的请教一下你,呵呵!

  16. xujian2010 留言

    谢谢你啊。带附件上传的功能,我已经实现了,没有我想的那么复杂。还想请教您的是,您做过富文本内容的邮件发送吗?就是使用phpmailer啊,这个不是说支持富文本发送的嘛。有思路也可以啊,帮帮忙忙吧。谢谢了。

  17. SyngeVan 留言

    也给我发一份上传附件的实例吧,谢谢。

  18. 蓝宇 留言

    您好,我要用这个方式 发送带附件的 邮件,请求您的帮助

  19. 李鑫 留言

    我想要一份源代码 谢谢啦 最近也在研究这个东西

  20. 程佩 留言

    能不能把你的例子给我发一份啊 我现在正在做这个发邮件的功能 很急 谢谢哦

  21. juanzi 留言

    请问你的带附件的发邮件功能 ,附件可以下载不?给我发一份看下哈,谢谢了!

  22. 好东西我要 留言

    我要
    发我邮箱好不
    wllabs@163.com

  23. whylhy 留言

    您可以给我发一封吧

  24. whylhy 留言

    您可以发我一分嘛,带附件的邮件发送,我qq:641573418

  25. 张映 留言

    已发送,最近工作比较忙,很少看自己的博客,不好意思

  26. 张映 留言

    已发送,最近工作比较忙,不好意思

  27. 施耀靓 留言

    很好呀! 不过我发送不成功。你能给个例子吗?

  28. 张映 留言

    要源码的,附上邮件地址

  29. 何峥 留言

    您好,我要用这个方式 发送带附件的 邮件,请求您的帮助

  30. 张映 留言

    已发送

  31. 小撒 留言

    你好,我一直在找一个网友留言后能把留言发送到邮箱的程序,找来找去找到你这里来了。能否给做一个实例发给我,我比较菜的。

  32. 甜蜜教主 留言

    您好,在网上搜了很多关于phpmailer的例子,自己也尝试了几次,最后虽然是显示成功发送邮件,但是我查看我的邮箱,并没有什么邮件,想问一下这是为什么?

  33. 张映 留言

    邮件已发送

  34. 甜蜜教主 留言

    谢谢你的例子!我还有一个需求,就是邮件附带附件,不知道这个例子里有没有相应功能的代码???谢谢!

  35. chegnJery 留言

    感觉不错啊!怎么我写就不行呢?跟你写的差不多!怎么我运行就是显示Could not connect to SMTP host,我写的地址的对的~怎么就连接不上呢?你能否回答我的问题?

  36. 张映 留言

    连sina,163是没有问题的,我测试都通过了。如果你是连的gmail的话,要加ssl的。有的邮件服务器,是不给通过程序去连他们邮件服务器的。
    会给他们的mail服务器,带来很大的负担。

  37. anylzer 留言

    您的smtp,用的不是joomla!自带的smtp类吧?或者版本不对?

  38. anylzer 留言

    另外你的博客的时间不对,差八个小时,应该修改一下php.ini的时区,或者在用到时间的地方date_default_timezone_set('PRC');

  39. 张映 留言

    smtp这个class是老早以前从网上下的,发邮件是没有问题的。不知道你指的版本不对是什么意思?

  40. 张映 留言

    服务器放在美国,差了8个时区,这个没调

  41. 阿勇 留言

    谢谢你 ,请你也把 引用的那个类一起发给我 吧

  42. lwwwer 留言

    发我一份

  43. 特别着急 留言

    我这怎么老是报错啊?两天了都,急死人了!
    Could not instantiate mail function. Message could not be sent.
    Mailer Error: Could not instantiate mail function.

  44. 总是报错,急死人了 留言

    Could not instantiate mail function. Message could not be sent.
    Mailer Error: Could not instantiate mail function.
    这是哪儿有问题啊,怎么个情况啊,急死了

  45. 张映 留言

    发了一个例子给你,改个用户和密码就能用,新浪,163测试没问题,如果有自己的邮件服务器,就用自己的。

  46. xiaoqiang 留言

    你在“用phpmailer发送邮件”,加多一句,include "smtp.php";
    这些家火都是乱搞的,在5.1版本,phpmail里面包含了“smtp.php”

    看下面
    protected function SmtpSend($header, $body) {
    require_once $this->PluginDir . 'class.smtp.php';
    $bad_rcpt = array();

  47. 张映 留言

    上面是二种方法,第二种方法,只要加载一个文件smtp.php就行了。不是将二个混在一起。

  48. Jennifer 留言

    博主能不能把例子和工具一起发给我啊? 谢谢!!!!!

  49. 张映 留言

    发了

  50. Yoha 留言

    你好~博主~请问可以发我一份么?
    我是初学的。
    这两天一直在研究这个邮件发送,在google上找了很久,都没有可以实现这个功能的--
    有找到css-trics上一个contact form教程,但是照着做,也不能实现。
    纠结不知道哪里出错