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 <abc@server.com>"
    objCDOSYSMail.To = "sender@gmail.com"
    objCDOSYSMail.Subject = "Contato"
    objCDOSYSMail.HTMLBody= DadosDoObjetoArquivo
    objCDOSYSMail.Send

    Set objCDOSYSMail = Nothing
    Set objCDOSYSCon = Nothing
%>

ディスクにファイルを生成する手順をスキップして、これを簡単にしたいと思います。私はしたいと思います:

データベースを読み取り、テンプレートを読み取り、データをメモリに入れ、そのデータをメモリに入れてメールを送信します。

ありがとう

4

2 に答える 2

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 <abc@server.com>"
                objCDOSYSMail.To = "sender@gmail.com"
                objCDOSYSMail.Subject = "Contato"
                objCDOSYSMail.HTMLBody= TemplateText
                objCDOSYSMail.Send
            Set objCDOSYSMail.Configuration =  Nothing
        Set objCDOSYSMail = Nothing
    Set objCDOSYSCon = Nothing
%>

お役に立てれば、

エリック

于 2013-02-27T13:16:48.633 に答える
1

いくつかのテクニックを使用できます。

  • 独自のstringbuilderクラスを作成する
  • .net system.io.stringwriterクラスを使用します(はい、これは従来のaspから使用できます)
  • adodb.streamオブジェクトを使用します

ストリングライターの例:

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
于 2013-02-27T13:17:09.180 に答える