2011-06-20 35 views

Respuesta

0

Lo tendría recommend using mutt, que es lo suficientemente liviano como para instalarlo rápidamente en cualquier sistema.

+0

que no tengo perro callejero allí y no hay posibilidad de instalarlo. ¿Hay alguna forma de cómo puedo enviar ese archivo por mailx o por correo? Lo he intentado a través de una herramienta de correo electrónico pero no funciona, me refiero a que el archivo se envía por correo y eso no es suficiente para mí. algunas ideas ? – slafik

+0

@slafik: ¿qué sistema y sistema operativo, qué hay disponible? Perl? – ShiDoiSi

12

Puede adjuntar archivos a mailx usando -a igual que

echo "this is the body of the email" | mailx -s"Subject" -a attachment.jpg [email protected] 

siempre y cuando esté en el mismo directorio que su archivo adjunto que debería funcionar bien. Si no se puede indicar simplemente el directorio como `

samachPicsFolder/samachpic.jpg 
+0

Si tiene un 'mailx' que admite' -a', es bueno para usted. Si no lo hace, tal vez mire 'mutt'. Si no quiere dependencias externas y necesita ser portátil en las plataformas U * x, tendrá que escribir algunas líneas de script. – tripleee

2

Si su mailx no soporta la opción -a y que no tienen acceso a mutt, y usted no quiere dar vuelta a uuencode como punto de retorno Desde la década de 1980, como último recurso, puede armar una pequeña envoltura MIME usted mismo.

#!/bin/sh 

# ... do some option processing here. The rest of the code 
# assumes you have subject in $subject, file to be attached 
# in $file, recipients in $recipients 

boundary="${RANDOM}_${RANDOM}_${RANDOM}" 

(
    cat <<____HERE 
Subject: $subject 
To: $recipients 
Mime-Version: 1.0 
Content-type: multipart/related; boundary="$boundary" 

--$boundary 
Content-type: text/plain 
Content-transfer-encoding: 7bit 

____HERE 

    # Read message body from stdin 
    # Maybe apply quoted-printable encoding if you anticipate 
    # overlong lines and/or 8-bit character codes 
    cat 

    cat <<____HERE 

--$boundary 
Content-type: application/octet-stream; name="$file" 
Content-disposition: attachment; filename="$file" 
Content-transfer-encoding: base64 

____HERE 

    # If you don't have base64 you will have to reimplement that, too /-: 
    base64 "$file" 

    cat <<____HERE 
--$boundary-- 
____HERE 

) | sendmail -oi -t 

El camino a sendmail es a menudo dependiente del sistema. Pruebe /usr/sbin/sendmail o /usr/lib/sendmail o ... una miríada de otros lugares raros si no está en su PATH.

Esto es rápido y sucio; para un cumplimiento MIME adecuado, debe hacer la codificación RFC2047 del tema si es necesario, etc., y ver también las notas en los comentarios en el código. Pero para un trabajo cron promedio en inglés de 7 bits centrado en Estados Unidos, funcionará perfectamente.

+0

¡esto es mágico! – Tian

+0

¡¡¡Impresionante !!! ¡¡Gracias!! Este script funciona muy bien para todos los archivos de texto. No he intentado para las imágenes. –

+0

'base64' debería funcionar bien para cualquier tipo de contenido, las complicaciones esperadas serían principalmente si no puede encontrar el valor correcto para poner en el encabezado' Content-Type: 'de la parte del cuerpo del archivo adjunto. – tripleee

0

Trate de usar este comando con el fin de enviar un archivo adjunto usando mailx:

uuencode source_file encoded_filename |mailx -m -s "Subject" [email protected] 
+1

¿Puedes explicar tu respuesta? En particular, ¿por qué usar uuencode, cuando el correo electrónico usa principalmente base64 para archivos adjuntos? ¿Por qué no usar la opción '-a' en mailx? – Robert

Cuestiones relacionadas