2013-02-27 47 views
0

我有一段,工程代码,做:不要产生磁盘文件,而不是用数据发送邮件存储

读取数据库,读取一个模板(template.htm),数据放在一个新的基于模板(evento.htm)的文件,读取该文件并发送包含生成文件内容的电子邮件。下面的代码(我削减了数据库部分):

<% 
    NomeDoTemplate= "template.htm" 
    CaminhoDoTemplate= Server.MapPath(NomeDoTemplate) 
    CaminhoDoTemplateAjustado= Mid(CaminhoDoTemplate,1,InStrRev(CaminhoDoTemplate,"\")) 
    NomeDoArquivo= "evento.htm" 
    CaminhoDoArquivo= Server.MapPath(NomeDoArquivo) 

    Set ManipulacaoDeArquivo= Server.CreateObject("Scripting.FileSystemObject") 
    Set ObjetoArquivo= ManipulacaoDeArquivo.OpenTextFile(CaminhoDoTemplate, 1) 
    DadosDoObjetoArquivo= ObjetoArquivo.ReadAll 
    ObjetoArquivo.Close 

    DadosDoObjetoArquivo= Replace(DadosDoObjetoArquivo, "[Cliente]", Um) 

    Set ObjetoArquivo= ManipulacaoDeArquivo.CreateTextFile(CaminhoDoTemplateAjustado & NomeDoArquivo) 
    ObjetoArquivo.Write(DadosDoObjetoArquivo) 

    Set ObjetoArquivo= ManipulacaoDeArquivo.OpenTextFile(CaminhoDoTemplateAjustado & NomeDoArquivo, 1) 
    DadosDoObjetoArquivo= ObjetoArquivo.ReadAll 

    Dim objCDOSYSMail 
    Dim objCDOSYSCon 

    Set objCDOSYSMail = Server.CreateObject("CDO.Message") 
    Set objCDOSYSCon = Server.CreateObject ("CDO.Configuration") 

    objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.server.com" 
    objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 
    objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
    objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 
    objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "user_id" 
    objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password" 
    objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30 
    objCDOSYSCon.Fields.update 

    Set objCDOSYSMail.Configuration = objCDOSYSCon 
    objCDOSYSMail.From = "ABC <[email protected]>" 
    objCDOSYSMail.To = "[email protected]" 
    objCDOSYSMail.Subject = "Contato" 
    objCDOSYSMail.HTMLBody= DadosDoObjetoArquivo 
    objCDOSYSMail.Send 

    Set objCDOSYSMail = Nothing 
    Set objCDOSYSCon = Nothing 
%> 

我想使这个简单,在文件磁盘中滑动生成文件的步骤。我想:

读取数据库,读取模板,将数据放入内存,发送包含该数据的邮件到内存中。

感谢

回答

1

如果我没有看到它,你需要做的就是跳过,你保存文件,并重新读取它的部分......我已经重构你的代码,给变量一些英语名称,以便我可以看到这是怎么回事,和注释掉线你不需要:

<% 
    Dim TemplateName  : TemplateName = "template.htm" 
    Dim TemplateFullPath : TemplateFullPath = Server.MapPath(TemplateName) 
    Dim TemplatePath  : TemplatePath = Mid(TemplateFullPath,1,InStrRev(TemplateFullPath,"\")) 

    Dim ArchiveName  : ArchiveName = "evento.htm" 
    Dim ArchiveFullPath : ArchiveFullPath = Server.MapPath(ArchiveName) 

    Dim FSO, TemplateFile, TemplateText 
    Set FSO = Server.CreateObject("Scripting.FileSystemObject") 
     Set TemplateFile = FSO.OpenTextFile(TemplateFullPath, 1) 
      TemplateText = TemplateFile.ReadAll() 
      TemplateText = Replace(TemplateText, "[Cliente]", Um) 
      TemplateFile.Close() 

' Really simple - to do this in-memory, simply don't save and re-read the file.... 

'  Set TemplateFile = FSO.CreateTextFile(TemplatePath & ArchiveName) 
'   TemplateFile.Write(TemplateText) 

'  Set TemplateFile = FSO.OpenTextFile(TemplatePath & ArchiveName, 1) 
'   TemplateText = TemplateFile.ReadAll 


     Set TemplateFile = Nothing 
    Set FSO = Nothing 

    Dim objCDOSYSMail, objCDOSYSCon 
    Set objCDOSYSMail = Server.CreateObject("CDO.Message") 
     Set objCDOSYSCon = Server.CreateObject ("CDO.Configuration") 
      objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.server.com" 
      objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 
      objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
      objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 
      objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "user_id" 
      objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password" 
      objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30 
      objCDOSYSCon.Fields.update 

      Set objCDOSYSMail.Configuration = objCDOSYSCon 
       objCDOSYSMail.From = "ABC <[email protected]>" 
       objCDOSYSMail.To = "[email protected]" 
       objCDOSYSMail.Subject = "Contato" 
       objCDOSYSMail.HTMLBody= TemplateText 
       objCDOSYSMail.Send 
      Set objCDOSYSMail.Configuration = Nothing 
     Set objCDOSYSMail = Nothing 
    Set objCDOSYSCon = Nothing 
%> 

希望这有助于

埃里克

+0

谢谢你的支持者,因为这么友善。祝你今天愉快! – Khrys 2013-02-27 13:26:58

1

,你可以使用几种TEC hniques:

  • 写自己的StringBuilder类
  • 使用.NET system.io.stringwriter类(是的,你可以用这个从传统的ASP)
  • 使用adodb.stream对象

示例的StringWriter:

set sw = server.createObject("system.io.stringwriter") 
sw.write_12(DadosDoObjetoArquivo) 

objCDOSYSMail.HTMLBody = sw.getStringBuilder().toString() 

示例(adodb.stream):

set stream = server.createobject("ADODB.Stream") 
with stream 
    .Open 
    .WriteText DadosDoObjetoArquivo 
end with 

objCDOSYSMail.HTMLBody = stream.ReadText 
stream.Close 
+0

感谢您的回答和解释。祝你今天愉快! – Khrys 2013-02-27 13:27:27

相关问题