2010-04-14 30 views
1

我得到了一個問題的提升我得到了一個電子郵件web表單,它將輸入發送到一個電子郵件地址,但我現在需要的是一個文件輸入字段,用戶也可以發送作爲附件的圖像。經典的ASP - 帶附件的電子郵件表格 - 請幫助

所以聯繫人姓名,標識(附件)。

我已經被告知爲了發送附件,它需要保存在我的託管文件夾中,然後才能發送。我已經與託管公司談過了,他們沒有任何適當的地方可以讓這個更簡單,比如aspupload。

在窗體名稱=「聯繫人姓名」和名稱=「標識」我的根目錄下名爲標識(此ASP頁面也存在於根目錄)

男人,我希望有人能幫助我的文件夾花時間尋找答案

Dim contactname, logo 

contactname = request.form("contactname") 
If request("contactname") <> "" THEN 
Set myMail=CreateObject("CDO.Message") 
myMail.Subject="Form" 
myMail.From="[email protected]" 
myMail.To="[email protected]" 
myMail.HTMLBody = "" & contactname & "" 
myMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
myMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "relay.host" 
myMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 
myMail.Configuration.Fields.Update 
myMail.Send 
set myMail=nothing 

回答

1

根據您從輸入字段中獲得的位置的格式,您不能只使用以下其中一項嗎?您不必將其保存到服務器。

<% 
' ... 

myMail.AddAttachment Server.MapPath("file1.txt") 
myMail.AddAttachment "d:\file2.txt" 
myMail.AddAttachment "file://d:\file3.txt" 

' ... 
%> 
+0

從服務器,您將無法訪問輸入字段中指定的用戶文件/目錄。您需要從多部分表單文章中獲取內容,序列化爲服務器上的文件,然後使用臨時目錄/文件的路徑「AddAttachment」(然後在發送電子郵件後將該文件從服務器中刪除) – 2010-04-15 01:53:23

+0

難道你不能從文件上傳組件獲取文件流並添加它作爲附件嗎?我不確定你是否可以在傳統的ASP中做到這一點,但很確定它可能在.Net – schmimd04 2010-04-15 02:01:34

+0

夥計們的任何解決方案? – apg1985 2010-04-15 10:08:13

0

呃是的我可以使用上述之一,如果文件已經存儲,但它不是。該文件來自最終用戶的電腦。

因此,他們點擊窗體中的瀏覽器並導航到那裏的電腦上的文件。然後,我認爲需要將其保存到我的託管文件中,然後將文件位置插入,就像您爲了發送文件所做的一樣。

1

您需要使用文件輸入控件。其基本思想是,你宣佈你的表格是這樣的:那麼

<form method="POST" action="YourScript.asp" enctype="multipart/form-data"> 
<input name="ContactName" type="text" size="50"> 
<input name="LogoFile" type="file"> 
<input type="submit" value="Send"> 
</form> 

YourScript.asp應該使用ASP上傳控制在某處存儲在服務器上上傳的文件,然後使用CDOSYS的AddAttachment方法。

注意:使用此上傳組件時,正常的Request.Form不再可用(由於調用了Response.BinaryRead)。您可以通過使用此上傳控件的Fields集合來獲得ContactName值。

這樣的ASP上傳控件可以在這裏找到:

http://www.asp101.com/articles/jacob/scriptupload.asp

http://www.pscode.com/vb/scripts/ShowCode.asp?txtCodeId=7361&lngWId=4

-1

對於您需要首先獲取文件上傳二進制數據格式傳統的ASP:

Dim binaryData 

爲了獲得二進制形式上傳的文件只是谷歌,你會得到很多經典的ASP解決方案。你可以去Ø爲:http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=7361&lngWId=4

如果你去通過上面的鏈接,它應是:

Dim binaryData = objUpload("File1").BLOB & ChrB(0) 

之後,你不必二進制數據存儲在數據庫中。只要創建一個記錄集對象下面給出:

set rset = server.createobject("ADODB.RECORDSET") 
rset.fields.append "FileName", 205, LenB(binaryData) 
rset.open 
rset.addnew 
rset.fields(0).AppendChunk binaryData 

然後你就可以創建CDO消息對象,因此着手:

Set myMail=CreateObject("CDO.Message") 
'//your mail code here 
myMail.Configuration.Fields.Update 

binaryData = rset.fields("FileName").value    
Const cdoContentDisposition = "urn:schemas:mailheader:content-disposition" 
Const cdoBase64 = "base64"    
Dim attach : Set attach = myMail.Attachments.Add    
attach.ContentMediaType = "application/octet-stream" 
attach.ContentTransferEncoding = cdoBase64 
'//Here I am just attaching an jpeg image file with fixed name 'myimage.jpg' 
attach.Fields(cdoContentDisposition).Value="attachment;filename=""myimage.jpg""" 
attach.Fields.Update 
Dim oStreamOutput: Set oStreamOutput = attach.GetDecodedContentStream 
oStreamOutput.Write binData 
oStreamOutput.Flush 
myMail.Send 
set myMail=nothing 

這樣你就不必上傳的文件存儲在數據庫或服務器空間您可以隨時附加文件。希望能幫助到你。

+0

這不起作用。我能夠獲得base64編碼數據。但是,它沒有在電子郵件中設置,導致附件變爲空白。 – divinedragon 2015-03-24 09:18:56