繁体中文
设为首页
加入收藏
当前位置:ASP技术首页 >> ASP基础 >> Upload & Send Mail Attachments

Upload & Send Mail Attachments

2005-12-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【

<%

' This is coded by nick@stilwell.ws

'using the upload.asp example from asp101.com

' and combining it with the mail object to allow

' you upload a pic from your pc and email to anyone anywhere

' at anytime maybe it should be called martini mail

Response.Buffer = true

Function BuildUpload(RequestBin)

'Get the boundary

PosBeg = 1

PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))

boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)

boundaryPos = InstrB(1,RequestBin,boundary)

'Get all data inside the boundaries

Do until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--")))

'Members variable of objects are put in a dictionary object

Dim UploadControl

Set UploadControl = CreateObject("Scripting.Dictionary")

'Get an object name

Pos = InstrB(BoundaryPos,RequestBin,getByteString("Content-Disposition"))

Pos = InstrB(Pos,RequestBin,getByteString("name="))

PosBeg = Pos+6

PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))

Name = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))

PosFile = InstrB(BoundaryPos,RequestBin,getByteString("filename="))

PosBound = InstrB(PosEnd,RequestBin,boundary)

'Test if object is of file type

If PosFile<>0 AND (PosFile

'Get Filename, content-type and content of file

PosBeg = PosFile + 10

PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))

FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))

'Add filename to dictionary object

UploadControl.Add "FileName", FileName

Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))

PosBeg = Pos+14

PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))

'Add content-type to dictionary object

ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))

UploadControl.Add "ContentType",ContentType

'Get content of object

PosBeg = PosEnd+4

PosEnd = InstrB(PosBeg,RequestBin,boundary)-2

Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg)

Else

'Get content of object

Pos = InstrB(Pos,RequestBin,getByteString(chr(13)))

PosBeg = Pos+4

PosEnd = InstrB(PosBeg,RequestBin,boundary)-2

Value = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))

End If

UploadControl.Add "Value" , Value

UploadRequest.Add name, UploadControl

BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)

Loop

End Function

Function getByteString(StringStr)

For i = 1 to Len(StringStr)

char = Mid(StringStr,i,1)

getByteString = getByteString & chrB(AscB(char))

Next

End Function

Function getString(StringBin)

getString =""

For intCount = 1 to LenB(StringBin)

getString = getString & chr(AscB(MidB(StringBin,intCount,1)))

Next

End Function

If request("Action")="1" then

Response.Clear

byteCount = Request.TotalBytes

RequestBin = Request.BinaryRead(byteCount)

Set UploadRequest = CreateObject("Scripting.Dictionary")

BuildUpload(RequestBin)

If UploadRequest.Item("blob").Item("Value") <> "" Then

contentType = UploadRequest.Item("blob").Item("ContentType")

filepathname = UploadRequest.Item("blob").Item("FileName")

filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))

FolderName = UploadRequest.Item("where").Item("Value")

'Response.Write "FolderName: " & FolderName & "
"

Path = Mid(Request.ServerVariables("PATH_TRANSLATED"), 1, Len(Request.ServerVariables

("PATH_TRANSLATED")) - Len(Request.ServerVariables("PATH_INFO"))) & "\"

'Response.Write "Path:" & Path & "
"

ToFolder = Path & "\" & FolderName

value = UploadRequest.Item("blob").Item("Value")

filename = ToFolder & "\" & filename

Set MyFileObject = Server.CreateObject("Scripting.FileSystemObject")

Set objFile = MyFileObject.CreateTextFile(filename)

'Response.Write "Saved Path: " & filename

For i = 1 to LenB(value)

objFile.Write chr(AscB(MidB(value,i,1)))

Next

objFile.Close

Set objFile = Nothing

Set MyFileObject = Nothing

End If

' ge the other form elements now

MySubject = UploadRequest.Item("MySubject").Item("Value")

MyTo = UploadRequest.Item("MyTo").Item("Value")

MyText = UploadRequest.Item("MyText").Item("Value")

MyFrom = UploadRequest.Item("MyFrom").Item("Value")

Set UploadRequest = Nothing

Set objCDOMail = Server.CreateObject("CDONTS.NewMail")

ObjCDOMail.From = MyFrom

ObjCDOMail.To = MyTo

ObjCDOMail.BodyFormat = 0

ObjCDOmail.Mailformat = 0

ObjCDOMail.Subject = MySubject

ObjCDOMail.Body = MyText

'heres an if statement to chk for an attachment

' I am sure theres another way but this does the job fine

If Len(filename) > 5 then

objCDOMail.AttachFile filename,nikfile

end if

ObjCDOMail.Send

Set ObjCDOMail = Nothing

Response.Write "your mail has been sent"

End If%>

Anon Mail

name="mailform" id="mailform">

Send an Email to anyone with an attachment

From

size="30">

To:
Subject:
Enter your email text below

Attach a file:

name=submit1>

责任编辑:admin
相关文章