使用经典ASP

时间:2016-05-10 05:39:55

标签: javascript email vbscript asp-classic

我是处理应用程序的经典ASP的新手,我需要通过电子邮件发送附件。我尝试了很多东西,但仍然无法找到合适的解决方案。我能够发送没有附件的电子邮件。

除附件外,一切正常。在发送附件之前,我已经看到许多解决方案,我需要将文件上传到服务器。我在表单操作中调用了一个页面uploaddocument.asp(此页面在VBscript中),在单击发送后上传文档但不发送电子邮件的服务器上载文档。

请建议是否有办法将这些附件存储在临时文件夹中,以便在发送后自动将其删除。

是否可以使用进度条设计附件功能,例如yahoomail或gmail,可以选择使用经典的asp javascript / VBscript删除附件。

请找到虚拟代码。

MailTest.asp

<%@ Language=JavaScript%>
<%
Server.ScriptTimeout = 900;
var fso = new ActiveXObject("Scripting.FileSystemObject");
function mailObject() 
{
var mailObject = new ActiveXObject("CDO.Message");
mailObject.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2;

mailObject.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtprelay.p3chem.net";
mailObject.Configuration.Fields.Update();


mailObject.From = "ABC@msg2.XYZ.com";

return (mailObject);
}


var mailMessage = new mailObject();
messageText = "Test";
emailID="tarun.0shrivastav@xyz.com";
AssetmailID ="vikrant.1mittal@XYZ.com";
messageSubject ="test";
var op = String(Request("op"));

%>

<%

Response.write("<form method ='Post' action ='UploadDocument.asp' enctype='multipart/form-data'> \n");

Response.write("\n\nRecipient(s):
<textarea name=to rows=3 >"+emailID+"</textarea>*
\n\
(list of email addresses, separated by semicolon)

\n");
Response.write("\n\nCc:
<textarea name=cc rows=2 >" + AssetmailID + "</textarea>
\n\
(list of email addresses, separated by semicolon)

\n");
Response.write("Subject:
<input type=text name=subject size=60 >*

\n");

Response.write("Message:
<textarea name=message rows=15 cols=100 >" + messageText + "</textarea>*

\n");

Response.write("<form id = form2 method ='Post' action ='UploadDocument.asp' enctype='multipart/form-data'> \n"); 
Response.write("Attachment 1 : <input type=file name=File1>") ;


Response.write( "
<Input Type=Button Value='Add a file' >
") ;

Response.write("</form>\n");

Response.write("<input type=submit name=send value='Send Message'>

\n");
Response.write("<input type=hidden name=op value=send>");

Response.write("</form>\n");

switch (op) {
case ("Select"):
case ("send"):


try {
mailMessage.to =emailID;
mailMessage.Cc= AssetmailID 
mailMessage.Bcc = "vikrant.mittalMNC.com";

mailMessage.From = "ABc@xyz.com";
mailMessage.Subject = String(Request("subject"));
mailMessage.HtmlBody = String(Request("message"));


mailMessage.Send();
Response.Write("<script language='javascript'>alert('Mail successfully sent')</script>");
Response.Write("\nMail has been sent successfully ");

}
catch (err) {
Response.Write(err.message);

mailMessage.Bcc = "";

mailMessage.From = "";
mailMessage.Subject = String(Request("subject"));
mailMessage.HtmlBody = "ERROR: Mail was not sent succesfully, Check whether All Mail ID's are Valid.";
mailMessage.Send();
Response.Write("<script language='javascript'>alert('Mail was not sent succesfully')</script>");

Response.Write("Mail was not sent succesfully, Check whether All Mail ID's are Valid.\n\n" + Assessors);
}
break;
default:
Response.write ("Done");
}


%>


<Script>
//Script To add a attachment file field 
var nfiles = 1;
function Expand()
{
nfiles++
var adh = '
Attachment '+nfiles+' : <input type="file" name="File'+nfiles+'" action ="UploadDocument.asp" enctype="multipart/form-data">';
files.insertAdjacentHTML('beforeend',adh);
return false;
}
</Script>

code of UploadDocument.asp


<% @ Language= VBScript%> 
<%Option Explicit%>
<html>
<body>
<!-- #include file="lib\lib_vbFunctions.asp" -->
<%
Server.ScriptTimeout = 900

Dim Uploader, File, startTime, endTime, markTime1, totalTime, uploadTime, encType
Set Uploader = New FileUploader
startTime = Time
' This starts the upload process
Uploader.Upload()
markTime1 = Time
' Check if any files were uploaded
If Uploader.Files.Count = 0 Then
Response.Write "File(s) not uploaded."
Else
' Loop through the uploaded files
For Each File In Uploader.Files.Items
encType = File.ContentType
If (Len(encType) >= 50) Then encType = "application/octet-stream"
File.ADOSaveToDisk "F:\\CSDATA\\My_attachment",File.FileName
endTime = Time
totalTime = (endTime - startTime) * 10000000
uploadTime = (markTime1 - startTime) * 10000000
' Output the file details to the browser
Response.Write "File Uploaded: " & File.FileName & "
"
Response.Write "Size: " & File.FileSize & " bytes
"

Next
END if
%>
</body>
</html>

如何将上传的文件作为附件发送?

1 个答案:

答案 0 :(得分:0)

这是我在WYSIWYG中用于在服务器上上传文件的技巧:

  1. 考虑以电子邮件形式命名附件的输入字段。
  2. 在此输入旁边放一个假按钮,说“浏览”。
  3. 点击假按钮,模拟文档中其他隐藏的FORM的点击。第二种形式将文件发送到上传器并从上传器接收文件名。要阻止提交第二个表单并刷新页面,请使用Jquery.form.js上传文件, onSuccess 将上传的FileName传递给名为attachment的实际输入。
  4. 真实电子邮件表格:

    <form action="sendEmail.asp" method="post">
        <input name="attachment"><a onclick="$('#hiddenFileField').click()">Browse</a>
        <!--other fields of email form-->
    </form>
    

    在服务器上传文件的隐藏表单:

    <form id="hiddenForm" action="File-Uploader.asp" enctype="multipart/form-data" method="post" accept-charset="utf-8">
        <input name="file1" id="hiddenFileField" type="file">
    </form>
    

    这是处理该过程的脚本:

    $(document).ready(function(){
         $('#hiddenForm').ajaxForm({
    
           beforeSubmit: function() {
           $("#stat").html('uploading...');
           },
    
           success: function(data) {
               $("#attachment").val(data);
               $("#stat").html("");
           }
        });
    
        // The code to submit hidden form as soon as file selected to upload:
        $("#hiddenFileFild").change(function(){$("#hiddenForm").submit();})
    
    });
    

    您可以修改代码以防止在使用#status完成上传之前提交main。

    最后,您可以在发送电子邮件后删除临时文件:

    <%
    dim fs
    dim file
    file=server.mappath(request.form("attachment")))
    Set fs=Server.CreateObject("Scripting.FileSystemObject")
    if fs.FileExists(file) then
      fs.DeleteFile(file)
    end if
    %>