簡體   English   中英

使用uuencode時,bash腳本的mail命令未發送附件,郵件正文為html文件

[英]mail command from bash script not sending attachment when using uuencode , mail body is html file

我已經編寫了一個在郵件正文中創建html表的腳本,我想使用mail命令和uuencode將文件/ zip作為附件發送,但是不知何故它無法在bash腳本中工作,但可以從控制台工作。

mailbody="<html><table><th><tr><td>Name</td><td>Age</td></tr></th><tr><td>\
           ABC</td><td>25</td></tr></table></html>"
echo $mailbody>>mailer.txt
#assume i have test.txt or test.zip which i need as attachment in mail
#i tried below with html part as body
uuencode test.txt test.txt|mail -s "Test mail\nContent-Type: text/html" "xyz.com" <mailer.txt

這會發送帶有html表但正文丟失的郵件正文的郵件。

uuencode test.txt test.txt|mail -s "Test mail" "xyz.com"  properly send mail with test.txt as attachment but a plain mail , no html

提前致謝

這是一個相當普遍的問題,但是通常很難回答,因為沒有一個標准的mail命令。 有些人支持您的嘗試; 大多數不。

似乎您遇到了麻煩,可能您的用戶屬於不支持MIME的組,但請查看其手冊頁中是否有希望的選擇。

傳統上,電子郵件是純文本的7位US-ASCII,沒有“附件”之類的東西。 早在1980年代和1990年代的某個時候,如果您想向某人發送文件,則可以在電子郵件的文本中嵌入一段uuencode gobbledygook,並希望收件人知道該怎么做。

輸入MIME。 現代電子郵件是一種結構化的實體,其中每封郵件都有一個或多個MIME部分,每個部分都有內容類型和編碼。 “附件”定義不正確,但是通常,電子郵件內嵌程序將無法內聯顯示的MIME部分顯示為可點擊鏈接。

為了在現代世界中發送帶有附件的HTML消息,您需要一個可識別MIME的郵件客戶端來發送消息。 看來您的mail不符合要求。 常見的解決方法(實際上幾乎是事實上的標准)是安裝並使用mutt ,但是如果您使用的是相當現代的平台,則可能有更輕巧的替代方法。

USE this :

#!/usr/bin/ksh

export MAILTO="spam@ebay.com"
export SUBJECT="Mail Subject"
export BODY="/tmp/email_body.html"
export ATTACH="/tmp/attachment.txt"
(
 echo "To: $MAILTO"
 echo "Subject: $SUBJECT"
 echo "MIME-Version: 1.0"
 echo 'Content-Type: multipart/mixed; boundary="-q1w2e3r4t5"'
 echo
 echo '---q1w2e3r4t5'
 echo "Content-Type: text/html"
 echo "Content-Disposition: inline"
 cat $BODY
 echo '---q1w2e3r4t5'
 echo 'Content-Type: application; name="'$(basename $ATTACH)'"'
 echo "Content-Transfer-Encoding: base64"
 echo 'Content-Disposition: attachment; filename="'$(basename $ATTACH)'"'
 uuencode -m $ATTACH $(basename $ATTACH)
 echo '---q1w2e3r4t5--'
) | /usr/sbin/sendmail $MAILTO

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM