使用封装SMTP协议的邮件类

使用PEAR扩展中的Mail类,功能强大:可以支持纯文本、HTML格式的邮件;各字段都可设置编码,正确配置不会出现中文乱码情况;可以支持附件等等。

在服务器可以使用 pear install Mail 命令快速安装,没有足够服务器权限的同学也可以直接下载类的PHP源码包含进来就可以了。

注:Mail类依赖  Net/SMTP.php  和 Mail/mime.php ,要一块下载,使用时一块包含进来。

详细安装方法可以在官网查看,http://pear.php.net/package/Mail

下面我举例说明一下在Mail类发送邮件的方法吧,网上其他SMTP邮件类使用方法一块也类似,可以参考:

  1. <?php
  2. // Pear Mail 扩展
  3. require_once('Mail.php');
  4. require_once('Mail/mime.php');
  5. require_once('Net/SMTP.php');
  6. $smtpinfo = array();
  7. $smtpinfo["host"] = "smtp.163.com";//SMTP服务器
  8. $smtpinfo["port"] = "25"; //SMTP服务器端口
  9. $smtpinfo["username"] = "username@163.com"; //发件人邮箱
  10. $smtpinfo["password"] = "password";//发件人邮箱密码
  11. $smtpinfo["timeout"] = 10;//网络超时时间,秒
  12. $smtpinfo["auth"] = true;//登录验证
  13. //$smtpinfo["debug"] = true;//调试模式
  14. // 收件人列表
  15. $mailAddr = array('receiver@163.com');
  16. // 发件人显示信息
  17. $from = "Name <username@163.com>";
  18. // 收件人显示信息
  19. $to = implode(',',$mailAddr);
  20. // 邮件标题
  21. $subject = "这是一封测试邮件";
  22. // 邮件正文
  23. $content = "<h3>随便写点什么</h3>";
  24. // 邮件正文类型,格式和编码
  25. $contentType = "text/html; charset=utf-8";
  26. //换行符号 Linux: \n  Windows: \r\n
  27. $crlf = "\n";
  28. $mime = new Mail_mime($crlf);
  29. $mime->setHTMLBody($content);
  30. $param['text_charset'] = 'utf-8';
  31. $param['html_charset'] = 'utf-8';
  32. $param['head_charset'] = 'utf-8';
  33. $body = $mime->get($param);
  34. $headers = array();
  35. $headers["From"] = $from;
  36. $headers["To"] = $to;
  37. $headers["Subject"] = $subject;
  38. $headers["Content-Type"] = $contentType;
  39. $headers = $mime->headers($headers);
  40. $smtp =& Mail::factory("smtp", $smtpinfo);
  41. $mail = $smtp->send($mailAddr, $headers, $body);
  42. $smtp->disconnect();
  43. if (PEAR::isError($mail)) {
  44. //发送失败
  45. echo 'Email sending failed: ' . $mail->getMessage()."\n";
  46. }
  47. else{
  48. //发送成功
  49. echo "success!\n";
  50. }

如果从网上找的SMTP类都是高度封装的,所以使用起来比上面会更简单,但使用方法都是比较相似的

使用PHP发送邮件的更多相关文章

  1. 利用SQLServer数据库发送邮件

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 这个应用案例很多,一般都是预警,比如异常连接的时候,或者数据库报错的时候.等等,,, 先 ...

  2. C# 多种方式发送邮件(附帮助类)

    因项目业务需要,需要做一个发送邮件功能,查了下资料,整了整,汇总如下,亲测可用- QQ邮箱发送邮件 #region 发送邮箱 try { MailMessage mail = new MailMess ...

  3. JavaMail发送邮件

    发送邮件包含的内容有: from字段  --用于指明发件人 to字段      --用于指明收件人 subject字段  --用于说明邮件主题 cc字段     -- 抄送,将邮件发送给收件人的同时抄 ...

  4. 技术笔记:Indy控件发送邮件

    工作中有个需求需要发送邮件,因为使用的delphi6,所以自然就选择了indy组件,想想这事挺简单的.实现的过程倒是简单,看着Indy的demo很快就完了,毕竟也不是很复杂的功能. 功能要求: 1.压 ...

  5. mono中发送邮件并保存本次收件人的地址

    在ios端mono开发中,发送邮件可以选择调用ios原生email程序.有两种方式实现这种功能,一是程序跳转到ipad中email程序,另外一种是将发送邮件的界面在自己应用里弹出. 首先第一种方式的代 ...

  6. Azure 上通过 SendGrid 发送邮件

    SendGrid 是什么? SendGrid 是架构在云端的电子邮件服务,它能提供基于事务的可靠的电子邮件传递. 并且具有可扩充性和实时分析的能力.常见的用例有: 自动回复用户的邮件 定期发送信息给用 ...

  7. 使用nodemailer发送邮件

    今天闲来无事,一时兴起看了下如果使用javascript来发送邮件.经过调研发现,nodeJs可以实现这个功能. 具体的步骤如下: 1.安装依赖 npm install nodemailer -g ( ...

  8. ASP.NET MVC 发送邮件(异步)

    最近写邮件发送搞死人了,最后的结果,真是醉了,现整理如下: 网上一搜一大把,到处都是.NET发送邮件的方法,我这里也大同小异的写了一个. 准备一个MailHelper.cs通用类,如下所示: 重要的命 ...

  9. MVC5发送邮件注册

    #region 发送邮件 //填写电子邮件地址,和显示名称 System.Net.Mail.MailAddress from = new System.Net.Mail.MailAddress(&qu ...

  10. ASP.NET用QQ,网易发送邮件以及添加附件

    教程:ASP.NET用QQ,网易发送邮件以及添加附件 这是我用QQ邮箱出现的异常: 命令顺序不正确. 服务器响应为:Error: need EHLO and AUTH first !无法从传输连接中读 ...

随机推荐

  1. WGZX:javaScript 学习心得--1

    标签: javascriptiframedreamweaver浏览器htmltable 2008-09-11 10:50 1071人阅读 评论(0) 收藏 举报  分类: UI(21)  1,docu ...

  2. js判断ie版本号

     jQuery 2.0 去除了对浏览器版本号的判断(它推荐特性检测),这里是一个老外写的原生判断方法,这段代码着实巧妙!既简介.有向后兼容!一般做法都是:正则搜索 USER_AGENT :但因为历史原 ...

  3. crossvcl.com - 用VCL开发MacOS软件

    还没正式发布.用力戳 http://crossvcl.com/ 消息来源:Delphi G+ Group.具体信息还没完全披露,但是可以肯定的是,不是通过FireMonkey,而是通过原生的MacOS ...

  4. Qt 无边框窗体改变大小 完美实现(全部自己实现)

    近期,做项目用到无边框窗体,令人蛋疼的是无边框窗体大小的改变要像右边框那样,上下左右四周,而且要流畅. 网上也找了些代码,发现居然还要连接到windows事件,这显然不合常理,后来自己新建了demo, ...

  5. C#5.0 .net 4.5示例

    //filename: MathOperations.cs using System; using System.Collections.Generic; using System.Linq; usi ...

  6. MongoDB聚合查询

    1.count:查询记录条数 db.user.count() 它也跟find一样可以有条件的 db.user.count({}) 2.distinct:用来找出给定键的所有不同的值 db.user.d ...

  7. git push错误解决方案

    错误提示: error: The requested URL returned error: 403 Forbidden while accessing https://nanfei9330@gith ...

  8. Excel导入数据到Sql server 中出错:“文本被截断,或者一个或多个字符在目标代码页中没有匹配项”

    从Excel导入数据到Sql server 时,由于表中的数据有的很长,导入时出现如下错误(如果数据不是很长,255内以内,则不会出现错误): 出错原因: SQL Server的导入导出为了确定数据表 ...

  9. focus 、blur和focusin,focusout的区别

    $('input').focus(function(){///当前元素触发事件(特指表单) }); $('input').blur(function(){//当前元素触发事件 }); $('div') ...

  10. PHP for 循环

    <!DOCTYPE html> <html> <body> <?php for ($x=0; $x<=10; $x++) { echo "数字 ...