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的功能少多了,不过能满足基本的需求。如果有需要的朋友,在这里留个言,我连同例子和工具一起发给你。

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

57 条评论

  1. sunicc 留言

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

    [回复]

    张映

    张映 回复():

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

    [回复]

    特别着急 回复():

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

    [回复]

  2. 彭军 留言

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

    [回复]

  3. 彭军 留言

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

    [回复]

    张映

    张映 回复():

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

    [回复]

  4. Richard 留言

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

    [回复]

    张映

    张映 回复():

    已发送到你的yahoo.cn邮箱

    [回复]

  5. xujian2010 留言

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

    [回复]

    张映

    张映 回复():

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

    [回复]

    xujian2010 回复():

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

    [回复]

    xujian2010 回复():

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

    [回复]

    张映

    张映 回复():

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

    [回复]

    xujian2010 回复():

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

    [回复]

    张映

    张映 回复():

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

    [回复]

    xujian2010 回复():

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

    [回复]

    whylhy 回复():

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

    [回复]

    SyngeVan 回复():

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

    [回复]

    张映

    张映 回复():

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

    [回复]

    whylhy 回复():

    您可以给我发一封吧

    [回复]

  6. Jessa 留言

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

    [回复]

  7. 蓝宇 留言

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

    [回复]

  8. 李鑫 留言

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

    [回复]

  9. 程佩 留言

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

    [回复]

  10. juanzi 留言

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

    [回复]

  11. 好东西我要 留言

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

    [回复]

    张映

    张映 回复():

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

    [回复]

  12. 施耀靓 留言

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

    [回复]

  13. 张映 留言
    张映

    要源码的,附上邮件地址

    [回复]

  14. 何峥 留言

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

    [回复]

    张映

    张映 回复():

    已发送

    [回复]

  15. 小撒 留言

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

    [回复]

  16. 甜蜜教主 留言

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

    [回复]

    张映

    张映 回复():

    邮件已发送

    [回复]

    甜蜜教主 回复():

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

    [回复]

  17. chegnJery 留言

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

    [回复]

    张映

    张映 回复():

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

    [回复]

  18. anylzer 留言

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

    [回复]

    张映

    张映 回复():

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

    [回复]

  19. anylzer 留言

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

    [回复]

    张映

    张映 回复():

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

    [回复]

  20. 阿勇 留言

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

    [回复]

  21. lwwwer 留言

    发我一份

    [回复]

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

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

    [回复]

    张映

    张映 回复():

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

    [回复]

    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();

    [回复]

    张映

    张映 回复():

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

    [回复]

  23. Jennifer 留言

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

    [回复]

    张映

    张映 回复():

    发了

    [回复]

  24. Yoha 留言

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

    [回复]

    张映

    张映 回复():

    发了。

    [回复]

    Yoha 回复():

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

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

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

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

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

    [回复]

    Yoha 回复():

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

    [回复]

  25. yizhui 留言

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

    [回复]

  26. 天行 留言

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

    [回复]

    张映

    张映 回复():

    已发

    [回复]

  27. 雨杭 留言

    您好 下面是我的代码
    $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 求大哥给我例子 小弟不胜感激

    [回复]

留下评论

留下评论
  • (必需)
  • (必需) (will not be published)
  • (必需)   3X3=?