经典ASP - 电子邮件形式附加文件 - 请帮助(Classic ASP - Email form

2019-09-26 01:53发布

香港专业教育学院有一个问题,香港专业教育学院的升技得到了发送输入一个电子邮件地址,但我现在需要的是一个文件输入字段是用户还可以发送一张图片作为附件的电子邮件网页表单。

所以,联系人姓名,标志(附件)。

香港专业教育学院被告知,以发送需要保存的文件夹在我的主机可以发送面前的附件。 香港专业教育学院谈过托管公司,他们没有到位什么使这更容易,如的AspUpload。

在窗体名称=“联系人姓名”和名称=“标识”我的根目录下名为标识的文件夹(这个asp网页中也存在于根目录下)

男人,我希望有人能帮助我一起花时间寻找答案

Dim contactname, logo

contactname = request.form("contactname")
If request("contactname") <> "" THEN
Set myMail=CreateObject("CDO.Message")
myMail.Subject="Form"
myMail.From="web@email"
myMail.To="web@email"
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

Answer 1:

你就不能使用下列情况之一,取决于你从输入字段获取位置的格式? 你不应该将其保存到服务器。

<% 
' ... 

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

' ...
%>


Answer 2:

你需要使用一个文件输入控制。 其基本思想是,你宣布你的表格是这样的:

<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集合,而不是获取到联系人姓名值。

这样的ASP上传控件可以在这里找到:

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

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



Answer 3:

嗯是的,我可以用上面的一个,如果文件已被存储,但它不是。 该文件即将关闭的最终用户PC。

因此,他们单击窗体浏览器和导航到有电脑的文件。 我认为再需要被保存到一个文件在我的主机文件,然后插入有点像你在做才能为它发送的位置。



Answer 4:

传统的ASP则需要先获取文件上传二进制数据格式:

Dim binaryData

为了得到二进制形式上传的文件只是谷歌和你将得到很多经典的解决方案asp.You可以去为: http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId = 7361&lngWId = 4

如果你去通过上面的链接,它应是:

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

此后,你不必存储如下面给出的database.Just二进制数据创建一个记录集对象:

 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

这样,您就不必上传的文件存储在数据库或服务器space.You可以直接连接在运行该文件。 希望能帮助到你。



文章来源: Classic ASP - Email form with attached file - please help