使用PHP发送邮件

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


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

原文地址:https://www.cnblogs.com/shaohuixia/p/5480624.html