2014-12-30 3 views
0

Я пытаюсь использовать Sendmail функцию в UNIX, но не могу показаться, чтобы получить вложение прийти через ... мой код происходит некорректно:Sendmail с приложением кодируются

export MAILTO="[email protected]" 
export SUBJECT="test mail" 
export ATTACH="/home/tstattach" 
(
echo "To: $MAILTO" 
echo "Subject: $SUBJECT" 
echo "MIME-Version: 1.0" 
echo 'Content-Type: multipart/mixed; boundary="-q1w2e3r4t5"' 
echo "this is a test message" 
base64 $ATTACH 
) | sendmail $MAILTO 

мое сообщение по электронной почте поступает таким образом без прикрепления:

this is a test message 
dGVzdCBhdHRhY2htZW50 
---q1w2e3r4t5-- 

Как получить прикрепление, чтобы пройти? это похоже на его кодирование это странным образом ... Я пробовал uuencode, а не base64, но потом я получаю сообщение об ошибке, когда uuencode не найден ...

ответ

2

ОК, чувствуя себя хорошо сегодня. Вот один рабочий (проверено):

export MAILTO="[email protected]" 
export SUBJECT="test mail" 
export ATTACH="/home/tstattach" 
(
    echo "Date: $(date -R)" 
    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/plain; charset=utf-8' 
    echo 'Content-Transfer-Encoding: 8bit' 
    echo 
    echo "this is a test message" 
    echo '---q1w2e3r4t5' 
    echo 'Content-Type: text/plain; charset=utf-8; name=attach.txt' 
    echo 'Content-Transfer-Encoding: base64' 
    echo 'Content-Disposition: attachment; filename=attach.txt' 
    echo 
    base64 <"$ATTACH" 
    echo 
    echo '---q1w2e3r4t5--' 
) | sendmail $MAILTO 

Но пожалуйста сделать сделайте себе одолжение и читать по электронной почте (RFC822 и его замены) и MIME (РЛК вокруг 2047).