Go Back   CodingForums.com > :: Server side development > ASP

Before you post, read our: Rules & Posting Guidelines

Reply
 
Thread Tools Rate Thread
Enjoy an ad free experience by logging in. Not a member yet? Register.
Old 06-26-2012, 01:15 AM   PM User | #1
xps.710lover
New to the CF scene

 
Join Date: Jan 2012
Posts: 5
Thanks: 0
Thanked 0 Times in 0 Posts
xps.710lover is an unknown quantity at this point
VBScript - Email Issue with Email Attachment

Hi Everyone,
I have a peice of code which allows you attach a file and store in a folder and then send it in an email.

My problem is when I add a text field and when I hit send I get a error message "Bad file name or number" and when I remove the text field it works perfectly.

Please let me know where I have missed Thanks.



Code:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />   

    <%

    Func = Request("Func")

    	

	if isempty(Func) then

    		Func = 1

	end if



    Select case Func

		case 1

    %>

</HEAD>

<BODY>

<P><FONT face="Arial" color="blue" size="4"><STRONG>Select a File 

to send as attachment.</STRONG></FONT>      </P>

    		<form enctype="multipart/form-data" action="sendmail.asp?Func=2" method="post" id="form1" name="form1">

    		<table>

    			<tr><td><FONT face="Arial"><STRONG></STRONG></FONT>

    			<tr><td><FONT face="Arial"><STRONG>File 

      Name...</STRONG></FONT></td></tr>

    			<tr><td><input name="file1"  type="file"><br></td></tr>
   <tr><td>name:<input name="ename" type="text" ><br></td></tr>
               <!--  <tr><td>phone:<input NAME="phone" type="text" /><br></td></tr>
               <tr><td>email:<input NAME="email" type="text" /><br></td></tr>-->

    			<tr><td align="left"><input type="submit" value="Send!" ></td></tr>

    			<tr><td></td></tr>

    		</table>

    <%

    

		case 2

			ForWriting = 2

    			adLongVarChar = 201

    			lngNumberUploaded = 0

    	

				'Get binary data from form		

    			noBytes = Request.TotalBytes 

    				binData = Request.BinaryRead (noBytes)

    

				'convert the binary data to a string

    			Set RST = CreateObject("ADODB.Recordset")

    				LenBinary = LenB(binData)

    	

    					if LenBinary > 0 then

    						RST.Fields.Append "myBinary", adLongVarChar, LenBinary

    							RST.Open

    								RST.AddNew

    									RST("myBinary").AppendChunk BinData

    								RST.Update

    						strDataWhole = RST("myBinary")

    					End If

    

    'Creates a raw data file for with all data sent. Uncomment for debuging.	

    	'Set fso = CreateObject("Scripting.FileSystemObject")

    	'Set f = fso.OpenTextFile(server.mappath(".") & "\raw.txt", ForWriting, True)

    	'f.Write strDataWhole

    	'set f = nothing

    	'set fso = nothing

    

    'get the boundry indicator

    strBoundry = Request.ServerVariables ("HTTP_CONTENT_TYPE")

    lngBoundryPos = instr(1,strBoundry,"boundary=") + 8 

    strBoundry = "--" & right(strBoundry,len(strBoundry)-lngBoundryPos)

    

    'Get first file boundry positions.

    lngCurrentBegin = instr(1,strDataWhole,strBoundry)

    lngCurrentEnd = instr(lngCurrentBegin + 1,strDataWhole,strBoundry) - 1



do while lngCurrentEnd > 0

			'Get the data between current boundry and remove it from the whole.

			strData = mid(strDataWhole,lngCurrentBegin, lngCurrentEnd - lngCurrentBegin)

				strDataWhole = replace(strDataWhole,strData,"")

    			

			'Get the full path of the current file.

    		lngBeginFileName = instr(1,strdata,"filename=") + 10

    			lngEndFileName = instr(lngBeginFileName,strData,chr(34)) 

    

			'Make sure they selected at least one file.	

    		if lngBeginFileName = lngEndFileName and lngNumberUploaded = 0 then

    	

    			Response.Write "<h2> The following error occured.</h2>"

    			Response.Write "You must select at least one file to upload"

    			Response.Write "<br><br>Hit the back button, make the needed corrections and resubmit your information."

    			Response.Write "<br><br><input type='button' onclick='history.go(-1)' value='<< Back' id='button'1 name='button'1>"

    			Response.End 

    	

    		end if

    

			'There could be one or more empty file boxes.	

    		strFilename = mid(strData,lngBeginFileName,lngEndFileName - lngBeginFileName)

    

			'Creates a raw data file with data between current boundrys. Uncomment for debuging.	

    		'Set fso = CreateObject("Scripting.FileSystemObject")

    		'Set f = fso.OpenTextFile(server.mappath(".") & "\raw_" & lngNumberUploaded & ".txt", ForWriting, True)

    		'f.Write strData

    		'set f = nothing

    		'set fso = nothing

    		

			'Loose the path information and keep just the file name.	

    		tmpLng = instr(1,strFilename,"\")

    			

    			do while tmpLng > 0

    				PrevPos = tmpLng

    				tmpLng = instr(PrevPos + 1,strFilename,"\")

    			loop

    		

    				FileName = right(strFilename,len(strFileName) - PrevPos)

    	

			'Get the begining position of the file data sent.

			'if the file type is registered with the browser then there will be a Content-Type

    			lngCT = instr(1,strData,"Content-Type:")

    	

    				if lngCT > 0 then

    					lngBeginPos = instr(lngCT,strData,chr(13) & chr(10)) + 4

    						

    						else

    			 				lngBeginPos = lngEndFileName

    				end if

    

			'Get the ending position of the file data sent.

    		lngEndPos = len(strData) 

    		

			'Calculate the file size.	

    		lngDataLenth = lngEndPos - lngBeginPos

				'Get the file data	

    			strFileData = mid(strData,lngBeginPos,lngDataLenth)

				

				' Create the file, change the path to the path U use for temp storage of the file

				' make sure you have the IUSR_YOURCOMPUTER granted WRITE access to the uploads dir

    			Set fso = CreateObject("Scripting.FileSystemObject")

    				Set f = fso.OpenTextFile(server.mappath("temp") & "\" & FileName, ForWriting, True)

    					f.Write strFileData

    

						' Get full Path, you need it for deleting the file later  	

    					Dim ThisFile

    				ThisFile = server.MapPath("temp") & "/" & filename

    

       			lngNumberUploaded = lngNumberUploaded + 1

    		

    		' destroy f, free memory

  		    set f = nothing

   			

		'Get then next boundry postitions if any

   		lngCurrentBegin = instr(1,strDataWhole,strBoundry)

	    lngCurrentEnd = instr(lngCurrentBegin + 1,strDataWhole,strBoundry) - 1

loop

  

dim ename
ename	= Request("ename")
BodyMsg = BodyMsg & "<tr bgcolor=#D6D6D6><td><b>Employee Name:</b></td><td>" & ename & "</td></tr>"
'email	= Request("email")
'phone	= Request("phone")
'
' 	
'BodyMsg = BodyMsg & "<style>.t9{font-family:arial;font-size:9pt;}</style>"
'BodyMsg = BodyMsg & "<table width=500 bgcolor=#808080 class=t9 border=0 cellpadding=2 cellspacing=1>"
'BodyMsg = BodyMsg & "<tr><td height=25 colspan=2 align=center><font color=#FFFFFF><b>Campaign Request Form:</b></font></td></tr>"
'BodyMsg = BodyMsg & "<tr bgcolor=white><td><b>Email:</b></td><td>" & email & "</td></tr>"

'BodyMsg = BodyMsg & "<tr bgcolor=white><td><b>Phone:</b></td><td>" & phone	 & "</td></tr>"
'
'BodyMsg = BodyMsg & "</table>"
    
    
    ' CDO mail object

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

    

    ' CDO mail setttings

		with objCDOMail

			.Body = BodyMsg

			.Subject = "testing 123"

			.From = "youraspwebapp@withattachment.com"

			.To = "myemail@mail.com"

			'.Cc = strCC				

			.MailFormat = 0			

			.AttachFile ThisFile

			.Send

		end with

	

	' destroy object, free memory

	  set objCDOMail = nothing

    

    ' Now the file in the uploads dir can be deleted

      fso.DeleteFile ThisFile

    

    ' Destroy FileSystemObject, Free memory

       set fso = nothing

        		

    		Response.Write "Email Sent</h2>"

    		Response.Write "<br><br><input type='button' onclick='document.location=" & chr(34) & "sendmail.asp" & chr(34) & "' value='<< Back' id='button'1 name='button'1>"	 						

    	

end select	

    

  

    %></FORM>

    </BODY>

    </HTML>
xps.710lover is offline   Reply With Quote
Old 06-26-2012, 01:52 AM   PM User | #2
Old Pedant
Supreme Master coder!

 
Old Pedant's Avatar
 
Join Date: Feb 2009
Posts: 23,168
Thanks: 59
Thanked 3,993 Times in 3,962 Posts
Old Pedant is a name known to allOld Pedant is a name known to allOld Pedant is a name known to allOld Pedant is a name known to allOld Pedant is a name known to allOld Pedant is a name known to all
That code you are using for the upload is very very very old and was never designed to allow any form fields except the uploaded file.

Throw it all away and go find a *GOOD* uploader.

If you are on a shared hosting servce, check to see if they have an Uploader ActiveX component you can use (for example, GoDaddy supplies the one from Persits Software). If not, then go find a *good* free uploader on the web.

The one at www.freeaspupload.net is probably as good as any of them. It's not great, it shows signs of having been written back in maybe 1996 originally, but it seems to work.
__________________
An optimist sees the glass as half full.
A pessimist sees the glass as half empty.
A realist drinks it no matter how much there is.
Old Pedant is offline   Reply With Quote
Old 06-26-2012, 02:00 AM   PM User | #3
xps.710lover
New to the CF scene

 
Join Date: Jan 2012
Posts: 5
Thanks: 0
Thanked 0 Times in 0 Posts
xps.710lover is an unknown quantity at this point
thanks for your response.

the script should be based CDONTS so when I submit the form it will send out to the email address as well.
xps.710lover is offline   Reply With Quote
Old 06-26-2012, 03:36 AM   PM User | #4
Old Pedant
Supreme Master coder!

 
Old Pedant's Avatar
 
Join Date: Feb 2009
Posts: 23,168
Thanks: 59
Thanked 3,993 Times in 3,962 Posts
Old Pedant is a name known to allOld Pedant is a name known to allOld Pedant is a name known to allOld Pedant is a name known to allOld Pedant is a name known to allOld Pedant is a name known to all
CDONTS is very very much deprecated by Microsoft. Most hosts won't support it any more.

You really should progress to CDO.MESSAGE, instead.

But in any case, the emailing has nothing at all to do directly with the upload process. Keep them LOGICALLY separate, even if they are both on the same ASP page.
__________________
An optimist sees the glass as half full.
A pessimist sees the glass as half empty.
A realist drinks it no matter how much there is.
Old Pedant is offline   Reply With Quote
Old 06-26-2012, 04:18 AM   PM User | #5
xps.710lover
New to the CF scene

 
Join Date: Jan 2012
Posts: 5
Thanks: 0
Thanked 0 Times in 0 Posts
xps.710lover is an unknown quantity at this point
Ok as far as the upload goes, is there anything anywhere I could find to have attachment to be sent out in an email ?
xps.710lover is offline   Reply With Quote
Old 06-26-2012, 04:54 AM   PM User | #6
Old Pedant
Supreme Master coder!

 
Old Pedant's Avatar
 
Join Date: Feb 2009
Posts: 23,168
Thanks: 59
Thanked 3,993 Times in 3,962 Posts
Old Pedant is a name known to allOld Pedant is a name known to allOld Pedant is a name known to allOld Pedant is a name known to allOld Pedant is a name known to allOld Pedant is a name known to all
???? One more time, what does the upload have to do with sending the email?

You upload into a file.

You attach a file to the email.

Whether you attach the uploaded file or some other random file on the disk, the attachment process is the same.

KEEP THE TWO SEPARATE in your mind.

Do the upload and complete it. THEN worry about attaching a file (any file, including the just-uploaed one) to the email.
__________________
An optimist sees the glass as half full.
A pessimist sees the glass as half empty.
A realist drinks it no matter how much there is.
Old Pedant is offline   Reply With Quote
Reply

Bookmarks

Tags
asp classic, visual basic

Jump To Top of Thread


Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 07:42 PM.


Advertisement
Log in to turn off these ads.