php如何发邮件(PHP示例演示发送邮件给某个邮箱)
类别:编程学习 浏览量:1962
时间:2022-03-31 20:27:16 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
您可能感兴趣
- php中数组使用技巧(php常用经典函数集锦数组、字符串、栈、队列、排序等)
- php编写程序使用方法(php xhprof使用实例详解)
- php添加数据到mysql数据库(PHP通过代码连接XAMPP数据库及MySQL数据库方法)
- php怎么设计策略模式(php设计模式之策略模式应用案例详解)
- phparray函数的用法(php array_chunk函数用法与注意事项)
- 织梦cms漏洞大全(织梦CMS利用php正则让文章的外链自动加nofollow)
- php7优化技巧(php7性能提升的原因详解)
- phpob函数使用方法(php中isset与empty函数的困惑与用法分析)
- php入门教程源代码修改教程(php+js实现的无刷新下载文件功能示例)
- php系统化框架教程(PHP+swoole+linux实现系统监控和性能优化操作示例)
- thinkphp5怎么设置默认返回(thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结)
- redis在php怎么使用(Windows服务器中PHP如何安装redis扩展)
- php设置上传文件代码(PHP大文件切割上传并带进度条功能示例)
- thinkphp从模板自定义标签(Thinkphp5.0框架视图view的循环标签用法示例)
- php类的属性和方法(PHP进阶学习之反射基本概念与用法分析)
- php一直提示错误(关于php开启错误提示的总结)
- 阴生环境 耐阴地被植物,你知道哪些(阴生环境耐阴地被植物)
- 常见的喜阴植物有哪些 养室内盆栽就在这里选(常见的喜阴植物有哪些)
- 这8种耐阴植物,营造阴生植物花境,也是一个不错的选择(营造阴生植物花境)
- 览邦G08 Plus SMART WATCH 测评⑱ 全独立这才是智能手表该有的样子(览邦G08PlusSMART)
- 荣耀手表 GS 3 真机亮相 不支持无线充电(荣耀手表GS3)
- 通过体温就能为智能手表充电 原来是用NASA在空间站用的黑科技(通过体温就能为智能手表充电)
热门推荐
- docker 部署参数配置(Docker搭建Redis5.0并挂载数据)
- vue如何excel表格上传功能(Vue + iView实现Excel上传功能的完整代码)
- vmware esxi 网络配置(探索VMware ESXI CLI常用命令)
- css中px是什么单位(CSS中px em rem区别与使用)
- html怎么去除css边框(Html/CSS前端实现文字边框阴影效果)
- sql server 2014配置文件路径(SQL Server 2012 FileTable 新特性详解)
- 设置404错误页面的几个建议
- django框架全面讲解(Django uwsgi Nginx 的生产环境部署详解)
- python中split使用方法(python lxml中etree的简单应用)
- dedecms发布时间调整(织梦DEDECMS发布完文章没有显示文章内容解决办法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9