как отправить письмо через mailx с приложенным файлом - PullRequest
11 голосов
/ 20 июня 2011

Мне нужно отправить файл через mailx или по почте, но я смотрю, чтобы отправить его в виде вложения, а не в теле сообщения.Есть ли способ, как это сделать?В конце концов, есть ли какой-нибудь другой инструмент в солярисе, который можно использовать для такой процедуры?Спасибо

Ответы [ 5 ]

13 голосов
/ 28 мая 2013

Вы можете прикреплять файлы к mailx, используя -a, вот так

echo "this is the body of the email" | mailx -s"Subject" -a attachment.jpg Someone@Domain.com

до тех пор, пока вы находитесь в том же каталоге, что и ваше вложение, которое должно работать нормально. Если нет, вы можете просто указать каталог как `

samachPicsFolder/samachpic.jpg
4 голосов
/ 01 октября 2014

Если ваш mailx не поддерживает опцию -a и у вас нет доступа к mutt, и вы не хотите переходить на uuencode в качестве запасного варианта с 1980-х годов, какВ крайнем случае вы можете собрать небольшую MIME упаковку самостоятельно.

#!/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

Путь к sendmail часто зависит от системы.Попробуйте /usr/sbin/sendmail или /usr/lib/sendmail или ... множество других странных мест, если их нет в вашем PATH.

Это быстро и грязно;для надлежащего соответствия MIME вы должны выполнить кодировку RFC2047 для субъекта, если это необходимо, и т. д., а также см. примечания в комментариях к коду.Но для вашей обычной 7-битной англоязычной работы cron в США все будет хорошо.

1 голос
/ 14 марта 2017

Попробуйте использовать эту команду для отправки вложения с использованием Mailx:

uuencode source_file encoded_filename |mailx -m -s  "Subject" something@something.com
1 голос
/ 20 июня 2011

Что касается mailx, вы можете найти вдохновение здесь http://www.shelldorado.com/articles/mailattachments.html

Я бы порекомендовал вам взглянуть на mutt http://www.mutt.org/

0 голосов
/ 20 июня 2011

Я бы рекомендовал использовать для него mutt, что достаточно мало для быстрой установки в любой системе.

...