Search code examples
htmlemailasp-classicjmail

Jmail Classic ASP upload file and send


I would like to know how to upload a file and send by mail using Classic ASP and Jmail, I would like to select the file using HTML type=file.


Solution

  • You have 2 things to solve here the uploading of file, and the attachment of it to an outbound e-mail.

    You will probably require a third party upload component - many Windows hosting companies have the 'Persits' suite of ASP components ready for use with working demos. Is this your own server or a shared hosting etc? As there may be implications on shared hosting with what you can actually do - e.g. max file size, type of file etc.

    The sample code should help you but note the 'somecomponent' bit obviously need to be inline with whatever you use.

    Upload - Send an email with attachment
    <% 'Sample file Form-Email.asp ' Let's you send one an email with one or more attachments.

    'Create upload form
    Dim Form: Set Form = Server.CreateObject("SomeComponent.ASPForm")
    
    'Do not upload data greater than 1MB. 
    Form.SizeLimit = 100*1024
    
    Const fscompleted  = 0
    
    If Form.State = fscompleted Then 'completed
      ProcessForm
    End If 
    
    
    Sub ProcessForm
      Dim eFrom, eTo, Subject, Message
    
      'get source form fields - From, To, Subject and Message
      eFrom = Form("From")
      eTo = Form("To")
      Subject = Form("Subject")
      Message = Form("Message")
    
      Dim objNewMail, File, FileName, FS, TempFolder
    
      Set FS = CreateObject("Scripting.FileSystemObject")
      'Get temporary folder
      TempFolder = FS.GetSpecialFolder(2) & "\emailtemp"
    
      'Create a new email message
      Set objNewMail = CreateObject("CDONTS.NewMail")
      Const CdoMailFormatMime = 0
      objNewMail.MailFormat = CdoMailFormatMime
      'Save source files to temporary folder
      'Add these files to the new e-mail
      For Each File In Form.Files
        'If source file is specified.
        If Len(File.FileName) > 0 Then
          FileName = TempFolder & "\" & File.FileName 
    
          File.SaveAs FileName
    
          objNewMail.AttachFile FileName
        End If
      Next
    
      'Send the new email
      objNewMail.Send eFrom, eTo, Subject, Message
    
      'delete temporary files
      For Each File In Form.Files
        If Len(File.FileName) > 0 Then
          FileName = TempFolder & "\" & File.FileName 
          FS.DeleteFile FileName
        End If
      Next
    End Sub
    
    %>  
    <br>Sample For <A Href=http://www.motobit.com>HugeASP upload</A>
    <br> Let's you send one an email with one or more attachments.
    <br> File size limit Is <%=Form.SizeLimit%> B (<%=Form.SizeLimit \ 1024 %>kB).
    <Table Border=0>
    <form method="POST" ENCTYPE="multipart/form-data">
      <tr><td> From : </td><td><input Name=From Size=50></td></tr>
    
      <tr><td> To : </td><td><input Name=To Size=50></td></tr>
    
      <tr><td> Subject : </td><td><input Name=Subject Size=80></td></tr>
    
      <tr><td ColSpan=2> Message:
        <br><TextArea Name=Message Cols=76 Rows=10></TextArea>
      </td></tr>
    
      <tr><td ColSpan=2>E-Mail Attachments:
        <Div ID=files>
           Attachment 1 : <input type="file" name="File1">
        </Div>
        <Input Type=Button Value="Add a file" OnClick=return(Expand()) 
         Style="border=0;background=yellow;cursor:hand">
      </td></tr>
    
      <tr><td ColSpan=2 Align=Right>
        <input Name=SubmitButton Value="Send email >>" Type=Submit></td></tr>
      </Form>
    </Table>
    
    <Script>
    //Script To add a attachment file field 
    var nfiles = 1;
    Function Expand(){
      nfiles++
      var adh = '<BR> Attachment '+nfiles+' : <input type="file" 
     name="File'+nfiles+'">';
      files.insertAdjacentHTML('BeforeEnd',adh);
      return false;
    }
    </Script>