【发布时间】:2011-05-15 06:13:10
【问题描述】:
问题是当通过 mailx 将 html 文件作为附件发送到 Outlook 时,文件的格式保持良好(通过 Internet Explorer 打开)但是当我将其作为正文发送到邮件中时(在 Outlook 中打开)然后展望 2007 年视图的格式变化。如何避免?
我使用两个函数从日志文件创建 htlm 文件,解析器函数正在读取日志文件,因此它正在创建一个 .html 文件,然后我使用下面定义的函数发送邮件来发送Outlook 中的邮件。
我的功能是
parser()
{
export Staglog=./StagingTool1.7.4.log
export Staglog_Html=./StagingTool1.7.4.log.html
rm -f $Staglog_Html
echo "<html>" >> $Staglog_Html
echo "<head>" >> $Staglog_Html
echo "<style type="text/css">" >> $Staglog_Html
echo ".font_orange_bold_large" >> $Staglog_Html
echo "{" >> $Staglog_Html
echo "color: #FF9900;" >> $Staglog_Html
echo "font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;" >> $Staglog_Html
echo "font-size: 17px;" >> $Staglog_Html
echo "font-style: normal;" >> $Staglog_Html
echo "font-weight: bold;" >> $Staglog_Html
echo "text-align: center;" >> $Staglog_Html
echo "}" >> $Staglog_Html
echo ".table_heading_darkblue_white_center" >> $Staglog_Html
echo "{" >> $Staglog_Html
echo "background-color: #256B9C;" >> $Staglog_Html
echo "color: #FFFFFF;" >> $Staglog_Html
echo "font-family: Arial, Helvetica, sans-serif;" >> $Staglog_Html
echo "font-size: 12px;" >> $Staglog_Html
echo "font-weight: bold;" >> $Staglog_Html
echo "text-align: center;" >> $Staglog_Html
echo "}" >> $Staglog_Html
echo ".table_cell_grey" >> $Staglog_Html
echo "{" >> $Staglog_Html
echo "background-color: #6DA2D7;" >> $Staglog_Html
echo "color: #FFFFFF;" >> $Staglog_Html
echo "font-family: Arial, Helvetica, sans-serif;" >> $Staglog_Html
echo "font-size: 12px;" >> $Staglog_Html
echo "font-weight: bold;" >> $Staglog_Html
echo "}" >> $Staglog_Html
echo ".font_white_bold_normal" >> $Staglog_Html
echo "{" >> $Staglog_Html
echo "color: #FFFFFF;" >> $Staglog_Html
echo "font-family: Verdana, Arial, Helvetica, sans-serif;" >> $Staglog_Html
echo "font-size: 11px;" >> $Staglog_Html
echo "font-style: normal;" >> $Staglog_Html
echo "font-weight: bold;" >> $Staglog_Html
echo "}" >> $Staglog_Html
echo ".font_normal" >> $Staglog_Html
echo "{" >> $Staglog_Html
echo "color: #000000;" >> $Staglog_Html
echo "font-family: Verdana, Arial, Helvetica, sans-serif;" >> $Staglog_Html
echo "font-size: 12px;" >> $Staglog_Html
echo "font-style: normal;" >> $Staglog_Html
echo "}" >> $Staglog_Html
echo "</style>" >> $Staglog_Html
echo "</head>" >> $Staglog_Html
echo "<body><table width=90% border=0 cellspacing=0 cellpadding=3 align=center>" >> $Staglog_Html
echo "<tr><td colspan=2><font face=verdana size=5 color=#999999>amdocs | </font><font face=verdana size=5>TELUS</font></td></
tr>" >> $Staglog_Html
echo "<tr bgcolor=#6DA2D7><td colspan=2 height=13></td></tr>" >> $Staglog_Html
echo "<tr bgcolor=#256B9C class=font_white_bold_normal><td align=left height=30>2010-05-01 07:00:00 thru 2010-05-01 07:59:59<
/td><td align=right>Staging Tool</td></tr>" >>$Staglog_Html
echo "<tr><td colspan=2 class=font_orange_bold_large>Status Report</td></tr>" >> $Staglog_Html
cat $Staglog | while read line
do
data=1
startField=`echo $line |cut -c 1`
if [ $startField = "#" ]
then
line1=`echo $line|sed 's/#//g'`
echo '<table width=80% border=1 cellspacing=0 cellpadding=3 align=center style="border-collapse: collapse" bo
rdercolor=black>' >> $Staglog_Html
echo "<tr class=table_heading_darkblue_white_center><td align=left>$line1</td>" >> $Staglog_Html
data=0
fi
if [ `echo $line | cut -c 1` = \| ]
then
line1=`echo "$line" | awk -F"|" {'print $2'}`
echo "font-style: normal;" >> $Staglog_Html
echo "}" >> $Staglog_Html
echo "</style>" >> $Staglog_Html
echo "</head>" >> $Staglog_Html
echo "<body><table width=90% border=0 cellspacing=0 cellpadding=3 align=center>" >> $Staglog_Html
echo "<tr><td colspan=2><font face=verdana size=5 color=#999999>ABC| </font><font face=verdana size=5>XZY</font></td></
tr>" >> $Staglog_Html
echo "<tr bgcolor=#6DA2D7><td colspan=2 height=13></td></tr>" >> $Staglog_Html
echo "<tr bgcolor=#256B9C class=font_white_bold_normal><td align=left height=30>2010-05-01 07:00:00 thru 2010-05-01 07:59:59<
/td><td align=right>Staging Tool</td></tr>" >>$Staglog_Html
echo "<tr><td colspan=2 class=font_orange_bold_large>Status Report</td></tr>" >> $Staglog_Html
cat $Staglog | while read line
do
data=1
startField=`echo $line |cut -c 1`
if [ $startField = "#" ]
then
line1=`echo $line|sed 's/#//g'`
echo '<table width=80% border=1 cellspacing=0 cellpadding=3 align=center style="border-collapse: collapse" bo
echo "<tr bgcolor=#256B9C class=font_white_bold_normal><td align=left height=30>2010-05-01 07:00:00 thru 2010-05-01 07:59:59<
/td><td align=right>Staging Tool</td></tr>" >>$Staglog_Html
echo "<tr><td colspan=2 class=font_orange_bold_large>Status Report</td></tr>" >> $Staglog_Html
cat $Staglog | while read line
do
data=1
cat $Staglog | while read line
do
data=1
startField=`echo $line |cut -c 1`
if [ $startField = "#" ]
then
line1=`echo $line|sed 's/#//g'`
echo '<table width=80% border=1 cellspacing=0 cellpadding=3 align=center style="border-collapse: collapse" bo
rdercolor=black>' >> $Staglog_Html
echo "<tr class=table_heading_darkblue_white_center><td align=left>$line1</td>" >> $Staglog_Html
data=0
fi
if [ `echo $line | cut -c 1` = \| ]
then
line1=`echo "$line" | awk -F"|" {'print $2'}`
IFS=","
set -A col_arr $line1
count=0
echo '<table width=70% border=1 cellspacing=0 cellpadding=3 align=center style="border-collapse: collapse" bo
rdercolor=black>' >> $Staglog_Html
echo "<tr class=table_heading_darkblue_white_center>" >> $Staglog_Html
while [ $count -lt ${#col_arr[*]} ]
do
echo "<td>${col_arr[$count]}</td>" >> $Staglog_Html
count=$(($count+1))
done
data=0
fi
if [ `echo $line | cut -c 1` = - ]
then
echo "</table>" >> $Staglog_Html
data=0
fi
if [ $data -eq 1 ]
then
IFS=","
set -A data_arr $line
count=0
echo "<tr>" >> $Staglog_Html
while [ $count -lt ${#data_arr[*]} ]
do
echo "<td>${data_arr[$count]}</td>" >> $Staglog_Html
count=$(($count+1))
done
echo '</tr>' >> $Staglog_Html
fi
unset IFS
done
echo "</table>" >> $Staglog_Html
echo "</html>" >> $Staglog_Html
}
sendMail()
{
export EMAIL_DISTRIBUTION_LIST="`cat StagingValidationToolEmailList.lst 2>/dev/null`"
echo "Sending Mail "
echo $EMAIL_DISTRIBUTION_LIST
parser
if [ -s $Staglog_Html ]
then
( echo "Subject:"STAGING Status""
echo "MIME-Version: 1.0"
echo "Content-Type: text/html"
echo "Content-Disposition: inline"
echo "From:Staging Status Mail"
cat $Staglog_Html
) | /usr/sbin/sendmail $EMAIL_DISTRIBUTION_LIST
fi
}
【问题讨论】:
-
谢谢戴夫,我无法正确编辑帖子,我尝试但没有成功使其更易于查看。非常感谢
-
说真的,这样做
{ echo "foo" ... many lines ... echo "bar"; } > "$Staglog_Html"。它不会解决您的问题,但会大大简化事情(您可以在开头消除rm)。如果您需要在所有 tl;dr 的中间进行一些输出,您可以使用显式重定向到文件或文件描述符来处理这些异常。此外,您不需要导出这些变量。 -
您也可以考虑使用 here-doc 而不是所有那些
echos。此外,您似乎有很多重复的代码,但这可能是发布您的问题时的错误。顺便说一句,你永远不会说格式究竟是如何变化的。
标签: html unix scripting shell html-parsing