php如何发邮件
PHP示例演示发送邮件给某个邮箱首先,建立一个index.html文件,代码如下:
|
<html> <head> <title>simple send mail </title> </head> <body> <h1>mail form</h1> <form name= "form1" method= "post" action= "mail.php" > <table> <tr><td><b>to</b></td><td> <input type= "text" name= "mailto" size= "35" > </td></tr> <tr><td><b>subject</b></td> <td><input type= "text" name= "mailsubject" size= "35" ></td> </tr> <tr><td><b>message</b></td> <td> <textarea name= "mailbody" cols= "50" rows= "7" ></textarea> </td> </tr> <tr><td colspan= "2" > <input type= "submit" name= "submit" value= "send" > </td> </tr> </table> </form> </body> </html> |
然后新建一个“mail.php”文档把传输的文档进行发送
|
<?php $stm = "邮件内容" ; require ( "smtp.php" ); ########################################## $smtpserver = "smtp.qq.com" ; //smtp服务器 $smtpserverport = "465" ; //smtp服务器端口 $smtpusermail = "xxx@qq.com" ; //smtp服务器的用户邮箱 $smtpemailto = "aaa@qq.com" ; //发送给谁 $smtpuser = "xxx@qq.com" ; //smtp服务器的用户帐号 $smtppass = "666" ; //smtp服务器的用户密码 $mailsubject = "666 " ; //邮件主题 $mailbody = $stm ; //邮件内容 $mailtype = "html" ; //邮件格式(html/txt),txt为文本邮件 ########################################## $smtp = new smtp( $smtpserver , $smtpserverport ,true, $smtpuser , $smtppass ); //这里面的一个true是表示使用身份验证,否则不使用身份验证. $smtp ->debug = true; //是否显示发送的调试信息 $smtp ->sendmail( $smtpemailto , $smtpusermail , $mailsubject , $mailbody , $mailtype ); echo "<script>alert('邮件发送成功');parent.document.adduser.cheheh.click();</script>" ; exit ; } ?> |
最后编写一个邮件类“smtp.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 ( "(^|(\r\n))(\.)" , "\1.\3" , $body ); $header .= "mime-version:1.0\r\n" ; if ( $mailtype == "html" ) { $header .= "content-type:text/html\r\n" ; } $header .= "to: " . $to . "\r\n" ; if ( $cc != "" ) { $header .= "cc: " . $cc . "\r\n" ; } $header .= "from: $from<" . $from . ">\r\n" ; $header .= "subject: " . $subject . "\r\n" ; $header .= $additional_headers ; $header .= "date: " . date ( "r" ). "\r\n" ; $header .= "x-mailer:by redhat (php/" .phpversion(). ")\r\n" ; list( $msec , $sec ) = explode ( " " , microtime()); $header .= "message-id: <" . date ( "ymdhis" , $sec ). "." .( $msec *1000000). "." . $mail_from . ">\r\n" ; $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 host\n" ); } 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 . "\r\n" . $body ); $this ->smtp_debug( "> " . str_replace ( "\r\n" , "\n" . "> " , $header . "\n> " . $body . "\n> " )); return true; } function smtp_eom() { fputs ( $this ->sock, "\r\n.\r\n" ); $this ->smtp_debug( ". [eom]\n" ); return $this ->smtp_ok(); } function smtp_ok() { $response = str_replace ( "\r\n" , "" , fgets ( $this ->sock, 512)); $this ->smtp_debug( $response . "\n" ); if (! ereg ( "^[23]" , $response )) { fputs ( $this ->sock, "quit\r\n" ); 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 . "\r\n" ); $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 ( "([ \t\r\n])+" , "" , $address ); $address = ereg_replace ( "^.*<(.+)>.*$" , "\1" , $address ); return $address ; } function smtp_debug( $message ) { if ( $this ->debug) { //echo $message; } } } ?> |
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对开心学习网的支持。
原文链接:https://jingyan.baidu.com/article/636f38bb482efcd6b8461019.html