·您当前的位置:首页 > 技术教程 > PHP教程 >

[PHP]php做在线邮件发送功能源代码实例

时间:2014-08-13 18:46酷播
php 做注册邮件发送成功,[PHP]php做在线邮件发送功能源代码实例

[PHP]php做在线邮件发送功能源代码实例

  1. 01.$smtpserver = "smtp.163.com";//SMTP服务器   
  2. 02.        $smtpserverport =25;//SMTP服务器端口   
  3. 03.        $smtpusermail = "haolijun206@163.com";//SMTP服务器的用户邮箱   
  4. 04.        $smtpemailto = $email;//发送给谁   
  5. 05.        $smtpuser = "haolijun206@163.com";//SMTP服务器的用户帐号   
  6. 06.        $smtppass = "523132661";//SMTP服务器的用户密码   
  7. 07.        $mailsubject = "第一企业,注册成功";//邮件主题   
  8. 08.        $mailbody = file_get_contents("email.html");//读取html文件   
  9. 09.        $mailbody = str_replace("{name}",$username,$mailbody);//替换变量   
  10. 10.        $mailbody = str_replace("{email}",$email,$mailbody);   
  11. 11.        $mailbody = str_replace("{password}",$password,$mailbody);   
  12. 12.        $mailbody = str_replace("{mobile}",$mobile,$mailbody);   
  13. 13.        $mailtype = "HTML";//邮件格式(HTML/TXT),TXT为文本邮件   
  14. 14.           
  15. 15.        //邮件格式(HTML/TXT),TXT为文本邮件   
  16. 16.        ##########################################   
  17. 17.        $smtp = new smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);//这里面的一个true是表示使用身份验证,否则不使用身份验证.   
  18. 18.        //$smtp->debug = false;//是否显示发送的调试信息   
  19. 19.        $smtp->sendmail($smtpemailto,$smtpusermail,$mailsubject,$mailbody,$mailtype);   
  20. 20.以上是接受表单提交值的部分   
  21. 21.   
  22. 22.   
  23. 23.一下是邮件服务器的类,直接调用就行了email.class.php   
  24. 24.   
  25. 25.<?   
  26. 26.class smtp   
  27. 27.{   
  28. 28./* Public Variables */   
  29. 29.var $smtp_port;   
  30. 30.var $time_out;   
  31. 31.var $host_name;   
  32. 32.var $log_file;   
  33. 33.var $relay_host;   
  34. 34.var $debug;   
  35. 35.var $auth;   
  36. 36.var $user;   
  37. 37.var $pass;   
  38. 38.   
  39. 39./* Private Variables */   
  40. 40.var $sock;   
  41. 41.   
  42. 42./* Constractor */   
  43. 43.function smtp($relay_host = "", $smtp_port = 25,$auth = false,$user,$pass)   
  44. 44.{   
  45. 45.$this->debug = FALSE;   
  46. 46.$this->smtp_port = $smtp_port;   
  47. 47.$this->relay_host = $relay_host;   
  48. 48.$this->time_out = 30; //is used in fsockopen()   
  49. 49.#   
  50. 50.$this->auth = $auth;//auth   
  51. 51.$this->user = $user;   
  52. 52.$this->pass = $pass;   
  53. 53.#   
  54. 54.$this->host_name = "localhost"; //is used in HELO command   
  55. 55.$this->log_file ="";   
  56. 56.   
  57. 57.$this->sock = FALSE;   
  58. 58.}   
  59. 59.   
  60. 60./* Main Function */   
  61. 61.function sendmail($to, $from, $subject = "", $body = "", $mailtype, $cc = "", $bcc = "", $additional_headers = "")   
  62. 62.{   
  63. 63.$mail_from = $this->get_address($this->strip_comment($from));   
  64. 64.$body = ereg_replace("(^|(\r\n))(\\.)", "\\1.\\3", $body);   
  65. 65.$header = '';   
  66. 66.$header ."MIME-Version:1.0\r\n";   
  67. 67.if($mailtype=="HTML"){   
  68. 68.$header ."Content-Type:text/html\r\n";   
  69. 69.}   
  70. 70.$header ."To: ".$to."\r\n";   
  71. 71.if ($cc != "") {   
  72. 72.$header ."Cc: ".$cc."\r\n";   
  73. 73.}   
  74. 74.$header ."From: $from<".$from.">\r\n";   
  75. 75.$header ."Subject: ".$subject."\r\n";   
  76. 76.$header .= $additional_headers;   
  77. 77.$header ."Date: ".date("r")."\r\n";   
  78. 78.$header ."X-Mailer:By Redhat (PHP/".phpversion().")\r\n";   
  79. 79.list($msec, $sec) = explode(" ", microtime());   
  80. 80.$header ."Message-ID: <".date("YmdHis", $sec).".".($msec*1000000).".".$mail_from.">\r\n";   
  81. 81.$TO = explode(",", $this->strip_comment($to));   
  82. 82.   
  83. 83.if ($cc != "") {   
  84. 84.$TO = array_merge($TO, explode(",", $this->strip_comment($cc)));   
  85. 85.}   
  86. 86.   
  87. 87.if ($bcc != "") {   
  88. 88.$TO = array_merge($TO, explode(",", $this->strip_comment($bcc)));   
  89. 89.}   
  90. 90.   
  91. 91.$sent = TRUE;   
  92. 92.foreach ($TO as $rcpt_to) {   
  93. 93.$rcpt_to = $this->get_address($rcpt_to);   
  94. 94.if (!$this->smtp_sockopen($rcpt_to)) {   
  95. 95.$this->log_write("Error: Cannot send email to ".$rcpt_to."\n");   
  96. 96.$sent = FALSE;   
  97. 97.continue;   
  98. 98.}   
  99. 99.if ($this->smtp_send($this->host_name, $mail_from, $rcpt_to, $header, $body)) {   
  100. 100.$this->log_write("E-mail has been sent to <".$rcpt_to.">\n");   
  101. 101.} else {   
  102. 102.$this->log_write("Error: Cannot send email to <".$rcpt_to.">\n");   
  103. 103.$sent = FALSE;   
  104. 104.}   
  105. 105.fclose($this->sock);   
  106. 106.$this->log_write("Disconnected from remote host\n");   
  107. 107.}   
  108. 108.//echo "<br>";   
  109. 109.//echo $header;   
  110. 110.return $sent;   
  111. 111.}   
  112. 112.   
  113. 113./* Private Functions */   
  114. 114.   
  115. 115.function smtp_send($helo, $from, $to, $header, $body = "")   
  116. 116.{   
  117. 117.if (!$this->smtp_putcmd("HELO", $helo)) {   
  118. 118.return $this->smtp_error("sending HELO command");   
  119. 119.}   
  120. 120.#auth   
  121. 121.if($this->auth){   
  122. 122.if (!$this->smtp_putcmd("AUTH LOGIN", base64_encode($this->user))) {   
  123. 123.return $this->smtp_error("sending HELO command");   
  124. 124.}   
  125. 125.   
  126. 126.if (!$this->smtp_putcmd("", base64_encode($this->pass))) {   
  127. 127.return $this->smtp_error("sending HELO command");   
  128. 128.}   
  129. 129.}   
  130. 130.#   
  131. 131.if (!$this->smtp_putcmd("MAIL", "FROM:<".$from.">")) {   
  132. 132.return $this->smtp_error("sending MAIL FROM command");   
  133. 133.}   
  134. 134.   
  135. 135.if (!$this->smtp_putcmd("RCPT", "TO:<".$to.">")) {   
  136. 136.return $this->smtp_error("sending RCPT TO command");   
  137. 137.}   
  138. 138.   
  139. 139.if (!$this->smtp_putcmd("DATA")) {   
  140. 140.return $this->smtp_error("sending DATA command");   
  141. 141.}   
  142. 142.   
  143. 143.if (!$this->smtp_message($header, $body)) {   
  144. 144.return $this->smtp_error("sending message");   
  145. 145.}   
  146. 146.   
  147. 147.if (!$this->smtp_eom()) {   
  148. 148.return $this->smtp_error("sending <CR><LF>.<CR><LF> [EOM]");   
  149. 149.}   
  150. 150.   
  151. 151.if (!$this->smtp_putcmd("QUIT")) {   
  152. 152.return $this->smtp_error("sending QUIT command");   
  153. 153.}   
  154. 154.   
  155. 155.return TRUE;   
  156. 156.}   
  157. 157.   
  158. 158.function smtp_sockopen($address)   
  159. 159.{   
  160. 160.if ($this->relay_host == "") {   
  161. 161.return $this->smtp_sockopen_mx($address);   
  162. 162.} else {   
  163. 163.return $this->smtp_sockopen_relay();   
  164. 164.}   
  165. 165.}   
  166. 166.   
  167. 167.function smtp_sockopen_relay()   
  168. 168.{   
  169. 169.$this->log_write("Trying to ".$this->relay_host.":".$this->smtp_port."\n");   
  170. 170.$this->sock = @fsockopen($this->relay_host, $this->smtp_port, $errno, $errstr, $this->time_out);   
  171. 171.if (!($this->sock && $this->smtp_ok())) {   
  172. 172.$this->log_write("Error: Cannot connenct to relay host ".$this->relay_host."\n");   
  173. 173.$this->log_write("Error: ".$errstr." (".$errno.")\n");   
  174. 174.return FALSE;   
  175. 175.}   
  176. 176.$this->log_write("Connected to relay host ".$this->relay_host."\n");   
  177. 177.return TRUE;;   
  178. 178.}   
  179. 179.   
  180. 180.function smtp_sockopen_mx($address)   
  181. 181.{   
  182. 182.$domain = ereg_replace("^.+@([^@]+){1}quot;, "\\1", $address);   
  183. 183.if (!@getmxrr($domain, $MXHOSTS)) {   
  184. 184.$this->log_write("Error: Cannot resolve MX \"".$domain."\"\n");   
  185. 185.return FALSE;   
  186. 186.}   
  187. 187.foreach ($MXHOSTS as $host) {   
  188. 188.$this->log_write("Trying to ".$host.":".$this->smtp_port."\n");   
  189. 189.$this->sock = @fsockopen($host, $this->smtp_port, $errno, $errstr, $this->time_out);   
  190. 190.if (!($this->sock && $this->smtp_ok())) {   
  191. 191.$this->log_write("Warning: Cannot connect to mx host ".$host."\n");   
  192. 192.$this->log_write("Error: ".$errstr." (".$errno.")\n");   
  193. 193.continue;   
  194. 194.}   
  195. 195.$this->log_write("Connected to mx host ".$host."\n");   
  196. 196.return TRUE;   
  197. 197.}   
  198. 198.$this->log_write("Error: Cannot connect to any mx hosts (".implode(", ", $MXHOSTS).")\n");   
  199. 199.return FALSE;   
  200. 200.}   
  201. 201.   
  202. 202.function smtp_message($header, $body)   
  203. 203.{   
  204. 204.fputs($this->sock, $header."\r\n".$body);   
  205. 205.$this->smtp_debug("> ".str_replace("\r\n", "\n"."> ", $header."\n> ".$body."\n> "));   
  206. 206.   
  207. 207.return TRUE;   
  208. 208.}   
  209. 209.   
  210. 210.function smtp_eom()   
  211. 211.{   
  212. 212.fputs($this->sock, "\r\n.\r\n");   
  213. 213.$this->smtp_debug(". [EOM]\n");   
  214. 214.   
  215. 215.return $this->smtp_ok();   
  216. 216.}   
  217. 217.   
  218. 218.function smtp_ok()   
  219. 219.{   
  220. 220.$response = str_replace("\r\n", "", fgets($this->sock, 512));   
  221. 221.$this->smtp_debug($response."\n");   
  222. 222.   
  223. 223.if (!ereg("^[23]", $response)) {   
  224. 224.fputs($this->sock, "QUIT\r\n");   
  225. 225.fgets($this->sock, 512);   
  226. 226.$this->log_write("Error: Remote host returned \"".$response."\"\n");   
  227. 227.return FALSE;   
  228. 228.}   
  229. 229.return TRUE;   
  230. 230.}   
  231. 231.   
  232. 232.function smtp_putcmd($cmd, $arg = "")   
  233. 233.{   
  234. 234.if ($arg != "") {   
  235. 235.if($cmd=="") $cmd = $arg;   
  236. 236.else $cmd = $cmd." ".$arg;   
  237. 237.}   
  238. 238.   
  239. 239.fputs($this->sock, $cmd."\r\n");   
  240. 240.$this->smtp_debug("> ".$cmd."\n");   
  241. 241.   
  242. 242.return $this->smtp_ok();   
  243. 243.}   
  244. 244.   
  245. 245.function smtp_error($string)   
  246. 246.{   
  247. 247.$this->log_write("Error: Error occurred while ".$string.".\n");   
  248. 248.return FALSE;   
  249. 249.}   
  250. 250.   
  251. 251.function log_write($message)   
  252. 252.{   
  253. 253.$this->smtp_debug($message);   
  254. 254.   
  255. 255.if ($this->log_file == "") {   
  256. 256.return TRUE;   
  257. 257.}   
  258. 258.   
  259. 259.$message = date("M d H:i:s ").get_current_user()."[".getmypid()."]: ".$message;   
  260. 260.if (!@file_exists($this->log_file) || !($fp = @fopen($this->log_file, "a"))) {   
  261. 261.$this->smtp_debug("Warning: Cannot open log file \"".$this->log_file."\"\n");   
  262. 262.return FALSE;   
  263. 263.}   
  264. 264.flock($fp, LOCK_EX);   
  265. 265.fputs($fp, $message);   
  266. 266.fclose($fp);   
  267. 267.   
  268. 268.return TRUE;   
  269. 269.}   
  270. 270.   
  271. 271.function strip_comment($address)   
  272. 272.{   
  273. 273.$comment = "\\([^()]*\\)";   
  274. 274.while (ereg($comment, $address)) {   
  275. 275.$address = ereg_replace($comment, "", $address);   
  276. 276.}   
  277. 277.   
  278. 278.return $address;   
  279. 279.}   
  280. 280.   
  281. 281.function get_address($address)   
  282. 282.{   
  283. 283.$address = ereg_replace("([ \t\r\n])+", "", $address);   
  284. 284.$address = ereg_replace("^.*<(.+)>.*{1}quot;, "\\1", $address);   
  285. 285.   
  286. 286.return $address;   
  287. 287.}   
  288. 288.   
  289. 289.function smtp_debug($message)   
  290. 290.{   
  291. 291.if ($this->debug) {   
  292. 292.//echo $message."<br>";   
  293. 293.}   
  294. 294.}   
  295. 295.   
  296. 296.function get_attach_type($image_tag) { //   
  297. 297.   
  298. 298.$filedata = array();   
  299. 299.   
  300. 300.$img_file_con=fopen($image_tag,"r");   
  301. 301.unset($image_data);   
  302. 302.while ($tem_buffer=AddSlashes(fread($img_file_con,filesize($image_tag))))   
  303. 303.$image_data.=$tem_buffer;   
  304. 304.fclose($img_file_con);   
  305. 305.   
  306. 306.$filedata['context'] = $image_data;   
  307. 307.$filedata['filename']= basename($image_tag);   
  308. 308.$extension=substr($image_tag,strrpos($image_tag,"."),strlen($image_tag)-strrpos($image_tag,"."));   
  309. 309.switch($extension){   
  310. 310.case ".gif":   
  311. 311.$filedata['type'] = "image/gif";   
  312. 312.break;   
  313. 313.case ".gz":   
  314. 314.$filedata['type'] = "application/x-gzip";   
  315. 315.break;   
  316. 316.case ".htm":   
  317. 317.$filedata['type'] = "text/html";   
  318. 318.break;   
  319. 319.case ".html":   
  320. 320.$filedata['type'] = "text/html";   
  321. 321.break;   
  322. 322.case ".jpg":   
  323. 323.$filedata['type'] = "image/jpeg";   
  324. 324.break;   
  325. 325.case ".tar":   
  326. 326.$filedata['type'] = "application/x-tar";   
  327. 327.break;   
  328. 328.case ".txt":   
  329. 329.$filedata['type'] = "text/plain";   
  330. 330.break;   
  331. 331.case ".zip":   
  332. 332.$filedata['type'] = "application/zip";   
  333. 333.break;   
  334. 334.default:   
  335. 335.$filedata['type'] = "application/octet-stream";   
  336. 336.break;   
  337. 337.}   
  338. 338.   
  339. 339.   
  340. 340.return $filedata;   
  341. 341.}   
  342. 342.   
  343. 343.}   
  344. 344.?> 

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器