2011-03-22 5 views

risposta

0

non credo sendmail sta per aiutarvi in ​​questo. Andare per un cliente come mutt, e fare per esempio mutt -a file1 -a file2 -- [email protected]. Oppure vai su perl.

+0

non tutti i sistemi avranno la possibilità di installare mutt, in modo che il consiglio non è molto utile a qualcuno che ha bisogno di usare sendmail o mailx, come ha fatto la domanda :) – stevepastelan

+0

@stevepastelan Sendmail semplicemente non può fare senza strumenti aggiuntivi. Quali strumenti sceglierai dipende da te. – ShiDoiSi

+1

Ma, naturalmente, sendmail * * può farlo. È solo una questione di come formattare i contenuti da trasmettere a sendmail. – stevepastelan

9

a patto di avere uunecode disponibile nel vostro sistema è possibile inviare e-mail con allegati multipli come questo:

#!/bin/bash 

... 
... 
... 
BOUNDARY="=== This is the boundary between parts of the message. ===" 

{ 
    echo "From: $MAILFROM" 
    echo "To: $MAILTO" 
    echo "Subject:" $SUBJECT 
    echo "MIME-Version: 1.0" 
    echo "Content-Type: MULTIPART/MIXED; " 
    echo " BOUNDARY="\"$BOUNDARY\" 
    echo 
    echo "  This message is in MIME format. But if you can see this," 
    echo "  you aren't using a MIME aware mail program. You shouldn't " 
    echo "  have too many problems because this message is entirely in" 
    echo "  ASCII and is designed to be somewhat readable with old " 
    echo "  mail software." 
    echo 
    echo "--${BOUNDARY}" 
    echo "Content-Type: TEXT/PLAIN; charset=US-ASCII" 
    echo 
    echo "This email comes with multiple attachments." 
    echo 
    echo 
    echo "--${BOUNDARY}" 
    echo "Content-Type: application/zip; charset=US-ASCII; name="${ZIPFILE} 
    echo "Content-Disposition: attachment; filename="`basename ${ZIPFILE}` 
    echo 
    uuencode $ZIPFILE $ZIPFILE 
    echo 
    echo "--${BOUNDARY}--" 
    echo "Content-Type: application/pdf; charset=US-ASCII; name="${PDFFILE} 
    echo "Content-Disposition: attachment; filename="`basename ${PDFFILE}` 
    echo 
    uuencode $PDFFILE $PDFFILE 
    echo 
    echo "--${BOUNDARY}--" 
} | /usr/lib/sendmail -t 
+0

La posta inviata dal metodo suggerito sopra è in grado di inviare il file in allegato, ma viene ricevuto come un file codificato nel client di posta elettronica di Outlook. Come inviare il file in modo tale che sia ricevuto come file decodificato come destinatario? – greperror

0

Ecco uno script bash che uso per inviare i rapporti che generano per le persone. Sono inviati come allegati. Inserisci il tuo codice HTML nella variabile "body" dello script. Lascerò a te la parametrizzazione delle variabili.

#!/bin/bash 

function get_mimetype(){ 
file --mime-type "$1" | sed 's/.*: //' 
} 

from="[email protected]" 
to="[email protected]" 
subject="Your Report my Lord" 
boundary="=== Boundary ===" 
body="The reports are attached to this email" 
declare -a attachments 
attachments=("fileOne.out" "fileTwo.out" "fileThree.out" "file-et-cetera.out") 

# Build headers 
{ 

printf '%s\n' "From: $from 
To: $to 
Subject: $subject 
Mime-Version: 1.0 
Content-Type: multipart/mixed; boundary=\"$boundary\" 

--${boundary} 
Content-Type: text/plain; charset=\"US-ASCII\" 
Content-Transfer-Encoding: 7bit 
Content-Disposition: inline 

$body 
" 

for file in "${attachments[@]}"; do 

     [ ! -f "$file" ] && echo "Attachment $file not found, omitting file" >&2 && continue 

     mimetype=$(get_mimetype "$file") 

    printf '%s\n' "--${boundary} 
Content-Type: $mimetype 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment; filename=\"$file\" 
    " 

    base64 "$file" 
    echo 
done 

# print last boundary with closing -- 
printf '%s\n' "--${boundary}--" 

} | sendmail -t -oi