-1

電子メール テンプレートを使用してプログラムで使用しようとしています。プログラム変数と .

ヒアドキュメントのプログラムにこれを含めると、実際の例があります。しかし、これをプログラムの外部のテンプレートとして保持し、他の人に配布してカスタマイズできるようにしたいと考えています。つまり、プログラムの変数を使用して、テンプレートから #{tabcmd} と #{img} を置き換えようとしています。

しかし、私はこのエラーが発生します。\ でエスケープしましたが、動きませんでした。01:19:35PM: キャッチされた例外: 終了エラー メッセージ: (eval):5: 構文エラー、予期しない tIDENTIFIER、$end が必要です

私も body1 = を試しましeval("\"#{body}\"")た。しかし、うまくいきませんでした。yaml などを使用する必要がありますか?

働く

def sendmessage(report_name, rep_desc, to_list,  rcptList, subject_line,  body, error_file_name, table_name_n, file_name_n , log_file)

    ##########################
    # loop arround each image file and add it to the email.
    ##########################
    imtg=""
    #define global variable to loop arround each image file.
    $party=""
    file_name_n.each { |a| puts a
    fname1 = "#{Base64.encode64(File.open(a, 'rb').read)}"

    part4=<<EOF
    Content-Type: image/png; name="#{a}"
    Content-Transfer-Encoding:base64
    Content-Disposition: attachment; filename="#{a}"

    #{fname1}
    --#{marker}
    EOF

    $party << part4

    imtg <<"<IMG SRC=\"#{a}\"  alt=\"#{a}\">"
    puts imtg
    }

          tabnam = File.open(table_name_n, 'rb').read
    puts tabnam
    ##########################
    # Build email body
    ##########################
    body = <<EOF
            <html>
    <head>
    <title>Dashboards</title>
    </head>
    <body style="margin: 0px; padding: 0px; font-family: 'Trebuchet MS',verdana;">
    <table width="100%" style="height: 100%;" cellpadding="4" cellspacing="0" border="0">
    <tr>
    <!-- ============ HEADER SECTION ============== -->
    <td colspan="3" style="height: 100px;" bgcolor="#38424F" align="center"><h1><font size="3" color="white">#{report_name}</font></h1></td>
    </tr>
    #{tabcmd}
    ..
    #{img}
    ...

    EOF

動作しない

    ##########################
    # loop arround each image file and add it to the email.
    ##########################
    imtg=""
    #define global variable to loop arround each image file.
    $party=""
    file_name_n.each { |a| puts a
    fname1 = "#{Base64.encode64(File.open(a, 'rb').read)}"

    part4=<<EOF
    Content-Type: image/png; name="#{a}"
    Content-Transfer-Encoding:base64
    Content-Disposition: attachment; filename="#{a}"

    #{fname1}
    --#{marker}
    EOF

    $party << part4

    imtg <<"<IMG SRC=\"#{a}\"  alt=\"#{a}\">"
    puts imtg
    }

    tabnam = File.open(table_name_n, 'rb').read
    puts tabnam

    ##########################
    # Build email body
    ##########################

    body = File.open(body, 'rb').read
    puts body

... ... これで実際にテンプレートの内容を以下のように入れます。しかし、上記で生成された"#{tabnam}""#{imtg}"を置き換えたかったのです。

    <html>
    <head>
    <title>Dashboards</title>
    </head>
    <body style="margin: 0px; padding: 0px; font-family: 'Trebuchet MS',verdana;">
    <table width="100%" style="height: 100%;" cellpadding="4" cellspacing="0" border="0">
    <tr>
    <!-- ============ HEADER SECTION ============== -->
    <td colspan="3" style="height: 100px;" bgcolor="#38424F" align="center"><h1><font size="3" color="white">#{report_name}</font></h1></td>
    </tr>



    <table width="100%" align="center" border="0" cellspacing="0" cellpadding="5">
    <tr>
    <td width="50%" align="right">
    #{tabnam}
    </td>
    <td width="50%" align="left">
    <IMG SRC="data_chart.png"  alt="data_chart.png">
    </td>
    </tr>
    </table>

    <!-- ============ MIDDLE COLUMN (CONTENT) ============== -->
    <td width="100%" colspan="3" valign="top" bgcolor="#FBFCFF" align="center">
    <!--#{tabnam}-->
    #{imtg}
    <br>
    <br>

更新 - 解決策: 遊んでいるときに答えが見つかりました。私はgsubを使用する必要があります..簡単な解決策。

body=body.gsub(/\#{tabnam}/, "#{tabnam}").gsub(/\#{imtg}/, "#{imtg}").gsub(/\#{report_name}/, "#{report_name}").gsub(/\#{rep_desc}/, "#{rep_desc}")
4

1 に答える 1