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