日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

用PHP發(fā)送有附件的電子郵件

瀏覽:170日期:2023-12-31 08:22:01
我經(jīng)常聽到這樣一個問題:"我有一個從網(wǎng)站發(fā)來的合同。我如何給通過表單發(fā)送的電子郵件增加一個附件呢?"首先我要說的是要做到這個沒有什么簡單的辦法。你要很好的理解PHP或其它的服務(wù)器端的腳本語言。當(dāng)然你還要一個真正支持PHP的網(wǎng)站的賬號。如果滿足了這個前提,在你讀完了本章后就可以用PHP發(fā)送帶附件的電子郵件了。 1. 附件是如何工作的 如果你曾經(jīng)在PHP的手冊中搜索過"附件"函數(shù),那么結(jié)果可能是什么都沒有(至少在我寫本文的時間還沒有)。后來你就要花很多時間來了解這方面的知識。 你也許會想當(dāng)你給某個人發(fā)送一封帶附件的電子郵件時,附件是和郵件一起放到收件人的信箱里的(比如,如果你給他/她發(fā)了一個PNG的圖片文件,他/她的信箱里會包含一個txt文件(電子郵件)和一個.png文件(附件))。但這不是它的工作原理。當(dāng)你加入一個附件時,你的郵件程序把附件轉(zhuǎn)換成純文本文件,并在你寫的內(nèi)容(實(shí)際的電子郵件)后面插入這個文本塊。這個,當(dāng)你把所有的東西發(fā)出來后,收件人的信箱里只有一個純文本文件--一個同時包含附件和實(shí)際電子郵件內(nèi)容的文件。 下面是一個帶附件(一個HTML文件)電子郵件的例子。我已經(jīng)標(biāo)注了其中重要的幾行:Return-Path: <someone@example.com>Date: Mon, 22 May 2000 19:17:29 +0000From: Someone <someone@example.com>To: Person <person@eksempel.dk>Message-id: <83729KI93LI9214@example.com>Content-type: multipart/mixed; boundary="396d983d6b89a"Subject: Here's the subject --396d983d6b89aContent-type: text/plain; charset=iso-8859-1Content-transfer-encoding: 8bitThis is the body of the email.--396d983d6b89aContent-type: text/html; name=attachment.htmlContent-disposition: inline; filename=attachment.htmlContent-transfer-encoding: 8bit<html><head><title>The attachment</title></head><body><h2>This is the attached HTML file</h2></body></html>--396d983d6b89a-- 前面的7行是郵件的頭,其中值得注意的是Content-type頭部分。這個頭告訴郵件程序電子郵件是由一個以上的部分組成的。不含附件的郵件只有一個部分:消息本身。帶附件的電子通常至少由兩部分組成:消息和附件。這樣,帶兩個附件的郵件由三部分組成:消息,第一個附件和第二個附件。 帶附件的電子郵件的不同部分之間用分界線來分隔。分界線在Content-type頭中定義。郵件的每個新部分以兩個連字號(--)和分界線開始。最后一個分界線后也有兩個連字號,表示這個郵件中沒有其它的部分了。 在每個分界線后有一些行,用來告訴郵件程序這個部分的內(nèi)容的類型。比如,看看上面例子中第一個分界線后面的兩行--以Content-type: text/plain開頭的行。這些行說明后面的部分是ISO-8859-1字符集的純文本。跟在第二個分界線后的行告訴郵件程序現(xiàn)在的部分是一個HTML文件,它的名字是"attachment.html"。 Content-disposition這持告訴郵件程序如果可能就以內(nèi)嵌的方式顯示附件。現(xiàn)在新的郵件程序會在消息后顯示HTML的內(nèi)容。如果Content-disposition被設(shè)為attachment,那么郵件程序就不會顯示HTML文件的內(nèi)容,而是顯示一個連接到文件的圖標(biāo)(或其它的類似的東西)。收件人要看附件的內(nèi)容,必須點(diǎn)擊這個圖標(biāo)。一般情況下,如果附件是一些文本(包含HTML),Content-disposition會被設(shè)為inline,這是因?yàn)楝F(xiàn)在大部分郵件程序能夠不借助其它瀏覽器而直接顯示附件(文本)的內(nèi)容。如果附件不是文本(比如圖片或其它類似的內(nèi)容),Content-disposition就設(shè)為attachment。 2. 用PHP生成帶附件的電子郵件這里一個例子,告訴你如果把一個定義好的HTML文件加為郵件的附件: <?php# 我們首先寫實(shí)際的消息內(nèi)容 $emailBody =;;"This is text that goes into the body of the email.";# 然后我們要作為附件的HTML文件 $attachment =;;"<html><head><title>The attached file</title></head><body><h2>This is the attached HTML file</h2></body></html>";# 建立在郵件中分隔不同部分的分界線。# 基本上,分界線可以是任意的字符串。# 但是重要的一點(diǎn)是確定一個寫郵件的人# 這會隨意寫出的字符串,所以我們用# uniqid函數(shù)來產(chǎn)生一個隨機(jī)的字符串。$boundary = uniqid( "");# 現(xiàn)在我們要建立郵件頭。不要忘了插入# Content-type頭來說明這個郵件包含一個或更多的附件。$headers =;;"From: someone@example.comContent-type: multipart/mixed; boundary="$boundary"";# 好,現(xiàn)在我們已經(jīng)有了郵件的所有內(nèi)容。# 下一件事是修改郵件的主體。$emailBody =;;"--$boundaryContent-type: text/plain; charset=iso-8859-1Content-transfer-encoding: 8bit$emailBody--$boundaryContent-type: text/html; name=attachment.htmlContent-disposition: inline; filename=attachment.htmlContent-transfer-encoding: 8bit$attachment--$boundary--";# 現(xiàn)在可以把郵件發(fā)出去了 mail( "person@eksempel.dk",;;"The subject", $emailBody, $headers);?> 3. 把用戶上傳的文件作為附件你也許會覺得上面的例子難以理解,但下面...。在下面的例子中事情更難了,因?yàn)槲覀円靡粋€表單讓用戶上傳他們的文件,并把這個文件作為我們要發(fā)的郵件的附件。麻煩的是我們不能預(yù)先知道文件的MIME類型。在前面的例子中,我們已經(jīng)知道該它是一個HTML文件,所以給這個附件設(shè)置Content-type頭是很簡單的。在下面的例子中,MIME類型可能是任意的,因?yàn)橛脩艨赡軙蟼饕粋€HTML文件,一個PNG文件,一個vCard文件,或者其它的東西。讓我們來看看例子:<?php# 現(xiàn)在我們來生成表單。在產(chǎn)生可以上傳文件的表單時,# 不要忘了把<form>標(biāo)簽的"enctype"屬性設(shè)為"multipart/form-data". echo;;"<form action='$PHP_SELF' enctype='multipart/form-data' method='post'>n";echo;;"<input type='text' name='from'><br>n";echo;;"<input type='text' name='to'><br>n";echo;;"<input type='text' name='subject'><br>n";echo;;"<input type='file' name='attachment'><br>n";echo;;"<textarea name='body'></textarea><br>n";echo;;"<input type='submit' name='send' value='Send'>n";echo;;"</form>n";# 如果用戶已經(jīng)按了"Send"按鈕" if ($send) {;;;;;# 定義分界線 ;;;;$boundary = uniqid( "");;;;;;# 生成郵件頭 ;;;;$headers =;;"From: $fromContent-type: multipart/mixed; boundary="$boundary"";;;;;;# 確定上傳文件的MIME類型 ;;;;if ($attachment_type) $mimeType = $attachment_type;;;;;;# 如果瀏覽器沒有指定文件的MIME類型,# 我們可以把它設(shè)為"application/unknown". ;;;;else $mimeType =;;"application/unknown";;;;;;# 確定文件的名字 ;;;;$fileName = $attachment_name;;;;;;# 打開文件 ;;;;$fp = fopen($attachment,;;"r");;;;;;# 把整個文件讀入一個變量 ;;;;$read = fread($fp, filesize($attachment));;;;;;# 好,現(xiàn)在變量$read中保存的是包含整個文件內(nèi)容的文本塊。# 現(xiàn)在我們要把這個文本塊轉(zhuǎn)換成郵件程序可以讀懂的格式#;;我們用base64方法把它編碼;;;;$read = base64_encode($read);;;;;;# 現(xiàn)在我們有一個用base64方法編碼的長字符串。# 下一件事是要把這個長字符串切成由每行76個字符組成的小塊;;;;$read = chunk_split($read);;;;;;# 現(xiàn)在我們可以建立郵件的主體 ;;;;$body =;;"--$boundaryContent-type: text/plain; charset=iso-8859-1Content-transfer-encoding: 8bit$body--$boundaryContent-type: $mimeType; name=$fileNameContent-disposition: attachment; filename=$fileNameContent-transfer-encoding: base64$read--$boundary--";;;;;;# 發(fā)送郵件 ;;;;mail($to, $subject, $body, $headers);}?>這就是全部內(nèi)容。如果你不能很好地理解上面的例子,我的建議是給你自己發(fā)送幾個帶附件的郵件,然后仔細(xì)研究郵件的源代碼。
標(biāo)簽: PHP
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
99久久婷婷这里只有精品| 亚洲涩涩在线| 久久久成人网| 国产传媒在线| 日韩欧美自拍| 亚洲国内欧美| 国产日韩综合| 在线综合视频| 亚洲va久久| 欧美日韩亚洲国产精品| 国产毛片精品久久| 高清av一区| 欧美.日韩.国产.一区.二区| 亚洲成人精品| 日韩精品免费一区二区在线观看| 麻豆国产91在线播放| 综合日韩av| 欧美日韩三区| 久久精品999| 日韩欧美三级| 91久久久精品国产| 亚洲精品日本| 国产精品久久久久久久久久妞妞| 国产精品毛片久久| 亚洲精华国产欧美| 欧美欧美黄在线二区| 精品成av人一区二区三区| 亚洲精品网址| 久久精品一本| 午夜日韩av| 国产精品三级| 午夜日韩福利| 久久精品国产99国产精品| 亚洲国产日韩欧美在线| 日韩av网站免费在线| 理论片午夜视频在线观看| 日本欧美在线看| 精品欧美一区二区三区在线观看| 亚洲精品免费观看| 日韩av免费| 久久精品一区| 婷婷综合成人| 夜夜嗨一区二区| 久久毛片亚洲| 日韩超碰人人爽人人做人人添| 成人精品高清在线视频| 亚洲精品一级| 蜜臀av国产精品久久久久| 日韩欧美1区| 久久一区精品| 久久国产乱子精品免费女| 免费日韩av片| 久久亚洲国产| 国产精品原创| 精品国产乱码| 国产精品v亚洲精品v日韩精品 | 国产精品天堂蜜av在线播放| 亚洲电影在线一区二区三区| 日韩精品dvd| av日韩中文| 亚洲精品福利电影| 成人免费一区| 精品视频一二| av资源中文在线天堂| 超级白嫩亚洲国产第一| 日本欧美不卡| 欧美色图国产精品| 亚洲少妇在线| 亚洲一区二区av| 91精品国产一区二区在线观看| 亚洲精品九九| 91精品美女| 麻豆精品蜜桃视频网站| 欧美a一区二区| 人在线成免费视频| 美女av在线免费看| 美女福利一区二区三区| 成人免费网站www网站高清| 92国产精品| 午夜久久黄色| 国产探花一区在线观看| 欧美日韩一区二区国产| 久久香蕉网站| 美女网站一区| 日韩精品三级| 国产91在线精品| 亚洲色诱最新| 日韩毛片一区| 粉嫩av一区二区三区四区五区 | 欧美好骚综合网| 午夜在线播放视频欧美| 国产欧美69| 午夜精品一区二区三区国产| 免播放器亚洲| 成人精品高清在线视频| 日本欧美在线看| 国产va免费精品观看精品视频| 91精品电影| 麻豆中文一区二区| 国产一区白浆| 成人亚洲精品| 日韩精品免费视频人成| 精品国产免费人成网站| 日本高清久久| 欧美日韩在线观看视频小说| 欧美黑人做爰爽爽爽| 亚洲欧美日韩高清在线| 日产午夜精品一线二线三线| 欧美天堂亚洲电影院在线观看| 国产精品宾馆| 日韩精品亚洲专区在线观看| 黑丝一区二区三区| av资源中文在线| 美女av在线免费看| 国产精品网在线观看| 日韩在线不卡| 日本欧美一区二区| 99精品在线观看| 国产精品婷婷| 欧美一级二级三级视频| 久久久久九九精品影院| 亚洲天堂免费电影| 色婷婷色综合| 日韩动漫一区| 国产精品magnet| 国产精品久久久久77777丨| 欧美午夜三级| 久久三级毛片| 日韩欧美国产精品综合嫩v| 日韩欧美不卡| 蜜桃成人av| 蜜臀va亚洲va欧美va天堂| 日韩高清二区| 国产精品一区二区av交换| 国产精品15p| 亚洲最新无码中文字幕久久 | 日韩电影二区| 激情婷婷久久| 亚洲精品一级| 天使萌一区二区三区免费观看| 免费观看在线综合| 久久一区精品| 在线精品亚洲| 国产一区二区色噜噜| 欧美~级网站不卡| 国产视频一区二区在线播放| 久久精品国内一区二区三区水蜜桃| 日韩专区在线视频| 国产在线视频欧美一区| 亚洲三级精品| 国产精品毛片一区二区在线看| 国户精品久久久久久久久久久不卡| 亚洲最新av| 秋霞影院一区二区三区| 久久国产精品免费一区二区三区| 激情五月色综合国产精品| 欧美一级二级三级视频| 激情久久五月| 国产精品白浆| 视频在线在亚洲| 91精品xxx在线观看| 久久国产乱子精品免费女| 香蕉成人久久| 怡红院精品视频在线观看极品| 国产99在线| 国产精品99一区二区| 久久精品青草| 国产一区 二区| 国产亚洲观看| 国产精品白浆| 另类小说一区二区三区| 国产精品一区二区精品视频观看| 蜜桃久久av一区| 久久亚洲色图| 日韩欧美高清一区二区三区| 蜜臀精品一区二区三区在线观看| 亚洲色诱最新| 中文字幕一区二区三区在线视频| 日韩电影免费网址| 成人在线免费观看91| 久久狠狠久久| 亚洲一区二区三区四区电影| 成人av动漫在线观看| 婷婷综合六月| 国产精品久久久久蜜臀| 国产一区二区三区四区大秀| 国产一卡不卡| 国产精品一区二区三区美女| 日本v片在线高清不卡在线观看| 蜜桃视频第一区免费观看| 喷白浆一区二区| 少妇精品久久久一区二区| 综合激情视频| 婷婷亚洲精品| 91av一区| 精品国产亚洲日本| 国内自拍视频一区二区三区| 久久精品色播| 婷婷成人在线| 免播放器亚洲一区|