發送郵件
一. 程式思路
所有的程式,主要實現兩個功能,一、發送郵件;二、上傳附件。使用無組件上傳程式來上傳附件到伺服器,在發送完後,將刪除伺服器上的郵件。實現這兩個功能,需要一個資料庫來存放郵件內容及附件資訊(檔案名稱)。郵件的發送有兩種情況:一是,無附件的郵件;二是,有附件的郵件。
1.發送無附件的郵件。使用者根據實際情況來填寫收信人、發信人、抄送、密送、SMTP伺服器位址、郵件主題、郵件內容等資訊,這些資訊中,收信人、發信人、郵件主題、郵件內容是必須填寫的,否則將收不到郵件。如果SMTP伺服器支援SMTP驗證,那麼你就把你在該郵局的使用者名稱和密碼填上。如,你填的發信人地址是xxxx@163.com,因為163的SMTP服務,支援SMTP驗證,所以你就要需要你在163的使用者名稱xxxx,密碼****,這樣才能順利發送郵件;如,你發信人地址是xxxx@hotmail.com,因為hotmail是不需要SMTP驗證的,所以你不用填寫使用者名稱和密碼。只要記住一點,你的發信的SMTP伺服器支援SMTP驗證的話,你就要填寫相應的使用者名稱和密碼。你在填寫完表單後,點“發送”按鈕就直接發送郵件了。這個過程是在mail.asp和inc_clsEmail.asp完成的。
2.發送帶附件的郵件。這個過程,主要分三步,一、填寫表單資訊(同上),不過在點“發送”按鈕前,需要轉到第二步,發送附件。二、此步聚主要是上傳附件到伺服器。需要伺服器支援FSO、Dictionary、Stream等組件。在進入上傳附件介面前,先在資料庫中建立一條記錄,把剛成填的表單資訊存在表裡,然後選擇本地需要本地的rar或zip檔案,選好後點“上傳”按鈕就行了,傳完後程式將更新資料庫中存入附件檔案名稱和欄位的內容並自動跳轉到發信頁面,發信頁面從資料庫中讀取郵件資訊並顯示出來,此時點“發送”,就將發送附件了。本過程主要由mail.asp、inc_clsEmail.asp、inc_clsUpload.asp、Upload.asp和Uploadok.asp來完成。
在這個發信程式中用到的檔案清單:
attachment.mdb '郵件資訊臨時存放庫
install.asp '在資料庫中建立郵件資訊暫存資料表
Mail.asp '發送郵件
Upload.asp '檔案上傳
Uploadok.asp '檔案上傳成功
inc_clsEmail.asp '郵件發送類
inc_clsUpload.asp '無組件上傳類
inc_set.asp '一些表格顏色的設定
二.建立資料庫
1.開啟你的Access建立一個檔案名稱為:attachment.mdb.添加以下欄位:
(1). ID 類型為自動編號(存放郵件資訊的ID編號)
(2). smtpcheck 類型為是/否欄位(存放是否需要SMTP驗證)
(3). from 類型為文字欄位(存放發信人的Email地址)
(4). fromname 類型為文字欄位(存放發信人的名字)
(5). to 類型為文字欄位(存放收信人的Email地址)
(6). bcc 類型為文字欄位(存放密送人的Email地址)
(7). cc 類型為文字欄位(存放抄送人的Email地址)
(8). server 類型為文字欄位(存放SMTP伺服器位址)
(9). subject 類型為文字欄位(存放郵件主題)
(10). body 類型為備忘欄位(存放郵件的內容)
(11). username 類型為文字欄位(存放郵箱登入使用者名稱)
(12). password 類型為文字欄位(存放郵箱登入的密碼)
(13). filenames 類型為文字欄位(存放附件的檔案名稱)
注意:可以把欄位設定為允許為空白。
當然你可以自己添加你認為需要的欄位,如果你把欄位名或表名換成其它名稱,則對程式也要作出相應的更改,不然會出錯。如果你不想手工建表及添加欄位,那你可以在瀏覽器中運行Install.asp檔案,它可以自動建表,你就可以偷懶了:)
2. 在開始編寫之前你可以羅列一下要用到的SQL語句.
'搜尋出資料庫中ID號為1的郵件資訊
SQL = "SELECT * FROM attachment ORDER BY WHERE id=1"
'這個語句是添加新的臨時郵件資訊時用到的.
SQL="INSERT INTO attachment(smtpcheck,from,fromname,to,bcc,cc,server,subject,body,username,
password,filenames) VALUES(true,'cjj8110@hotmail.com',cjj','cjj8110@hotmail.com','','','','測試','測試郵件件發送程式','cjj8110','********','1,zip,1.rar')"
'刪除表中全部資料。
SQL = "DELETE FROM attachment"
'刪除表中指定ID的記錄
SQL = "DELETE FROM attachment WHERE id =" & id
'更新表中,指定ID的filenames欄位的內容
SQL = "UPDATE attachemnt SET filenames='" & filenames & "' WHERE ID=" & id
三.編寫代碼
Install.asp:考慮到手工建表有點麻煩,所以寫了這個檔案。檔案主要用到CREATE TABLE和DROP TABLE語句,不過由於資料庫的原因,有些資料庫有可能不支援此語句。本文以Access為例,因為ACCESS支援這兩條語句,如果還是新手還看不懂那也沒關係,以為有機會再研究好了:)。由於不清楚資料庫定義了那些關鍵字,所以在建立表和欄位時,都用[]把表名和欄位名括起來,即使表名或欄位名和資料庫的關鍵字衝突,也不會引起程式出錯。不過運行本程式前,必須先在Access中建立一個資料庫名稱為attachment.mdb,可以不為其建立表,用此程式來建立。
install.asp的源碼:
<% '此檔案在執行後最好刪除,因為如果不注意再次執行的話,將會使資料庫的所有資料丟失,切記! Dim SYS_strTableName,SYS_strSQL,SYS_objRS '需要建立的表的名字 SYS_strTableName = "attachment" Set objConn = Server.CreateObject("ADODB.Connection") 'OLEDB方式開啟資料庫的Connection對象連接字串 strcon="provider=microsoft.jet.oledb.4.0;data source=" & Server.mappath("attachment.mdb") objConn.open strcon'和資料庫已經建立串連可對其操作了. 'DROP TABLE是一條從資料庫中刪除表的SQL語句。有些資料庫有可能不支援。 SYS_strSQL = "DROP TABLE [" & SYS_strTableName & "]" '刪除表時,如果有錯誤出現則跳轉執行下語句 '因為如果DROP TABLE一個資料庫中並不存在的表時,就會導致程式出錯, '所以加了這個語句On Error Resume Nex<p>此新聞共有<font color=red><b>14</font></b>頁 上一頁 <a href=195044.html>1</a> <a href=195044-2.html>2</a> <a href=195044-3.html>3</a> <a href=195044-4.html>4</a> <a href=195044-5.html>5</a> <a href=195044-6.html>6</a> <a href=195044-7.html>7</a> <a href=195044-8.html>8</a> <a href=195044-9.html>9</a> <a href=195044-10.html>10</a> <a href=195044-11.html>11</a> <a href=195044-12.html>12</a> <a href=195044-13.html>13</a> <a href=195044-14.html>14</a> 下一頁</TD></TR></TBODY></TABLE></DIV><TABLE class=pageSpaceNewsSeparator cellSpacing=0 cellPadding=1 width="100%" border=0><TBODY><TR><TD width="71%" height=24><a href=/sendmail.asp?filename=195044 target=_blank class=a01>推薦好友</a> <SPAN class=pageIcon>| <a href=/member/add_favorite.asp?filename=195044 target=_blank class=a01>頻道收藏</a> | <A class=a01 onclick=javascript:doPrint() href="">列印文檔</A> | <a href=/senderror.asp?f</p>