当前位置:七道奇文章资讯网站建设网站编程
日期:2010-11-06 08:48:00  来源:本站整理

php mail 发送邮件代码[网站编程]

赞助商链接



  本文“php mail 发送邮件代码[网站编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

mail 发送邮件代码
本款php发送邮件代码他操纵了php安闲的邮件发送函数mail举行邮件发送的,他会操纵二种试一是判断mail函数能否可用,假如行就操纵它来发送不然fsockopen来操作.
 

  1. */  
  2.  
  3. class email  
  4. {  
  5. function email()  
  6. {  
  7. $this->__construct();  
  8. }  
  9.  
  10. function __construct()  
  11. {  
  12. @define('charset','gbk');  
  13. $this->set(mail_server, mail_port, mail_user, mail_pwd,mail_type);  
  14. $this->auth = 1;  
  15. }  
  16.  
  17. function set($server$port$user$password$type = 1, $delimiter = 1, $mailusername = 0)  
  18. {  
  19. $this->type = $type;  
  20. $this->server = $server;  
  21. $this->port = $port;  
  22. $this->user = $user;  
  23. $this->password = $password;  
  24. $this->delimiter = $delimiter == 1 ? "rn" : ($delimiter == 2 ? "r" : "n");  
  25. $this->mailusername = $mailusername;  
  26. }  
  27.  
  28. function send($email_to$email_subject$email_message$email_from = '')  
  29. {  
  30. global $dircms;  
  31. $email_to=iconv("utf-8""gbk"$email_to);  
  32. $email_subject=iconv("utf-8""gbk"$email_subject);  
  33. $email_message=iconv("utf-8""gbk"$email_message);  
  34. $email_subject = '=?'.charset.'?b?'.base64_encode(str_replace("r"''$email_subject)).'?=';  
  35. $email_message = str_replace("rn."" rn.."str_replace("n""rn"str_replace("r""n"str_replace("rn""n"str_replace("nr""r"$email_message)))));  
  36. $adminemail = $this->type == 1 ? $dircms['mail_user'] : $dircms['mail_user'];  
  37. $email_from = $email_from == '' ? '=?'.charset.'?b?'.base64_encode($dircms['site_name'])."?= <$adminemail>" : (preg_match('/^(.+?) <(.+?)>$/',$email_from$from) ? '=?'.charset.'?b?'.base64_encode($from[1])."?= <$from[2]>" : $email_from);  
  38. $emails = explode(','$email_to);  
  39. foreach($emails as $touser)  
  40. {  
  41. $tousers[] = preg_match('/^(.+?) <(.+?)>$/',$touser$to) ? ($this->mailusername ? '=?'.charset.'?b?'.base64_encode($to[1])."?= <$to[2]>" : $to[2]) : $touser;  
  42. }  
  43. $email_to = implode(','$tousers);  
  44. $headers = "from: $email_from{$this->delimiter}x-priority: 3{$this->delimiter}x-mailer: dircms {$this->delimiter}mime-version: 1.0{$this->delimiter}content-type: text/html; charset=".charset."{$this->delimiter}";  
  45. if($this->type == 1)  
  46. {  
  47. return $this->smtp($email_to$email_subject$email_message$email_from$headers);  
  48. }  
  49. elseif($this->type == 2)  
  50. {  
  51. return @mail($email_to$email_subject$email_message$headers);  
  52. }  
  53. else 
  54. {  
  55. ini_set('smtp'$this->server);  
  56. ini_set('smtp_port'$this->port);  
  57. ini_set('sendmail_from'$email_from);  
  58. return @mail($email_to$email_subject$email_message$headers);  
  59. }  
  60. }  
  61.  
  62. function smtp($email_to$email_subject$email_message$email_from = ''$headers = '')  
  63. {  
  64. global $dircms;  
  65. if(!$fp = fsockopen($this->server, $this->port, $errno$errstr, 10))  
  66. {  
  67. $this->errorlog('smtp'"($this->server:$this->port) connect - unable to connect to the smtp server", 0);  
  68. return false;  
  69. }  
  70. stream_set_blocking($fp, true);  
  71. $lastmessage = fgets($fp, 512);  
  72. if(substr($lastmessage, 0, 3) != '220')  
  73. {  
  74. $this->errorlog('smtp'"$this->server:$this->port connect - $lastmessage", 0);  
  75. return false;  
  76. }  
  77. fputs($fp"ehlo dircmsrn");  
  78. $lastmessage = fgets($fp, 512);  
  79. if(substr($lastmessage, 0, 3) != 220 && substr($lastmessage, 0, 3) != 250)  
  80. {  
  81. $this->errorlog('smtp'"($this->server:$this->port) helo/ehlo - $lastmessage", 0);  
  82. return false;  
  83. }  
  84. while(1)  
  85. {  
  86. if(substr($lastmessage, 3, 1) != '-' || emptyempty($lastmessage))  
  87. {  
  88. break;  
  89. }  
  90. $lastmessage = fgets($fp, 512);  
  91. }  
  92. fputs($fp"auth loginrn");  
  93. $lastmessage = fgets($fp, 512);  
  94. if(substr($lastmessage, 0, 3) != 334)  
  95. {  
  96. $this->errorlog('smtp'"($this->server:$this->port) auth login - $lastmessage", 0);  
  97. return false;  
  98. }  
  99. fputs($fpbase64_encode($this->user)."rn");  
  100. $lastmessage = fgets($fp, 512);  
  101. if(substr($lastmessage, 0, 3) != 334)  
  102. {  
  103. $this->errorlog('smtp'"($this->server:$this->port) username - $lastmessage", 0);  
  104. return false;  
  105. }  
  106. fputs($fpbase64_encode($this->password)."rn");  
  107. $lastmessage = fgets($fp, 512);  
  108. if(substr($lastmessage, 0, 3) != 235)  
  109. {  
  110. $this->errorlog('smtp'"($this->server:$this->port) password - $lastmessage", 0);  
  111. return false;  
  112. }  
  113. fputs($fp"mail from: <".preg_replace("/.*<(.+?)>.*/""1"$email_from).">rn");  
  114. $lastmessage = fgets($fp, 512);  
  115. if(substr($lastmessage, 0, 3) != 250)  
  116. {  
  117. fputs($fp"mail from: <".preg_replace("/.*<(.+?)>.*/""1"$email_from).">rn");  
  118. $lastmessage = fgets($fp, 512);  
  119. if(substr($lastmessage, 0, 3) != 250)  
  120. {  
  121. $this->errorlog('smtp'"($this->server:$this->port) mail from - $lastmessage", 0);  
  122. return false;  
  123. }  
  124. }  
  125. $email_tos = array();  
  126. $emails = explode(','$email_to);  
  127. foreach($emails as $touser)  
  128. {  
  129. $touser = trim($touser);  
  130. if($touser)   
  131. {  
  132. fputs($fp"rcpt to: <".preg_replace("/.*<(.+?)>.*/""1"$touser).">rn");  
  133. $lastmessage = fgets($fp, 512);  
  134. if(substr($lastmessage, 0, 3) != 250)  
  135. {  
  136. fputs($fp"rcpt to: <".preg_replace("/.*<(.+?)>.*/""1"$touser).">rn");  
  137. $lastmessage = fgets($fp, 512);  
  138. $this->errorlog('smtp'"($this->server:$this->port) rcpt to - $lastmessage", 0);  
  139. return false;  
  140. }  
  141. }  
  142. }  
  143. fputs($fp"datarn");  
  144. $lastmessage = fgets($fp, 512);  
  145. if(substr($lastmessage, 0, 3) != 354)  
  146. {  
  147. $this->errorlog('smtp'"($this->server:$this->port) data - $lastmessage", 0);  
  148. }  
  149. $headers .= 'message-id: <'.gmdate('ymdhs').'.'.substr(md5($email_message.microtime()), 0, 6).rand(100000, 999999).'@'.$_server['http_host'].">{$this->delimiter}";  
  150. fputs($fp"date: ".gmdate('r')."rn");  
  151. fputs($fp"to: ".$email_to."rn");  
  152. fputs($fp"subject: ".$email_subject."rn");  
  153. fputs($fp$headers."rn");  
  154. fputs($fp"rnrn");  
  155. fputs($fp"$email_messagern.rn");  
  156. fputs($fp"quitrn");  
  157. return true;  
  158. }  
  159.  
  160. function errorlog($type$message$is)  
  161. {  
  162. $this->error[] = array($type$message$is);  
  163. }  
  164. }  
  165.  

  以上是“php mail 发送邮件代码[网站编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 编写PHP代码总结
  • 10个风趣的 PHP 教程
  • PHP汉字转换拼音的类
  • 来点新手PHP学习心得
  • php应用readfile函数给躲藏下载文件地址增添权限判
  • PHP小研究拿出来和大家分享
  • 10 个有意思的 PHP 教程
  • PHP常常简单记乱的知识
  • PHP入门指导:若何学习PHP?
  • PHP中文件包含语句的辨别
  • PHP浮点数显示和转成字符串
  • PHP的chm手册打不开怎么办
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .