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面向对象程序设计子类扩展父类子类重新载入父类操作详解)
- phpredis高级用法(PHP Redis扩展无法加载的问题解决方法)
- php面向对象如何开发(PHP创建对象的六种方式实例总结)
- iis上搭建php环境(vultr服务器windows server 2012 r2搭建IIS8+PHP+MYSQL+phpMyAdmin运行环境图文教程)
- php在if里添加xml代码(PHP创建XML接口示例)
- php设计模式如何实现(php模式设计之观察者模式应用实例分析)
- 织梦cms漏洞大全(织梦CMS利用php正则让文章的外链自动加nofollow)
- php调试用什么工具好(调试php程序的简单步骤)
- dedecms的dedesql.class.php on line 489错误的解决方法(dedecms的dedesql.class.php on line 489错误的解决方法)
- php 数据库查询并写入(PHP实现单条sql执行多个数据的insert语句方法)
- thinkphp框架多文件上传完整代码(Thinkphp5 自定义上传文件名的实现方法)
- thinkphp前后端配合(thinkPHP+LayUI 流加载实现功能)
- php 记录的已读状态(PHP使用观察者模式处理异常信息的方法详解)
- thinkphp5框架怎么打开(thinkphp5.1框架中容器Container和门面Facade的实现方法分析)
- php 静态方法(PHP的静态方法与普通方法用法实例分析)
- 泰国旅游攻略(泰国旅游攻略必去景点)
- 数字藏品市场有多乱 周杰伦丢了 一只猴 ,损失超300万(数字藏品市场有多乱)
- 这里输入关键词(怎么输入关键词搜索)
- 得这个 难治病 的人太多了,300个人赶到杭州商量怎么办(得这个难治病的人太多了)
- 经度,世界时间腕表的灵魂(世界时间腕表的灵魂)
- 阿里最新财报公布 三季度营收增长3 ,将增加150亿美元回购额度 在美股价小涨(阿里最新财报公布)
热门推荐
- 使用Console命令调试JS
- C#中typeof 与GetType()的区别
- python计算1到10的阶乘的和(python计算阶乘和的方法1!+2!+3!+...+n!)
- tomcat 多线程并发cpu(Tomcat使用线程池处理远程并发请求的方法)
- 腾讯云linux服务器怎么用(详解在Linux环境中登陆腾讯云的Linux服务器的步骤)
- laravel获取数据(laravel 判断查询数据库返回值的例子)
- 云服务器怎么免费(有永久免费的云服务器吗?)
- springboot项目部署到docker(IDEA 通过docker插件发布springboot项目的详细教程)
- Linq中select查询
- mysqlbinlog优缺点(MySQL Binlog 日志处理工具对比分析)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9