使用经典ASP
Mail with multiple attachment using classic ASP
我是处理应用程序的经典ASP的新手,我需要通过电子邮件发送附件。我尝试了很多事情,但仍然找不到合适的解决方案。我可以发送没有附件的电子邮件。
除了附件,一切都很好。我看到许多解决方案建议,在发送附件之前,我需要将文件上传到服务器。我在表单操作中调用了一个页面uploaddocument.asp
(此页面使用VBscript),它在点击发送后在服务器上上传文档,它正在上传文档,但它没有发送电子邮件。
请建议是否有任何方法将这些附件存储在临时文件夹中,以便在发送后自动删除。
是否可以设计附件的功能,如yahoomail,或带有进度条的gmail,使用经典的aspjavascript/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>
如何将上传的文件作为附件发送?
这是我在所见即所得中在服务器上上传文件时使用的技巧
- 考虑电子邮件表单中名为附件的输入字段
- 在这个输入旁边放一个假的按钮,比如浏览
- 点击假按钮,模拟点击文档中其他隐藏的FORM。第二个表单将文件发送到上传器,并从上传器接收文件名。为了防止提交第二个表单并刷新页面,请使用Jquery.form.js上传文件,然后onSuccess将上传的FileName传递到名为附件的真实输入中
真实电子邮件形式:
<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();})
});
您可以在使用#状态完成上传之前修改代码以阻止提交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
%>
相关文章:
- Jquery Modal表单登录与AJAX-ASP经典上的IE 9
- asp经典对象到javascript对象,并使对象向下滑动
- JAVA脚本函数中调用的ASP经典函数
- 如何将客户端javascript返回值传递给ASP经典服务器端
- 未从 asp 经典中存储的过程捕获返回值
- ASP 经典版中的日历
- 打印 Javascript 而不是 ASP(经典)输出
- 用于移动设备检测的Javascript到ASP经典功能
- 为什么 JavaScript 警报不会在 ASP 经典的 Select Case 分支中弹出
- 字体颜色获胜't在ASP经典网站中使用javascript进行更改
- 读取文本文件上下文,而不保存在服务器上- Asp经典
- 如何迁移数据来更新表单ASP经典
- 事件的顺序在asp经典时,生成excel电子表格
- 强制“另存链接”与HTML, Javascript或ASP经典
- ASP(经典)/IIIS 7.5-您可以在不刷新会话的情况下检查会话是否超时吗
- 谷歌地图-Javascript与ASP经典循环不重复
- 从Javascript调用ASP经典函数
- 文件上传asp经典,js
- asp经典正则表达式:字符串到URL安全
- asp经典- Javascript在asp上生成的页面出现故障