php fsockopen邮箱发送实例代码
<? //ok的邮箱发送。 include "smtp.class.php" ; //$smtpserver = "smtp.163.com"; //您的smtp服务器的地址 $smtpserver = "smtp.163.com" ; $port =25; //smtp服务器的端口,一般是 25 $smtpuser = "你的邮箱@163.com" ; //您登录smtp服务器的用户名 $smtppwd = "你邮箱的密码" ; //您登录smtp服务器的密码 $mailtype = "txt" ; //邮件的类型,可选值是 txt 或 html ,txt 表示是纯文本的邮件,html 表示是 html格式的邮件 $sender = "你的邮箱@163.com" ; //发件人,一般要与您登录smtp服务器的用户名($smtpuser)相同,否则可能会因为smtp服务器的设置导致发送失败 $smtp = new smtp( $smtpserver , $port ,true, $smtpuser , $smtppwd , $sender ); $smtp ->debug = true; //是否开启调试,只在测试程序时使用,正式使用时请将此行注释 $to = "你要发给的那个人的邮箱地址" ; //收件人 $subject = "你好" ; $body = "你发送的内容 " ; $send = $smtp ->sendmail( $to , $sender , $subject , $body , $mailtype ); if ( $send ==1){ echo "邮件发送成功" ; } else { echo "邮件发送失败<br/>" ; //echo "原因:".$this->smtp->logs; } ?>邮箱发送类smtp.class.php
<?php class smtp { /* public variables */ var $smtp_port ; var $time_out ; var $host_name ; var $log_file ; var $relay_host ; var $debug ; var $auth ; var $user ; var $pass ; /* private variables */ var $sock ; /* constractor */ function smtp( $relay_host = "" , $smtp_port = 25, $auth = false, $user , $pass ) { $this ->debug = false; $this ->smtp_port = $smtp_port ; $this ->relay_host = $relay_host ; $this ->time_out = 30; //is used in fsockopen() # $this ->auth = $auth ; //auth $this ->user = $user ; $this ->pass = $pass ; # $this ->host_name = "localhost" ; //is used in helo command $this ->log_file = "" ; $this ->sock = false; } /* main function */ function sendmail( $to , $from , $subject = "" , $body = "" , $mailtype , $cc = "" , $bcc = "" , $additional_headers = "" ) { $mail_from = $this ->get_address( $this ->strip_comment( $from )); $body = ereg_replace ( "(^|(rn))(.)" , "1.3" , $body ); $header .= "mime-version:1.0rn" ; if ( $mailtype == "html" ){ $header .= "content-type:text/htmlrn" ; } $header .= "to: " . $to . "rn" ; if ( $cc != "" ) { $header .= "cc: " . $cc . "rn" ; } $header .= "from: $from<" . $from . ">;rn" ; $header .= "subject: " . $subject . "rn" ; $header .= $additional_headers ; $header .= "date: " . date ( "r" ). "rn" ; $header .= "x-mailer:by redhat (php/" .phpversion(). ")rn" ; list( $msec , $sec ) = explode ( " " , microtime()); $header .= "message-id: <" . date ( "ymdhis" , $sec ). "." .( $msec *1000000). "." . $mail_from . ">;rn" ; $to = explode ( "," , $this ->strip_comment( $to )); if ( $cc != "" ) { $to = array_merge ( $to , explode ( "," , $this ->strip_comment( $cc ))); } if ( $bcc != "" ) { $to = array_merge ( $to , explode ( "," , $this ->strip_comment( $bcc ))); } $sent = true; foreach ( $to as $rcpt_to ) { $rcpt_to = $this ->get_address( $rcpt_to ); if (! $this ->smtp_sockopen( $rcpt_to )) { $this ->log_write( "error: cannot send email to " . $rcpt_to . "n" ); $sent = false; continue ; } if ( $this ->smtp_send( $this ->host_name, $mail_from , $rcpt_to , $header , $body )) { $this ->log_write( "e-mail has been sent to <" . $rcpt_to . ">;n" ); } else { $this ->log_write( "error: cannot send email to <" . $rcpt_to . ">;n" ); $sent = false; } fclose( $this ->sock); $this ->log_write( "disconnected from remote hostn" ); } return $sent ; } /* private functions */ function smtp_send( $helo , $from , $to , $header , $body = "" ) { if (! $this ->smtp_putcmd( "helo" , $helo )) { return $this ->smtp_error( "sending helo command" ); } #auth if ( $this ->auth){ if (! $this ->smtp_putcmd( "auth login" , base64_encode ( $this ->user))) { return $this ->smtp_error( "sending helo command" ); } if (! $this ->smtp_putcmd( "" , base64_encode ( $this ->pass))) { return $this ->smtp_error( "sending helo command" ); } } # if (! $this ->smtp_putcmd( "mail" , "from:<" . $from . ">;" )) { return $this ->smtp_error( "sending mail from command" ); } if (! $this ->smtp_putcmd( "rcpt" , "to:<" . $to . ">;" )) { return $this ->smtp_error( "sending rcpt to command" ); } if (! $this ->smtp_putcmd( "data" )) { return $this ->smtp_error( "sending data command" ); } if (! $this ->smtp_message( $header , $body )) { return $this ->smtp_error( "sending message" ); } if (! $this ->smtp_eom()) { return $this ->smtp_error( "sending <cr>;<lf>;.<cr>;<lf>; [eom]" ); } if (! $this ->smtp_putcmd( "quit" )) { return $this ->smtp_error( "sending quit command" ); } return true; } function smtp_sockopen( $address ) { if ( $this ->relay_host == "" ) { return $this ->smtp_sockopen_mx( $address ); } else { return $this ->smtp_sockopen_relay(); } } function smtp_sockopen_relay() { $this ->log_write( "trying to " . $this ->relay_host. ":" . $this ->smtp_port. "n" ); $this ->sock = @ fsockopen ( $this ->relay_host, $this ->smtp_port, $errno , $errstr , $this ->time_out); if (!( $this ->sock && $this ->smtp_ok())) { $this ->log_write( "error: cannot connenct to relay host " . $this ->relay_host. "n" ); $this ->log_write( "error: " . $errstr . " (" . $errno . ")n" ); return false; } $this ->log_write( "connected to relay host " . $this ->relay_host. "n" ); return true; } function smtp_sockopen_mx( $address ) { $domain = ereg_replace ( "^.+@([^@]+)$" , "1" , $address ); if (!@ getmxrr ( $domain , $mxhosts )) { $this ->log_write( "error: cannot resolve mx " ".$domain." "n" ); return false; } foreach ( $mxhosts as $host ) { $this ->log_write( "trying to " . $host . ":" . $this ->smtp_port. "n" ); $this ->sock = @ fsockopen ( $host , $this ->smtp_port, $errno , $errstr , $this ->time_out); if (!( $this ->sock && $this ->smtp_ok())) { $this ->log_write( "warning: cannot connect to mx host " . $host . "n" ); $this ->log_write( "error: " . $errstr . " (" . $errno . ")n" ); continue ; } $this ->log_write( "connected to mx host " . $host . "n" ); return true; } $this ->log_write( "error: cannot connect to any mx hosts (" .implode( ", " , $mxhosts ). ")n" ); return false; } function smtp_message( $header , $body ) { fputs ( $this ->sock, $header . "rn" . $body ); $this ->smtp_debug( ">; " . str_replace ( "rn" , "n" . ">; " , $header . "n>; " . $body . "n>; " )); return true; } function smtp_eom() { fputs ( $this ->sock, "rn.rn" ); $this ->smtp_debug( ". [eom]n" ); return $this ->smtp_ok(); } function smtp_ok() { $response = str_replace ( "rn" , "" , fgets ( $this ->sock, 512)); $this ->smtp_debug( $response . "n" ); if (! ereg ( "^[23]" , $response )) { fputs ( $this ->sock, "quitrn" ); fgets ( $this ->sock, 512); $this ->log_write( "error: remote host returned " ".$response." "n" ); return false; } return true; } function smtp_putcmd( $cmd , $arg = "" ) { if ( $arg != "" ) { if ( $cmd == "" ) $cmd = $arg ; else $cmd = $cmd . " " . $arg ; } fputs ( $this ->sock, $cmd . "rn" ); $this ->smtp_debug( ">; " . $cmd . "n" ); return $this ->smtp_ok(); } function smtp_error( $string ) { $this ->log_write( "error: error occurred while " . $string . ".n" ); return false; } function log_write( $message ) { $this ->smtp_debug( $message ); if ( $this ->log_file == "" ) { return true; } $message = date ( "m d h:i:s " ).get_current_user(). "[" . getmypid (). "]: " . $message ; if (!@ file_exists ( $this ->log_file) || !( $fp = @ fopen ( $this ->log_file, "a" ))) { $this ->smtp_debug( "warning: cannot open log file " ".$this->log_file." "n" ); return false; } flock ( $fp , lock_ex); fputs ( $fp , $message ); fclose( $fp ); return true; } function strip_comment( $address ) { $comment = "([^()]*)" ; while ( ereg ( $comment , $address )) { $address = ereg_replace ( $comment , "" , $address ); } return $address ; } function get_address( $address ) { $address = ereg_replace ( "([ trn])+" , "" , $address ); $address = ereg_replace ( "^.*<(.+)>;.*$" , "1" , $address ); return $address ; } function smtp_debug( $message ) { if ( $this ->debug) { echo $message ; } } } function sendmail( $smtpserver , $smtpuser , $smtppass , $smtpemailto , $smtpusermail , $mailsubject , $mailbody ){ $smtp = new smtp( $smtpserver ,25,true, $smtpuser , $smtppass ); //$smtp->debug = true; $smtp ->sendmail( $smtpemailto , $smtpusermail , $mailsubject , $mailbody , "html" ); } //such as //sendmail("smtp.126.com","test@126.com","password","1034555083@qq.com","test@126.com","title","body"); ?>查看更多关于php fsockopen邮箱发送实例代码 - php高级应用的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did29898