成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

用php發送帶附件的Email

瀏覽:173日期:2024-01-30 16:09:49

參考了一下網上的文章。俗話說,天下文章一大抄,看你會抄不會抄。關鍵是能為我所用,這是最重要的。廢話不多講,let‘s go。 其實發mail很簡單,php有現成的函數,可以參考php 的 manual,特別是第四個例子,講的很詳細。 關鍵是怎么把上傳附件跟郵件發送結合起來。關于文件的上傳,可以參考http://blog.csdn.net/slamdunk3/archive/2005/02/23/299025.aspx 這篇文章。 講一下 文件上傳的方法及其屬性: 我們假設文件上傳字段的名稱如上例所示,為 userfile。名稱可隨意命名。 表單里可以這樣寫: <input type=file name=userfile> 提交之后,php利用$_FILES 數組 自動獲取相關參數: $_FILES['userfile']['name'] 客戶端機器文件的原名稱。 $_FILES['userfile']['type'] 文件的 MIME 類型,需要瀏覽器提供該信息的支持,例如“image/gif”。 $_FILES['userfile']['size'] 已上傳文件的大小,單位為字節。 $_FILES['userfile']['tmp_name'] 文件被上傳后在服務端儲存的臨時文件名。 $_FILES['userfile']['error'] 和該文件上傳相關的錯誤代碼。['error'] 是在 PHP 4.2.0 版本中增加的。

注: 在 PHP 4.1.0 版本以前該數組的名稱為 $HTTP_POST_FILES,它并不像 $_FILES 一樣是自動全局變量。PHP 3 不支持 $HTTP_POST_FILES 數組。 當 php.ini 中的 register_globals 被設置為 on 時,您可以使用更多的變量。例如,$userfile_name 等價于 $_FILES['userfile']['name'],$userfile_type 等價于 $_FILES['userfile']['type'] 等。請記住從 PHP 4.2.0 開始,register_globals 的默認值為 off,因此我們建議您不要依賴于改設置項而使用剛剛提到的那些附加變量。 文件被上傳后,默認地會被儲存到服務端的默認臨時目錄中,除非您將 php.ini 中的 upload_tmp_dir 設置為了其它的路徑。服務端的默認臨時目錄可以通過更改 PHP 運行環境的環境變量 TMPDIR 來重新設置,但是在 PHP 腳本內部通過運行 putenv() 函數來設置是不起作用的。該環境變量也可以用來確認其它的操作也是在上傳的文件上進行的。 有了這些,我們再看與郵件相關的東西。下面是一個帶附件(一個HTML文件)電子郵件的例子。

Return-Path: Date: Mon, 22 May 2000 19:17:29 +0000 From: Someone To: Person Message-id: <83729KI93LI9214@example.com> Content-type: multipart/mixed; boundary='396d983d6b89a' Subject: Here's the subject --396d983d6b89a Content-type: text/plain; charset=iso-8859-1 Content-transfer-encoding: 8bit

This is the body of the email.

--396d983d6b89a Content-type: text/html; name=attachment.html Content-disposition: inline; filename=attachment.html Content-transfer-encoding: 8bit

This is the attached HTML file

--396d983d6b89a--

前面的7行是郵件的頭,其中值得注意的是Content-type頭部分。這個頭告訴郵件程序電子郵件是由一個以上的部分組成的。不含附件的郵件只有一個部分:消息本身。帶附件的電子通常至少由兩部分組成:消息和附件。這樣,帶兩個附件的郵件由三部分組成:消息,第一個附件和第二個附件。

帶附件的電子郵件的不同部分之間用分界線來分隔。分界線在Content--type頭中定義。郵件的每個新部分以兩個連字號(--)和分界線開始。 最后一個分界線后也有兩個連字號,表示這個郵件中沒有其它的部分了。

在每個分界線后有一些行,用來告訴郵件程序這個部分的內容的類型。 比如,看看上面例子中第一個分界線后面的兩行--以Content-type: text/plain開頭的行。這些行說明后面的部分是ISO-8859-1字符集的純文本。跟在第二個分界線后的行告訴郵件程序現在的部分是一個HTML文件,它的名字是'attachment.html'。

Content-disposition這持告訴郵件程序如果可能就以內嵌的方式顯示附件。現在新的郵件程序會在消息后顯示HTML的內容。如果Content- disposition被設為attachment,那么郵件程序就不會顯示HTML文件的內容,而是顯示一個連接到文件的圖標(或其它的類似的東西)。收件人要看附件的內容,必須點擊這個圖標。一般情況下,如果附件是一些文本(包含HTML),Content-disposition會被設為inline,這是因為現在大部分郵件程序能夠不借助其它瀏覽器而直接顯示附件(文本)的內容。如果附件不是文本(比如圖片或其它類似的內容),Content-disposition 就設為attachment。 我們仿照上面的例子,自己寫一個php程序,可以對提交的 收信人,發送人,信件內容,附件進行處理。 首先建立一個靜態頁面,代碼如下: <html> <body> <form method=post name=sndml action=sendmail.php ENCTYPE='multipart/form-data'> <table> <tr ><td>發送者:</td> <td><input type=text name=from ></td> </tr> <tr ><td>接受者:</td> <td><input type=text name=to ></td> </tr> <tr ><td>下載提示:</td> <td><input type=text name=text ></td> </tr> <tr ><td>源數據文件:</td> <td><input type=file name=upload_file size=40></td> </tr> <tr><td>&nbsp</td> <td><input type='submit' value='確定'> </td> </tr> </table> </form> </body> </html> 要注意的是 : 表單里 ENCTYPE='multipart/form-data' 一定要有。 再來看一下 發送郵件的php程序: <?php //文本內容 $text = $_POST['text']; //標題 $subject = $_POST['subject']; //發送者 $from = $_POST['from']; //接受者 $to = $_POST['to']; //附件 $file = $_FILES['upload_file']['tmp_name']; // 定義分界線 $boundary = uniqid( ''); $headers = 'Content-type: multipart/mixed; boundary= $boundaryrn'; $headers .= 'From:$fromrn'; //確定上傳文件的MIME類型 if($_FILES['upload_file']['type']) $mimeType = $_FILES['upload_file']['type']; else $mimeType ='application/unknown'; //文件名 $fileName = $_FILES['upload_file']['name'];

// 打開文件 $fp = fopen($file, 'r'); // 把整個文件讀入一個變量 $read = fread($fp, filesize($file)); //我們用base64方法把它編碼 $read = base64_encode($read); //把這個長字符串切成由每行76個字符組成的小塊 $read = chunk_split($read); //現在我們可以建立郵件的主體 $body = '--$boundary Content-type: text/plain; charset=iso-8859-1 Content-transfer-encoding: 8bit $text --$boundary Content-type: $mimeType; name=$fileName Content-disposition: attachment; filename=$fileName Content-transfer-encoding: base64 $read --$boundary--'; //發送郵件 if(mail($to, $subject,$body,$headers)) print 'OK! the mail $from --- $to has been send<br>'; else print 'fail to send mail <br>'; ?> 看不明白沒關系,我來說明一下: 1,郵件頭的構造 :一般包括 內容類型(Content-type)要發送附件,設置為 multipart/mixed 意思是多個部分 (郵件本身+附件)。 boundary ,就是上面提到的分界線,他的值用php自帶的 uniqid();函數取得 接受方,抄送等,在后面加上 From: Cc:。與上面的 Content-type boundary 之間用 rn 分割 。 2 郵件體 如果是純文本的郵件內容 它的格式如下: Content-type: text/plain; charset=iso-8859-1 Content-transfer-encoding: 8bit 后面再緊接著加上 郵件的文本內容。 如果是附件: Content-type: $mimeType; name=$fileName Content-disposition: attachment; filename=$fileName Content-transfer-encoding: base64 后面再緊接著加上 附件內容。 $mimeType 是附件的 MIME類型。 可以用 $_FILES['upload_file']['type'] 得到。 $fileName 就是附件的名字了 郵件文本內容和附件之間用 boundary 分割。 有人會問,附件內容是什么?附件內容就是用read函數讀入所上傳的附件,然后再把它經過base64編碼之后再用chunk_split 大卸N塊,每塊大小是默認的76字符。 好了,現在再去看那段程序,應該沒什么問題了吧?把相應的變量帶入mail函數里面就ok了。 以上程序在 PHP Version 4.3.8 freeBSD 下測試通過。 參考文章:《php 發送帶附件的郵件 作者: cn-linux》

標簽: PHP
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
日韩精品欧美成人高清一区二区| 麻豆精品一区二区av白丝在线| 亚洲一级二级三级| 欧美视频不卡| 国产亚洲美州欧州综合国| 成人av网站在线观看| 日韩欧美成人一区| 国产成人在线电影| 91精品午夜视频| 蜜桃视频在线一区| 欧美主播一区二区三区| 日韩影视精彩在线| 午夜综合激情| 日韩在线卡一卡二| 欧美综合一区二区三区| 久久99精品国产麻豆婷婷| 色香蕉久久蜜桃| 蜜臀av一区二区| 日本韩国欧美三级| 日本欧美一区二区三区乱码| 91黄色小视频| 九九视频精品免费| 欧美精品在欧美一区二区少妇| 国产一区三区三区| 欧美放荡的少妇| 国产ts人妖一区二区| 精品国产网站在线观看| 99久久婷婷国产综合精品电影 | 久久大逼视频| 天堂成人国产精品一区| 日本高清不卡在线观看| 麻豆成人免费电影| 在线综合视频播放| 成人免费毛片片v| 国产日韩欧美高清| 欧美日本一区| 亚洲最大色网站| 男女av一区三区二区色多| 麻豆一区二区三区| 欧美一区二区三区免费观看视频| 不卡的av电影在线观看| 欧美激情资源网| 一本色道久久综合亚洲精品不卡| 性感美女久久精品| 欧美人伦禁忌dvd放荡欲情| 粉嫩嫩av羞羞动漫久久久| 精品国产91乱码一区二区三区 | 亚洲成人免费视| 在线日韩一区二区| 风间由美一区二区三区在线观看| 国产精品毛片久久久久久久| 亚洲精品欧洲| 男人的天堂久久精品| 日韩午夜激情视频| 欧美大片专区| 亚洲一区二区三区三| 欧美丝袜丝交足nylons图片| 国产福利一区在线观看| 国产精品视频你懂的| 午夜亚洲性色福利视频| 韩日欧美一区二区三区| 日韩欧美电影一二三| 欧美日韩一区在线播放| 亚洲香肠在线观看| 欧美区在线观看| 欧美在线3区| 亚洲一区二三区| 欧美日韩一区二区三区在线| av爱爱亚洲一区| 悠悠色在线精品| 欧美电影一区二区| 韩国久久久久| 另类中文字幕网| 国产欧美精品在线观看| 色婷婷综合激情| 9人人澡人人爽人人精品| 亚洲精品日日夜夜| 欧美日韩国产另类一区| 欧美91精品| 视频一区中文字幕| 2020国产精品自拍| 亚洲女人av| 成人丝袜高跟foot| 亚洲一区二区成人在线观看| 欧美欧美午夜aⅴ在线观看| 国产一区二区无遮挡| 日本伊人色综合网| 久久综合久久综合亚洲| 亚洲一区二区三区色| 国产一区二区日韩精品| 亚洲视频中文字幕| 精品视频在线免费观看| 欧美成人免费在线| 免费观看成人鲁鲁鲁鲁鲁视频| 久久久久成人黄色影片| 久久在线视频| 99久久免费国产| 视频一区中文字幕| 国产欧美日韩三级| 欧美性一二三区| 国模 一区 二区 三区| 另类小说色综合网站| 亚洲婷婷综合色高清在线| 欧美区视频在线观看| 亚洲精品影院在线观看| 国产高清精品网站| 亚洲精品自拍动漫在线| 欧美一区二区精品久久911| 国产一区二区三区高清| 91在线观看美女| 麻豆精品视频在线观看免费| 中文字幕综合网| 欧美成人video| 久久永久免费| 亚洲三级国产| eeuss鲁片一区二区三区在线看| 五月天激情综合网| 国产精品女上位| 日韩精品资源二区在线| 色偷偷成人一区二区三区91 | 欧美在线视频不卡| 999在线观看精品免费不卡网站| 99在线精品观看| 久久精品国产久精国产爱| 亚洲精品中文在线观看| 久久精品视频一区二区| 91精品国产综合久久久蜜臀图片 | 久久久蜜桃一区二区人| 国产精品成人观看视频免费| 国产一本一道久久香蕉| 亚洲成人黄色影院| 一区二区中文视频| 精品国产凹凸成av人导航| 在线视频欧美区| 国产欧美亚洲一区| 欧美三区美女| 成人福利在线看| 久久99久久久久| 亚洲福利一区二区| 国产精品成人免费在线| 2020国产精品| 日韩一区二区在线看片| 91国产免费观看| 国产亚洲精品v| 亚洲性人人天天夜夜摸| 99久久er热在这里只有精品66| 国产在线观看一区二区 | 99综合影院在线| 国产一区高清在线| 日本怡春院一区二区| 亚洲国产精品欧美一二99| 中文字幕一区在线观看视频| 国产网红主播福利一区二区| 精品久久久久久久人人人人传媒| 欧美久久高跟鞋激| 欧美视频中文字幕| 久久高清一区| 国产美女一区| 亚洲美女一区| 亚洲成人自拍视频| 黑丝一区二区三区| 暖暖成人免费视频| 成人久久久精品乱码一区二区三区| 久久99久久久久| 日本不卡在线视频| 日韩国产一二三区| 日韩专区欧美专区| 五月天一区二区三区| 亚洲va欧美va国产va天堂影院| 亚洲女同一区二区| 亚洲丝袜自拍清纯另类| 亚洲欧洲日韩av| 国产精品乱码久久久久久| 国产网红主播福利一区二区| 2022国产精品视频| 久久综合资源网| 久久精品人人做| 精品国产污网站| 精品99一区二区三区| 日韩欧美亚洲国产另类| 欧美成人女星排名| 日韩女优视频免费观看| 精品伦理精品一区| 国产天堂亚洲国产碰碰| 国产目拍亚洲精品99久久精品| 国产日韩欧美一区二区三区综合| 久久精品人人做人人爽人人| 欧美极品xxx| 亚洲欧洲美洲综合色网| 亚洲久草在线视频| 亚洲国产精品一区二区久久| 日韩激情中文字幕| 日本不卡视频在线观看| 久久99精品国产91久久来源| 国产精品一区三区| 波多野结衣中文字幕一区二区三区| av在线免费不卡| 欧美日本一区| 国产日韩亚洲| 欧美影院午夜播放|