我是处理应用程序的经典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>
如何将上传的文件作为附件发送?
答案 0 :(得分:0)
这是我在WYSIWYG中用于在服务器上上传文件的技巧:
真实电子邮件表格:
<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
%>