在HTML

时间:2017-04-20 14:15:46

标签: html sql oracle html-email

我正在从存储过程向send_email功能发送HTML消息。 HTML内容作为模板存储在表中,动态值将传递给此表以呈现显示。 所有这些都是通过调用SMTP打开连接的存储过程完成的。

这是在存储过程中形成主体的方式。

SELECT REGEXP_REPLACE(
                REGEXP_REPLACE(
                REGEXP_REPLACE(
                REGEXP_REPLACE(
                REGEXP_REPLACE( 
                REGEXP_REPLACE(body, '<DUE_DAYS> business days',v_past_due)                                  
                                   , '<COMPANY_ADDRESS>', p_email(indx).address||'<BR/>'
                                                        ||p_email(indx).city||', '
                                                        ||p_email(indx).state||' '
                                                        ||p_email(indx).zip)                                  
                                   , '<TAX_PIN>', TO_CHAR(p_email(indx).tax_pin,'$9G999G999G990D00'))
                                   , '<TAX_AMT>', TO_CHAR(p_email(indx).tax_amt,'$9G999G999G990D00'))
                                   , '<TAX_AMT_PEN>', TO_CHAR(p_email(indx).tax_amt_pen,'$9G999G999G990D00'))
                                   , '<DUE_DATE>' , due_date)
           INTO v_body
           FROM pmail_txt
          WHERE status = 'DUE_SEND';

pmail_txt中的html内容状态=&#39; DUE_SEND&#39;看起来像这样,

<TABLE BORDER="0" WIDTH="75%;"><TBODY>
<TR><TD WIDTH="40%">Overall Due Days:</TD><TD WIDTH="60%"><v_past_due></TD></TR>
<TR><TD WIDTH="40%">Company Address:</TD><TD WIDTH="60%"><COMPANY_ADDRESS></TD></TR>
<TR><TD WIDTH="40%">Pin Number:</TD><TD WIDTH="60%"><TAX_PIN></TD></TR>
<TR><TD WIDTH="40%">Amount Due:</TD><TD WIDTH="60%"><TAX_AMT></TD></TR><TR>
<TD WIDTH="40%">Ex Amount Due:</TD><TD WIDTH="60%"><EIND_AMT></TD></TR>
<TR><TD WIDTH="40%"><STRONG>Pendign Amount Due</STRONG>:</TD><TD WIDTH="60%"><STRONG><TAX_AMT_PEN></STRONG></TD></TR>
<TR><TD WIDTH="40%"><STRONG>Due DATE</STRONG>:</TD><TD WIDTH ="60%"><STRONG><DUE_DATE></STRONG></TD></TR>
</TBODY>
</TABLE>

我希望将一个条件添加到HTML中,这样当value为null时,不会在电子邮件正文中显示该字段。

我已根据下面的评论更改了代码。我得到它的工作非空字段,但对于空字段/消息的主体根本没有出现。有人能告诉我哪里出错了吗?

<style>
.hidden_v_past_due  {
display:none;
}
</style>
    <TABLE BORDER="0" WIDTH="75%;"><TBODY>
    <TR class="hidden_v_past_due<v_past_due>"><TD WIDTH="40%">Overall Due Days:</TD><TD WIDTH="60%"><v_past_due></TD></TR>
    <TR><TD WIDTH="40%">Company Address:</TD><TD WIDTH="60%"><COMPANY_ADDRESS></TD></TR>
    <TR><TD WIDTH="40%">Pin Number:</TD><TD WIDTH="60%"><TAX_PIN></TD></TR>
    <TR><TD WIDTH="40%">Amount Due:</TD><TD WIDTH="60%"><TAX_AMT></TD></TR><TR>
    <TR><TD WIDTH="40%">Ex Amount Due:</TD><TD WIDTH="60%"><EIND_AMT></TD></TR>
    <TR><TD WIDTH="40%"><STRONG>Pendign Amount Due</STRONG>:</TD><TD WIDTH="60%"><STRONG><TAX_AMT_PEN></STRONG></TD></TR>
    <TR><TD WIDTH="40%"><STRONG>Due DATE</STRONG>:</TD><TD WIDTH ="60%"><STRONG><DUE_DATE></STRONG></TD></TR>
    </TBODY>
    </TABLE>

还试过下面的scriplet

<TABLE BORDER="0" WIDTH="75%;"><TBODY>
<%if(v_past_due != null){%>
<TR><TD WIDTH="40%">Overall Due Days:</TD><TD WIDTH="60%"><v_past_due></TD></TR><%}%>
<TR><TD WIDTH="40%">Company Address:</TD><TD WIDTH="60%"><COMPANY_ADDRESS></TD></TR>
<TR><TD WIDTH="40%">Pin Number:</TD><TD WIDTH="60%"><TAX_PIN></TD></TR>
<TR><TD WIDTH="40%">Amount Due:</TD><TD WIDTH="60%"><TAX_AMT></TD></TR><TR>
<TR><TD WIDTH="40%">Ex Amount Due:</TD><TD WIDTH="60%"><EIND_AMT></TD></TR>
<TR><TD WIDTH="40%"><STRONG>Pendign Amount Due</STRONG>:</TD><TD WIDTH="60%"><STRONG><TAX_AMT_PEN></STRONG></TD></TR>
<TR><TD WIDTH="40%"><STRONG>Due DATE</STRONG>:</TD><TD WIDTH ="60%"><STRONG><DUE_DATE></STRONG></TD></TR>
</TBODY>
</TABLE>

也试过以下选项

<%if(<v_past_due>){%>....///......<%}%>
<%if(v_past_due != null){%>....///......<%}%>

所有这些都适用于!null条件,并且所有内容都因null而失败。

1 个答案:

答案 0 :(得分:1)

您可以尝试向元素添加类属性,例如,当相应的字段值为null时,生成的类名将隐藏元素。 E.g。

<style>
.hidde_v_past_due {
display:none;
}
</style>
...
<TR class="hidde_v_past_due<v_past_due>"><TD WIDTH="40%">Overall Due Days:</TD><TD WIDTH="60%"><v_past_due></TD></TR>

这样,当v_past_due为空时,类名将与样式中的名称匹配,并且TR将不会显示。