使用mail命令发送带有csv附件的html表

时间:2017-07-25 12:22:46

标签: csv unix mailx

我有一个我要附加的csv文件。我已经创建了一个csv的html表,以及如下所示的内联显示表。如果我没有附加文件,脚本运行正常。

cat htmltempfile

<head> 
<style>
table {
    border-collapse: collapse;
    width: 70%;
}

th, td {
    padding: 8px;
    text-align: left;
    border-bottom: 1px solid #ddd;
}

tr:hover{background-color:#dddddd}
</style>
</head>
<body>
<table>
<tr><th>team</th><th>type</th><th>10:15:00</th><th>11:15:00</th><th>12:15:00</th><th>13:15:00</th><th>14:15:00</th><th>15:15:00</th><th>15:30:00</th></tr>
<tr><td>C</td><td>W</td><td>278645</td><td>434543</td><td>4906</td><td>55494</td><td>68232</td><td>7341</td><td>123641</td></tr>
<tr><td>B</td><td>P</td><td>63361</td><td>79405</td><td>75303</td><td>7243</td><td>74224</td><td>7331</td><td>26159</td></tr>
<tr><td>B</td><td>W</td><td>28357</td><td>97934</td><td>1000</td><td>20005</td><td>16875</td><td>2004</td><td>0</td></tr>
<tr><td></td></tr>
</table>

today=$(date +%Y%m%d | tr -d '\n')
emaillist="a@b.com
appname="path/to/csv/file.csv"
htmltempfile="path/to/csv/htmltempfile"
cat "$htmltempfile" | mail -s "$(echo -e "Subject:$today $appname.\nContent-Type: text/html")"  $emaillist
#runs fine


cat "$htmltempfile" | mail -s "$(echo -e "Subject:$today $appname.\nContent-Type: text/html")" -a $appname $emaillist
#PROBLEM 

正在附加相同的文件,但它没有正确附加

I see it like this in my gmail

1 个答案:

答案 0 :(得分:0)

邮件 - 赢得了附件的工作。你必须使用&#34; uuencode&#34;用于附加文件。

如果您想显示如下所示的HTML摘要和附件。

sendEmail() {

  BOUNDARY=$(date +%s|md5sum)
  BOUNDARY=${BOUNDARY:0:32}

  filename=$(basename $appname)
  (
    echo "From: x@b.com";
    echo "To: $emaillist";
    echo "Reply-To: x@b.com";
    echo "Subject: $today $appname.";
    echo "Content-Type: multipart/mixed; boundary=\"$BOUNDARY\"";
    echo "";
    echo "This is a MIME formatted message.  If you see this text it means that your";
    echo "email software does not support MIME formatted messages, but as plain text";
    echo "encoded you should be ok, with a plain text file.";
    echo "";
    echo "--$BOUNDARY";
    echo "Content-Type: text/html; charset=ISO-8859-1; format=flowed"
    echo "Content-Transfer-Encoding: 8bit"
    echo "Content-Disposition: inline";
    echo ""
    cat "$htmltempfile";
    echo "";
    echo "--$BOUNDARY";
    echo "Content-Type: text/plain; name=\"$filename\"";
    echo "Content-Transfer-Encoding: 8bit";
    echo "Content-Disposition: attachment; filename=\"$filename\";"
    echo ""
    cat "$appname";
    echo "";
    echo "--$BOUNDARY--";
  )  | /usr/sbin/sendmail -t 2>/dev/null
}


today=$(date +%Y%m%d | tr -d '\n')
emaillist="a@b.com
appname="path/to/csv/file.csv"
htmltempfile="htmltempfile"
sendEmail