- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章PHP 利用Mail_MimeDecode类提取邮件信息示例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
重点为one_mail函数。利用Mail_mimeDecode类从邮件中提取邮件头和邮件正文.
复制代码 代码如下
<?php header("content-type:text/html; charset=UTF-8"); /* * record kid words and insert into database * user by sending email to publication kid words * */ include 'POP3.php'; include 'email_class.php'; include 'Mail_mimeDecode.php'; //include 'include/compatible.php'; include 'include/extend_common.php'; //include '../../htdocs/include/extend_common.php'; define('POST_FROM_EMAIL', 1); define('DATABASE_CONNECTION_ERROR', 2); //数据库连接失败错误 define('EMAIL_CONNECTION_ERROR', 3); //邮箱连接失败错误 define('ACCOUNT_ERROR', 4); //邮箱的账号错误 define('SIGN_EMAIL_ERROR', 5); //邮件标记删除错误 define('DELELET_ERROR', 6); //删除邮件错误 define('INSERT_ERROR', 7); //插入数据失败错误 class mail_data { function mail_data() { include 'config.php'; $mail_log = fopen("mail_log.txt", "a+"); $conn = @ mysql_connect($db_host, $db_user, $db_password); if ($conn) { mysql_select_db('t', $conn); mysql_query("set names utf8"); $pop3 = new Net_POP3(); //判断连接是否成功 if ($pop3->connect($host, 110)) { //判断登入是否成功 if ($pop3->login($user, $password) === true) { $list = $pop3->_cmdList(); $sum = $pop3->_cmdStat(); //每次取多少邮件 $step = 2; $r = 0; //先对邮箱取$step邮件 for ($n = 0; $n < $sum[0]; $n += $step) { $t = 0; $users = array (); $mail = array (); $offset = ($sum[0] - $n) < $step ? $sum[0] - $n : $step; //邮件循环 for ($i = $r; $i < $n + $offset; $i++) { //取得邮件信息 $user = $this->one_mail($i, $pop3, $list, $mail_log); array_push($mail, $user['from_mail']); array_push($users, $user); $r = $i +1; } //取得mail用户数据 $str = $this->uesr_data($mail); $value = array (); //当前邮件数组循环,当前邮件用户的email,小孩名,童言 for ($m = 0; $m < count($users); $m++) { $num = 0; $mn = $m + $n; //数据处理 $post_text = $users[$m]['conntent']; if (!empty ($post_text)) { $post_text = do_submit_text($post_text); $post_text = mysql_real_escape_string($post_text); $post_link_num = parsed_text_include_links($post_text); $text = do_submit_text($post_text); $post_text_undo = mysql_real_escape_string($text); $post_text = mysql_real_escape_string($post_text); $val = array (); $kid_num = $users[$m]['kid_nickname']; if (is_numeric($kid_num) && intval($kid_num) <= 3 && intval($kid_num) > 0) { $kid_num = intval($kid_num); $val = $this->kid_data($users, $m, $kid_num, $post_text, $post_link_num, $post_text_undo); if (isset ($val)) { $value["$t"] = $val; $num = 1; $t = $t +1; } } else { //数据库中的数据 for ($x = 0; $x < count($str); $x++) { //判断是否是from_mail的小孩 $val["$x"] = $this->is_kid($users, $str, $m, $x, $post_text, $post_link_num, $post_text_undo); if (isset ($val["$x"])) { $value["$t"] = $val["$x"]; $num = 1; $t = $t +1; } } } //判断是否成功与数据库中数据匹配到 if ($num == 0) { $val = $this->kid_data($users, $m, 1, $post_text, $post_link_num, $post_text_undo); if (isset ($val)) { $value["$t"] = $val; $num = 1; $t = $t +1; } } } } //对一段数据操作 $valu = implode("),(", $value); if ($valu != "") { $err_time = $this->insert_date($valu); $this->kid_message_count($value); } } fclose($mail_log); /* if($pop3->disconnect()==false){ $this->_error(DELELET_ERROR); } */ } else { echo "帐号或密码错误!"; $this->_error(ACCOUNT_ERROR); } } else { echo "连接失败..."; $this->_error(EMAIL_CONNECTION_ERROR); } } else { echo "数据库连接失败..."; $this->_error(DATABASE_CONNECTION_ERROR); } } /* *read the $i email message *@access public *@param int $i mail id *@param object $pop3 pop3 protocol object *@return array mail from ,header,content */ function one_mail($i, $pop3, $list, $mail_log) { $stg = $pop3->getParsedHeaders($list[$i]['msg_id']); $from = imap_mime_header_decode($stg['From']); //邮件的发送者 $string_from = ''; for ($j = 0; $j < count($from); $j++) { $string_from = "$string_from" . $from[$j]->text; } preg_match("/([a-z0-9A-Z_]+)@([a-z0-9A-Z/.]+).([a-z0-9A-Z]+)/", $string_from, $from_mail); $string = $pop3->getMsg($list[$i]['msg_id']); $body = new Mail_mimeDecode($string); $sr = $body->decode(array ( 'include_bodies' => true, 'decode_bodies' => false, 'decode_headers' => true )); if (property_exists($sr, 'parts')) { $mail_part = $sr->parts; $mail_part = $mail_part[0]; } else { $mail_part = $sr; } $mail_code = $mail_part->headers; $mail_code = $mail_code['content-transfer-encoding']; //编码格式 $mail_type = $mail_part->ctype_parameters; $mail_type = $mail_type['charset']; $mail_body = $mail_part->body; //正文内容 if ($mail_code == "base64") { //判断编码格式 $text = base64_decode("$mail_body"); $text = iconv("$mail_type", "UTF-8", $text); } else { $text = quoted_printable_decode("$mail_body"); $text = iconv("$mail_type", "UTF-8", $text); } $mail_title = $sr->headers; $mail_title = $mail_title['subject']; $mail_title = imap_mime_header_decode($mail_title); if (count($mail_title) != 0) { $title = $mail_title[0]->text; $t = $mail_title[0]->charset; if ($t != "default") { $title = iconv($t, "UTF-8", $title); } else { $title = iconv("gb2312", "UTF-8", $title); } } else { $title = 1; } //$pop3->_cmdDele($list[$i]['msg_id']); $pop3->deleteMsg($list[$i]['msg_id']); if ($pop3->deleteMsg($list[$i]['msg_id']) == false) { $this->_error(SIGN_EMAIL_ERROR); } //取得需要插入的用户email,小孩名,童言 $users["$i"] = array ( "from_mail" => "$from_mail[0]", "kid_nickname" => "$title", "conntent" => "$text", "body_type" => "$mail_type" ); $log = $users["$i"]; array_unshift($log, date("Y-m-d H:i;s")); $log = serialize($log); fwrite($mail_log, $log . "/r/n"); return $users["$i"]; } /** *at database search $mail user's information *@access public *@param string $mail all email *@return array mail user's information */ function uesr_data($mail) { $mails = implode("','", $mail); $sql = "SELECT a.mail,a.user_name,a.user_nickname,b.kid_id, b.kid_name,b.kid_avatar ,b.kid_birthday FROM `t_users` a, `t_users_kid` b WHERE a.mail in ('$mails') AND a.user_id=b.user_id"; $query = mysql_query($sql) or die(mysql_error()); $str1 = array (); while ($arr = mysql_fetch_array($query)) { array_push($str1, $arr); } return $str1; } /* *insert $value into database *@access public *@param string $value kid information *@return void */ function insert_date($value) { $sql_insert = "INSERT INTO `t_posts`(kid_id,user_name,user_nickname,post_time,post_text,user_avatar,post_link_num,post_text_undo,post_from,add_time) VALUES ($value)"; $num = mysql_query($sql_insert) or die(mysql_error()); if ($num != 1) { $this->_error(INSERT_ERROR); } } /* *send email to $smtpemailto *@access public *@param string $mailtype mail_from type *@param string $smtpemailto mail_from *@param string $user_kid_name mail title *@return void */ function reply_email($mailtype, $smtpemailto, $user_kid_nickname) { require "config.php"; $mailsubject = "您暂时还没有" . $user_kid_nickname . "宝宝"; $mailsubject = "=?UTF-8?B?" . base64_encode($mailsubject) . "?="; $mailbody = "请先添加宝宝"; if ($mailtype != "ISO-8859-1") { $mailbody = iconv("utf-8", "$mailtype//ignore", $mailbody); } $mail_type = "HTML"; $smtp = new smtp($smtpserver, $smtpserverport, true, $smtpuser, $smtppass); $smtp->debug = FALSE; $send_mail = $smtp->sendmail($smtpemailto, $smtpusermail, $mailsubject, $mailbody, $mail_type, "", ""); if ($send_mail == false) { return "send faile"; $send_mail = $smtp->sendmail($smtpemailto, $smtpusermail, $mailsubject, $mailbody, $mail_type, "", ""); } } /* *the kid's age then publication kid words *@access public *@param int $kid_birthday kid birthday *@return array kid year month day */ function get_kid_age_info($kid_birthday) { $cur_date = date("Ymd"); $age = $cur_date - $kid_birthday; if ($age < 0) { return false; } $years = 0; $months = 0; $days = 0; if ($age > 10000) { $years = floor($age / 10000); } $age = $age % 10000; $months = floor($age / 100); if ($months > 12) $months -= 88; $days = $age % 100; if ($days > $cur_date % 100) { $days = $days - (100 - date("d", strtotime(date("Ym") . "01") - 24 * 3600)); } return array ( $years, $months, $days ); } /** *judge the $m message and the $x data *@access public *@param array $users mail information *@param array $str user information *@param int $m $users grade *@param int $x $str grade *@param string $post_text the mail text *@return string information */ function is_kid($users, $str, $m, $x, $post_text, $post_link_num, $post_text_undo) { if ($users[$m]['from_mail'] == $str[$x]['mail']) { //判断是否是from_mail的小孩 $kid_id = $str[$x]['kid_id']; $user_name = $str[$x]['user_name']; $user_nickname = $str[$x]['user_nickname']; $kid_diff = $str[$x]['kid_birthday']; $kid_name = $str[$x]['kid_name']; $kid_diff = date("Ymd", $kid_diff); $kid_birthdy = $this->get_kid_age_info($kid_diff); //格式转换 for ($j = 0; $j < count($kid_birthdy); $j++) { if ($kid_birthdy[$j] >= 0 && $kid_birthdy[$j] < 10) { $kid_birthdy[$j] = "0" . "$kid_birthdy[$j]"; } } $post_time = $kid_birthdy[0] . $kid_birthdy[1] . $kid_birthdy[2]; $user_avatar = get_kid_avatar($user_name, $kid_id); $kid_avatar = $user_avatar; if ($users[$m]['kid_nickname'] == $kid_name) { $kid_id = mysql_real_escape_string("$kid_id"); $user_name = mysql_real_escape_string("$user_name"); $post_time = mysql_real_escape_string("$post_time"); $kid_avatar = mysql_real_escape_string("$kid_avatar"); $from = POST_FROM_EMAIL; $add_time = time(); $values = "'$kid_id','$user_name','$user_nickname','$post_time','$post_text','$kid_avatar','$post_link_num','$post_text_undo','$from','$add_time'"; return $values; } } } /** *have the kid_num kid of users information *@access public *@param array $users the array() of users *@param int $m the m items of array *@param int $kid_num the kid_num kid *@return array kid information */ function user_kid($users, $m, $kid_num) { $m_mail = $users["$m"]['from_mail']; $sql = "SELECT a.user_name,a.user_nickname,b.kid_id, b.kid_name,b.kid_avatar ,b.kid_birthday FROM `t_users` a, `t_users_kid` b WHERE a.mail='$m_mail' AND a.user_id=b.user_id ORDER BY b.kid_birthday ASC "; $query = mysql_query($sql) or die(mysql_error()); $str1 = array (); $kids = array (); $i = 0; while ($arr = mysql_fetch_array($query)) { $str1[$i] = $arr; $i = $i +1; } $kid_num = $kid_num -1; if ($kid_num > (count($str1) - 1)) { return $num = 0; } else { return $str1["$kid_num"]; } } /** *get the kid_num kid information *@access public *@param array $users the array() of users *@param int $m the m items of array *@param int $kid_num the kid_num kid *@param string $post_text the message of mail *@param int $post_link_num count(link) of message body *@return array $values the kid information */ function kid_data($users, $m, $kid_num, $post_text, $post_link_num, $post_text_undo) { $use_kid = $this->user_kid($users, $m, $kid_num); if ($use_kid != 0) { $kid_id = $use_kid['kid_id']; $user_name = $use_kid['user_name']; $user_nickname = $use_kid['user_nickname']; $kid_diff = $use_kid['kid_birthday']; $kid_diff = date("Ymd", $kid_diff); $kid_birthdy = $this->get_kid_age_info($kid_diff); //格式转换 for ($j = 0; $j < count($kid_birthdy); $j++) { if ($kid_birthdy[$j] >= 0 && $kid_birthdy[$j] < 10) { $kid_birthdy[$j] = "0" . "$kid_birthdy[$j]"; } } $post_time = $kid_birthdy[0] . $kid_birthdy[1] . $kid_birthdy[2]; $user_avatar = get_kid_avatar($user_name, $kid_id); $kid_avatar = $user_avatar; $add_time = time(); $from = POST_FROM_EMAIL; $values = "'$kid_id','$user_name','$user_nickname','$post_time','$post_text','$kid_avatar','$post_link_num','$post_text_undo','$from','$add_time'"; return $values; } } /** *update data when have kid words *@access public *@param array $value the array() of users *@return void */ function kid_message_count($value) { $use_names = array (); for ($k = 0; $k < count($value); $k++) { $k_name = explode(",", $value[$k]); $use_names[$k] = $k_name[1]; } asort($use_names); $sum_kid = count($use_names); $s = 0; if (count($use_names) == 1) { $d_users[0] = $use_names[0]; } else { //第一个 if ($use_names[0] != $use_names[1]) { $d_users[0] = $use_names[0]; } else { $s_users[$s] = $use_names[0]; $s = $s +1; } //最后一个 if ($use_names[$sum_kid -1] != $use_names[$sum_kid -2]) { $d_users[$sum_kid -1] = $use_names[$sum_kid -1]; } else { $s_users[$s] = $use_names[$sum_kid -1]; $s = $s +1; } for ($k = 1; $k < count($use_names) - 1; $k++) { if ($use_names[$k] == $use_names[$k -1] || $use_names[$k] == $use_names[$k +1]) { $s_users[$s] = $use_names[$k]; $s = $s +1; } else { $d_users[$k] = $use_names[$k]; } } } if (isset ($d_users)) { $names = implode(",", $d_users); $sql = "UPDATE `t_users` set post_num = post_num+1 WHERE `t_users`.user_name in ($names)"; $query = mysql_query($sql) or die(mysql_error()); } if (isset ($s_users)) { for ($s = 0; $s < count($s_users); $s++) { $name = $s_users[$s]; $sql = "UPDATE `t_users` set post_num = post_num+1 WHERE `t_users`.user_name = $name"; $query = mysql_query($sql) or die(mysql_error()); } } } /** * point error *@access private *@param int error_num the error code *@return void * */ private function _error($error_num) { $error_log = fopen("error_log.txt", "a+"); switch ($error_num) { case 2 : fwrite($error_log, date("Y-m-d H:i:s") . "/t" . $error_num . "/tCould not connect database!/r/n"); break; case 3 : fwrite($error_log, date("Y-m-d H:i:s") . "/t" . $error_num . "/tConnection Failure!/r/n"); break; case 4 : fwrite($error_log, date("Y-m-d H:i:s") . "/t" . $error_num . "/tAccount number or password error!!/r/n"); break; case 5 : fwrite($error_log, date("Y-m-d H:i:s") . "/t" . $error_num . "/tsign email failed!/r/n"); break; case 6 : fwrite($error_log, date("Y-m-d H:i:s") . "/t" . $error_num . "/tdelete emails failed!/r/n"); break; case 7 : fwrite($error_log, date("Y-m-d H:i:s") . "/t" . $error_num . "/tinsert data failed!/r/n"); break; } fclose($error_log); } } ?> 。
最后此篇关于PHP 利用Mail_MimeDecode类提取邮件信息示例的文章就讲到这里了,如果你想了解更多关于PHP 利用Mail_MimeDecode类提取邮件信息示例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我在 JavaScript 文件中运行 PHP,例如...... var = '';). 我需要使用 JavaScript 来扫描字符串中的 PHP 定界符(打开和关闭 PHP 的 )。 我已经知道使
我希望能够做这样的事情: php --determine-oldest-supported-php-version test.php 并得到这个输出: 7.2 也就是说,php 二进制检查 test.
我正在开发一个目前不使用任何框架的大型 php 站点。我的大问题是,随着时间的推移慢慢尝试将框架融入应用程序是否可取,例如在创建的新部件和更新的旧部件中? 比如所有的页面都是直接通过url服务的,有几
下面是我的源代码,我想在同一页面顶部的另一个 php 脚本中使用位于底部 php 脚本的变量 $r1。我需要一个简单的解决方案来解决这个问题。我想在代码中存在的更新查询中使用该变量。 $name)
我正在制作一个网站,根据不同的情况进行大量 PHP 重定向。就像这样...... header("Location: somesite.com/redirectedpage.php"); 为了安全起见
我有一个旧网站,我的 php 标签从 因为短标签已经显示出安全问题,并且在未来的版本中将不被支持。 关于php - 如何避免在 php 文件中写入
我有一个用 PHP 编写的配置文件,如下所示, 所以我想用PHP开发一个接口(interface),它可以编辑文件值,如$WEBPATH , $ACCOUNTPATH和 const值(value)观
我试图制作一个登录页面来学习基本的PHP,首先我希望我的独立PHP文件存储HTML文件的输入(带有表单),但是当我按下按钮时(触发POST到PHP脚本) )我一直收到令人不愉快的错误。 我已经搜索了S
我正在寻找一种让 PHP 以一种形式打印任意数组的方法,我可以将该数组作为赋值包含在我的(测试)代码中。 print_r 产生例如: Array ( [0] => qsr-part:1285 [1]
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: What is the max key size for an array in PHP? 正如标题所说,我想知道
我正在寻找一种让 PHP 以一种形式打印任意数组的方法,我可以将该数组作为赋值包含在我的(测试)代码中。 print_r 产生例如: Array ( [0] => qsr-part:1285 [1]
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
我在 MySQL 数据库中有一个表,其中存储餐厅在每个工作日和时段提供的菜单。 表结构如下: i_type i_name i_cost i_day i_start i_
我有两页。 test1.php 和 test2.php。 我想做的就是在 test1.php 上点击提交,并将 test2.php 显示在 div 中。这实际上工作正常,但我需要向 test2.php
我得到了这个代码。我想通过textarea更新mysql。我在textarea中回显我的MySQL,但我不知道如何更新它,我应该把所有东西都放进去吗,因为_GET模式没有给我任何东西,我也尝试_GET
首先,我是 php 的新手,所以我仍在努力学习。我在 Wordpress 上创建了一个表单,我想将值插入一个表(data_test 表,我已经管理了),然后从 data_test 表中获取所有列(id
我有以下函数可以清理用户或网址的输入: function SanitizeString($var) { $var=stripslashes($var); $va
我有一个 html 页面,它使用 php 文件查询数据库,然后让用户登录,否则拒绝访问。我遇到的问题是它只是重定向到 php 文件的 url,并且从不对发生的事情提供反馈。这是我第一次使用 html、
我有一个页面充满了指向 pdf 的链接,我想跟踪哪些链接被单击。我以为我可以做如下的事情,但遇到了问题: query($sql); if($result){
我正在使用 从外部文本文件加载 HTML/PHP 代码 $f = fopen($filename, "r"); while ($line = fgets($f, 4096)) { print $l
我是一名优秀的程序员,十分优秀!