zoukankan      html  css  js  c++  java
  • 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.?>  
  • 相关阅读:
    [bigdata] storm集群安装及测试
    [bigdata] kafka集群安装及测试
    [bigdata] spark集群安装及测试
    [bigdata] 使用Flume hdfs sink, hdfs文件未关闭的问题
    [bigdata] 启动CM出现 “JDBC Driver class not found: com.mysql.jdbc.Driver” 以及“Error creating bean with name 'serverLogFetcherImpl'”问题的解决方法
    [JavaEE]设计模式之SOLID原则
    [Android]Volley源码分析(五)
    [Android]Volley源码分析(四)
    [Android]Volley源码分析(三)
    python学习Day13--生成函数
  • 原文地址:https://www.cnblogs.com/kingfly/p/3090294.html
Copyright © 2011-2022 走看看