代码之家  ›  专栏  ›  技术社区  ›  RavinderSingh13 Nikita Bakshi

Sendmail命令将文件作为电子邮件正文和附件发送[重复]

  •  3
  • RavinderSingh13 Nikita Bakshi  · 技术社区  · 8 年前

    我想在中使用sendmail命令发送电子邮件 bash 电子邮件应通过阅读获得其正文 Input_file_HTML 它也应该发送相同的输入文件作为附件。为此,我尝试了以下方法。

    sendmail_touser() {
    cat - ${Input_file_HTML} << EOF | /usr/sbin/sendmail -oi -t
    From: ${MAILFROM}
    To: ${MAILTO}
    Subject: $1
    Content-Type: text/html; charset=us-ascii
    cat ${Input_file_HTML}
    Content-Transfer-Encoding: 7bit
    MIME-Version: 1.0
    Content-Disposition: attachment; filename: ${Input_file_HTML}
    EOF
    }
    

    上面的命令给出的是一封仅带有附件的电子邮件 输入文件_ HTML 而且它并没有把它写在邮件正文中。你能帮我做同样的事吗?我使用outlook作为电子邮件客户端。我甚至删除了 cat 命令,但它也不工作。

    1 回复  |  直到 5 年前
        1
  •  6
  •   Nick Bull    8 年前

    使用 mutt 相反

    echo "This is the message body" | mutt -a "/path/to/file.to.attach" -s "subject of message" -- recipient@domain.com
    

    要安装 杂种狗 在Debian系统上:

    sudo apt-get install -y mutt
    

    编辑 如果您只能使用 sendmail :

    sendmail_attachment() {
        FROM="$1"
        TO="$2"
        SUBJECT="$3"
        FILEPATH="$4"
        CONTENTTYPE="$5"
    
        (
        echo "From: $FROM"
        echo "To: $TO"
        echo "MIME-Version: 1.0"
        echo "Subject: $SUBJECT"
        echo 'Content-Type: multipart/mixed; boundary="GvXjxJ+pjyke8COw"'
        echo ""
        echo "--GvXjxJ+pjyke8COw"
        echo "Content-Type: text/html"
        echo "Content-Disposition: inline"
        echo "<p>Message contents</p>"
        echo ""
        echo "--GvXjxJ+pjyke8COw"
        echo "Content-Type: $CONTENTTYPE"
        echo "Content-Disposition: attachment; filename=$(basename $FILEPATH)"
        echo ""
        cat $FILEPATH
        echo ""
        ) | /usr/sbin/sendmail -t
    }
    

    使用方式如下:

    sendmail_attachment "to@example.com" "from@example.com" "Email subject" "/home/user/file.txt" "text/plain"