<% response.end else if not isnumeric(mid(trim(strfieldvalue),4)) then '格式错误返回 %> 尝试发送邮件,但是失败了,请修改错误后重试!
<% response.end else thegroup=(mid(trim(strfieldvalue),4)) end if end if tmpSQL="select * from t_group where owner='"&session("myid")&"' and groupidowner='"&thegroup&"'" 'response.write tmpsql set tmprs=server.CreateObject("ADODB.Recordset") tmprs.Open tmpsql,conn if tmprs.bof or tmprs.eof then '没有找到该组 %> 尝试发送邮件,但是失败了,请修改错误后重试!
<% response.end else if tmprs("personnum")=0 then '组内没有用户 %> 尝试发送邮件,但是失败了,请修改错误后重试!
<% response.end else strFieldValue=trim(tmprs("groupempl")) tmprs.close set tmprs=nothing end if end if end if if instr(strfieldValue,"|") then '组发 allsearch=replace(trim(strfieldValue),"|","','") allsearch="'"&allsearch&"'" tmpstring=trim(strfieldValue)&"|" tosearch="" do while len(tmpstring)>=5 tosearch=left(tmpstring,5) tmpstring=mid(tmpstring,7) if instr(tosearch,"|") then '格式错误 %> 尝试发送邮件,但是失败了,请修改错误后重试!
<% response.end end if tmpSQL="select * from (select userid from t_officer where userid in ("&allsearch&")) DERIVEDTBL where userid='"&tosearch&"'" 'response.write tmpsql set tmprs=server.CreateObject("ADODB.Recordset") tmprs.Open tmpsql,conn if tmprs.eof or tmprs.bof then %> 尝试发送邮件,但是失败了,请修改错误后重试!
<% response.end end if tmprs.close set tmprs=nothing loop strfieldValue=trim(strFieldValue) else if len(trim(strFieldValue))<>5 then '格式不正确 %> 尝试发送邮件,但是失败了,请修改错误后重试!
<% response.end else if isnumeric(trim(len(strFieldValue))) then tmpSQL="select * from t_officer where userid='"&trim(strFieldValue)&"'" set tmprs=server.CreateObject("ADODB.Recordset") tmprs.Open tmpsql,conn if tmprs.eof or tmprs.bof then %> 尝试发送邮件,但是失败了,请修改错误后重试!
<% response.end end if tmprs.close set tmprs=nothing strfieldValue=trim(strFieldValue) else %> 尝试发送邮件,但是失败了,请修改错误后重试!
<%
response.end
end if
end if
end if
end if
strFieldValue=replace(strFieldValue,"<","<")
'response.write strfieldname
rs(STRFIELDNAME)=replace(strFieldValue,">",">")
binHTTPHeader=MIDB(binHTTPHeader,INSTRB( DataStart + 1, binHTTPHeader, divider ))
loop
'开始处理文件数据
titem=0
rs("filesize_1")=0
rs("filesize_2")=0
rs("filesize_3")=0
Do while lenB(binHTTPHeader)>46
if INSTRB( binHTTPHeader, bnCRLF & bnCRLF )<>0 then
binHeaderData = LeftB(binHTTPHeader,INSTRB( binHTTPHeader, bnCRLF & bnCRLF )-1)
else
exit do
end if
strHeaderData=bin2str(binHeaderData)
'读取上传文件的Content-Type
lngFileContentTypeStart=Instr(strHeaderData,"Content-Type:")+Len("Content-Type:")
strFileContentType=Trim(Mid(strHeaderData,lngFileContentTypeStart))
strFileContentType=Replace(strFileContentType,vbCRLF,vbNullString)
'读取上传的文件名
if instr(strheaderdata,"filename=")>0 then
lngFileNameStart=Instr(strHeaderData,"filename="&chr(34))+Len("filename="&chr(34))
lngFileNameEnd=Instr(lngFileNameStart,strHeaderData,chr(34))
strFileName=Mid(strHeaderData,lngFileNameStart,lngFileNameEnd-lngFileNameStart)
strFileName=Trim(strFileName)
strFileName=Replace(strFileName,vbCRLF,vbNullString)
else
strfilename=""
end if
'读取上传文件数据
DataStart = INSTRB( binHTTPHeader, bnCRLF & bnCRLF ) + 4
DataEnd = INSTRB( DataStart + 1, binHTTPHeader, divider ) - DataStart
If strFileName<>"" Then
if dataend>0 then
binFieldValue=MIDB( binHTTPHeader, DataStart, DataEnd )
'将上传的文件写入数据库
titem=titem+1
'response.write "titem:"&titem
rs("FileContentType_"&titem)=strFileContentType
rs("FileContent_"&titem).AppendChunk binFieldValue
rs("filesize_"&titem)=lenb(binFieldValue)
rs("filename_"&titem)=strfilename
else
binfieldvalue=binhttpheader
end if
End if
if INSTRB( DataStart + 1, binHTTPHeader, divider )>0 then
binHTTPHeader=MIDB(binHTTPHeader,INSTRB( DataStart + 1, binHTTPHeader, divider ))
else
binhttpheader=""
end if
loop
rs("sizetotal")=csng(rs("filesize_1"))+csng(rs("filesize_2"))+csng(rs("filesize_3"))+csng(len(rs("body")))+csng(len(rs("emailtitle")))+csng(len(rs("emailshowname")))+csng(len("geterempl"))
if csng(rs("sizetotal"))>=csng(2*1024*1024) then
response.write "对不起,文件太大,请保证每封邮件的总大小不超过2M!"
response.end
end if
rs("mailtime")=now
rs("readerempl")=""
if rs("receempl")<>"" then
rs("receempl")=session("myid")
rs("readerempl")=session("myid")
end if
rs("deleempl")=""
rs("deleverempl")=""
rs("sendmac")=strmac
rs.update
rs.close
set rs=Nothing
conn.Close
set conn=Nothing
%>
最后,我们来讲讲如何把内容从数据库中读出来,内容有这么几类,一类是浏览器上可以显示的,例如*.htm,一类是需要下载的,例如*.exe,还有一种是浏览器可以显示但是不能够让他显示的,例如*.asp,请看代码:
<%
Response.Buffer= true
Response.Clear
function getname(oriname)
thename=oriname
do while instr(thename,"/")>0
thename=mid(thename,instr(thename,"/")+1)
loop
do while instr(thename,"\")>0
thename=mid(thename,instr(thename,"\")+1)
loop
getname=thename
end function
function canexec(thechar)
if instr(thechar,".asp")>0 then
canexec=false
exit function
end if
if instr(thechar,".asa")>0 then
canexec=false
exit function
end if
if instr(thechar,".aspx")>0 then
canexec=false
exit function
end if
if instr(thechar,".asax")>0 then
canexec=false
exit function
end if
canexec=true
end function
mailID=request("mailID")
se=request("se")
if se<>1 and se<>2 and se<>3 then
response.end
end if
Set conn=server.createobject("adodb.connection")
set rs=server.createobject("adodb.recordset")
conn.open "DSN=;UID=;PWD="
sql="select * from t_mail where ((geterempl like '%"&session("myid")&"%' or deleempl like '%"&session("myid")&"%' or receempl like '%"&session("myid")&"%' ) and (not deleverempl like '%"&session("myid")&"%')) and mailid='"&mailid&"' "
rs.open sql,conn,3,3
if rs.eof or rs.bof then
response.end
end if
if rs("filecontenttype_"&trim(se))<>"text/plain" or (not canexec(getname(trim(rs("filename_"&trim(se)))))) then
Response.ContentType = rs("FileContentType_"&trim(se))
end if
'Response.AddHeader "content-type","application/x-msdownload"
if instr(response.contenttype,"application")>0 then
response.AddHeader "Content-Disposition","attachment;filename="&getname(trim(rs("filename_"&trim(se))))
end if
Response.BinaryWrite rs("FileContent_"&trim(se))
rs.close
set rs=Nothing
conn.close
set conn=nothing
%>
文章到这里就结束了,至于邮件数据库的数据结构大家根据代码自己琢磨吧!
欢迎光临 黑色海岸线论坛 (http://bbs.thysea.com/) | Powered by Discuz! 7.2 |