2013-02-27 50 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

相關問題