Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 6 of 6
  1. #1
    New to the CF scene
    Join Date
    Jan 2012
    Posts
    5
    Thanks
    0
    Thanked 0 Times in 0 Posts

    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>

  • #2
    Supreme Master coder! Old Pedant's Avatar
    Join Date
    Feb 2009
    Posts
    26,185
    Thanks
    80
    Thanked 4,453 Times in 4,418 Posts
    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.

  • #3
    New to the CF scene
    Join Date
    Jan 2012
    Posts
    5
    Thanks
    0
    Thanked 0 Times in 0 Posts
    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.

  • #4
    Supreme Master coder! Old Pedant's Avatar
    Join Date
    Feb 2009
    Posts
    26,185
    Thanks
    80
    Thanked 4,453 Times in 4,418 Posts
    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.

  • #5
    New to the CF scene
    Join Date
    Jan 2012
    Posts
    5
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Ok as far as the upload goes, is there anything anywhere I could find to have attachment to be sent out in an email ?

  • #6
    Supreme Master coder! Old Pedant's Avatar
    Join Date
    Feb 2009
    Posts
    26,185
    Thanks
    80
    Thanked 4,453 Times in 4,418 Posts
    ???? 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.


  •  

    Tags for this Thread

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •