电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

用PHP發送MIME郵件(五)

瀏覽:3日期:2023-12-30 10:21:16
我們將考查的下一個方法是,build_message(),它占據了整個工作的大部分,但它是通過一個gen_email()的方法來調用的。請注意build_message()是一個私有方法。 <?php function build_message() { $msg = ""$boundary = 'PM'.chr(rand(65, 91)).'------'.md5(uniqid(rand())); # 邊界標識 $nparts = sizeof($this->mimeparts); //情況1:存在附件列表,所以MIME信息頭必須是multipart/mixed if (is_array($this->mimeparts) && ($nparts > 1)) { $c_ver = "MIME-Version: 1.0".CRLF; $c_type = 'Content-Type: multipart/mixed;'.CRLF."tboundary="$boundary"".CRLF; $c_enc = "Content-Transfer-Encoding: ".BIT7.CRLF; $c_desc = $c_desc?"Content-Description: $c_desc".CRLF:""$warning = CRLF.WARNING.CRLF.CRLF ; // 如果存在MIMIE段,則郵件體也要變成附件 if (!empty($this->body)) { $this->attach($this->body, BODY, TEXT, BIT7); } // 現在創建郵件的各個MIME段 for ($i=0 ; $i < $nparts; $i++) { if (!empty($this->mimeparts[$i])) $msg .= CRLF.'--'.$boundary.CRLF.$this->mimeparts[$i].CRLF; } $msg .= '--'.$boundary.'--'.CRLF; $msg = $c_ver.$c_type.$c_enc.$c_desc.$warning.$msg; } else { if (!empty($this->body)) $msg .= $this->body.CRLF.CRLF; } return $msg; } ?> 這個方法有點自相予盾,簡單而又復雜。要看你自已怎么看了。 我們在前面讀到(在MIME基礎中),每一個MIME段都有一個邊界標記,這個標記有一個唯一的id。邊 界標記被用在: MIME信息頭中,用來指示附件必須從哪進行劃分MIME段中;實際用在每一段的前面和后面來劃分附件的邊界。(回想一下Alexander的有著圖片和圖譜的郵件!) (記住:最后一個邊界標記要以兩個連接符(--)結束,用于指示范圍結束)。 $boundary包含了邊界標記,并且它是通過一個隨機數進行了唯一化再做MD5哈希生成的。另外,我們給$boundary冠以一個"PM?"的前綴,這里"?"是一個隨機字母。舉一個$boundary的例子就是"PMK------2345ee5de0052eba4daf47287953d37e"(PM表示PHP MIME,所以你可以將其改為你的可能的初始值!) 在生成MIME頭的處理中我們必須考慮兩種情況。這些情況影響了郵件的原始郵件體($body在構造函數中)以哪種方式被看待和MIME信息頭的特別表示。情況1就是寫這篇文章的原因,并且你會看到:可以有許多的附件被包含!在這種情況下,請注意作為信息的部分被放上了警告字符串"This is a MIMEencoding message"。因此,真正的消息體本身也必須以附件形式加到信息中!郵件的文本通常是附件列表中的第一個附件,在我們的例子中就是$mimeparts。這個正好就是為什么我們要占用一個$mimeparts索引的原因,以便讓第一個索引(是0)可以用于郵件文本部分。郵件體必須以7bit編碼進 行附加。 <?php if (!empty($this->body)) { $this->attach($this->body, BODY, TEXT, BIT7); } ?> 上面的一小段代碼完成附加郵件文本部分作為一個MIME附件的工作。注意,我們使用了'BODY'常量來指示attach()要將附件加到何處。 第二種情況就是當不存在附件時,在這種情況下,如果提供了郵件文本,它將是包含在局部變量$msg 中的唯一信息;在這種情況下不需要MIME頭。(然而,在這種情況下我們還應該只把MIME-Version頭指定出來----回過頭到再看一下前面的演示的最簡單的MIME信息。) MIME信息頭(MIME-Version,Content-Type, 等等。)在有附件的時候被創建。為了用MIME消息頭來創建消息體,首先MIME信息頭要被創建。然后各個有效的MIME段通過$mimeheaders數組被反復處理。 這就是邊界標識被實際使用的地點。根據規則的一致性,對一個MIME段被前綴上兩個連接符('-- '.$BOUNDARY.crlf)并且在最后一個MIME段的后面,在邊界標識后追加兩個連接符表示郵件范圍結束。 在變量$msg中的完整的信息作為這個方法的值被返回。 下一個方法,get_email()通過build_message()方法完成MIME消息的生成。因為build_message()是一個內部方法,get_email()在調用完build_message()之后,創建RFC 822的信息頭并且追加上MIME信息。 <?php function gen_email($force=false) { if (!empty($this->email) && !$force) return $this->email ; // saves processing $email = ""if (empty($this->subject)) $this->subject = NOSUBJECT; if (!empty($this->from)) $email .= 'From: '.$this->from.CRLF; if (!empty($this->headers)) $email .= $this->headers.CRLF; $email .= $this->build_message(); $this->email = $email; return $this->email; } ?> 對于我們的類的一個實例來說,類的成員$email擁有生成的整個郵件信息。為了避免信息被無必要的重新生成,這個方法繼續創建郵件頭,并且只有當$mail為空時才調用build_message()。然而,你可以通過調用gen_email()來強制重新處理。(如果"To"信息被改變或加入了一個新的附件,調用者顯示想這么做)。 gen_email()創建了更熟悉的From頭。另外,如果沒有指定主題,它將主題設為缺省值(No Subject)。 我們直到后面才將To和Subject 的內含保存起來。這個方法返回完整的郵件信息,這樣就結束了創建MIME信息的任務。;;
標簽: PHP
主站蜘蛛池模板: 郑州律师咨询-郑州律师事务所_河南锦盾律师事务所 | 深圳办公室装修,办公楼/写字楼装修设计,一级资质 - ADD写艺 | 余姚生活网_余姚论坛_余姚市综合门户网站 | 考勤系统_人事考勤管理系统_本地部署BS考勤系统_考勤软件_天时考勤管理专家 | 深圳富泰鑫五金_五金冲压件加工_五金配件加工_精密零件加工厂 | 电表箱-浙江迈峰电力设备有限公司-电表箱专业制造商 | 彼得逊采泥器-定深式采泥器-电动土壤采样器-土壤样品风干机-常州索奥仪器制造有限公司 | 炒货机-炒菜机-炒酱机-炒米机@霍氏机械 | 自进式锚杆-自钻式中空注浆锚杆-洛阳恒诺锚固锚杆生产厂家 | 江苏皓越真空设备有限公司 | SMC-SMC电磁阀-日本SMC气缸-SMC气动元件展示网 | 武汉高温老化房,恒温恒湿试验箱,冷热冲击试验箱-武汉安德信检测设备有限公司 | 体感VRAR全息沉浸式3D投影多媒体展厅展会游戏互动-万展互动 | 油漆辅料厂家_阴阳脚线_艺术漆厂家_内外墙涂料施工_乳胶漆专用防霉腻子粉_轻质粉刷石膏-魔法涂涂 | 气动绞车,山东气动绞车,气动绞车厂家-烟台博海石油机械有限公司 气动隔膜泵厂家-温州永嘉定远泵阀有限公司 | 沈阳真空机_沈阳真空包装机_沈阳大米真空包装机-沈阳海鹞真空包装机械有限公司 | BESWICK球阀,BESWICK接头,BURKERT膜片阀,美国SEL继电器-东莞市广联自动化科技有限公司 | 深圳激光打标机_激光打标机_激光焊接机_激光切割机_同体激光打标机-深圳市创想激光科技有限公司 深圳快餐店设计-餐饮设计公司-餐饮空间品牌全案设计-深圳市勤蜂装饰工程 | 双效节能浓缩器-热回流提取浓缩机组-温州市利宏机械 | 真石漆,山东真石漆,真石漆厂家,真石漆价格-山东新佳涂料有限公司 | 铝机箱_铝外壳加工_铝外壳厂家_CNC散热器加工-惠州市铂源五金制品有限公司 | 品牌策划-品牌设计-济南之式传媒广告有限公司官网-提供品牌整合丨影视创意丨公关活动丨数字营销丨自媒体运营丨数字营销 | 深圳激光打标机_激光打标机_激光焊接机_激光切割机_同体激光打标机-深圳市创想激光科技有限公司 深圳快餐店设计-餐饮设计公司-餐饮空间品牌全案设计-深圳市勤蜂装饰工程 | 地埋式垃圾站厂家【佳星环保】小区压缩垃圾中转站转运站 | 济南网站建设|济南建网站|济南网站建设公司【济南腾飞网络】【荐】 | 微型驱动系统解决方案-深圳市兆威机电股份有限公司 | 铝机箱_铝外壳加工_铝外壳厂家_CNC散热器加工-惠州市铂源五金制品有限公司 | 称重传感器,测力传感器,拉压力传感器,压力变送器,扭矩传感器,南京凯基特电气有限公司 | 杰恒蠕动泵-蠕动泵专业厂家-19年专注蠕动泵 | 北京公积金代办/租房发票/租房备案-北京金鼎源公积金提取服务中心 | 土壤检测仪器_行星式球磨仪_土壤团粒分析仪厂家_山东莱恩德智能科技有限公司 | BESWICK球阀,BESWICK接头,BURKERT膜片阀,美国SEL继电器-东莞市广联自动化科技有限公司 | 北京易通慧公司从事北京网站优化,北京网络推广、网站建设一站式服务商-北京网站优化公司 | 潍坊大集网-潍坊信息港-潍坊信息网 | 医学模型生产厂家-显微手术模拟训练器-仿真手术模拟训练系统-北京医教科技 | 铝合金风口-玻璃钢轴流风机-玻璃钢屋顶风机-德州东润空调设备有限公司 | PCB接线端子_栅板式端子_线路板连接器_端子排生产厂家-置恒电气 喷码机,激光喷码打码机,鸡蛋打码机,手持打码机,自动喷码机,一物一码防伪溯源-恒欣瑞达有限公司 假肢-假肢价格-假肢厂家-河南假肢-郑州市力康假肢矫形器有限公司 | 岩棉切条机厂家_玻璃棉裁条机_水泥基保温板设备-廊坊鹏恒机械 | 周口市风机厂,周鼓风机,河南省周口市风机厂 | 数显恒温油浴-电砂浴-高温油浴振荡器-常州迈科诺仪器有限公司 | 暖气片十大品牌厂家_铜铝复合暖气片厂家_暖气片什么牌子好_欣鑫达散热器 |