web-dev-qa-db-ja.com

Linuxでメールコマンドを使用してファイルを添付する方法

Linux Shellを実行しているサーバーにいます。簡単なファイルを受信者にメールで送信する必要があります。これを行う方法、できればmailコマンドのみを使用しますか?

UPDATE:代わりにmuttを使用して、良い解決策を得ました:

$ echo | mutt -a syslogs.tar.gz [email protected]
58
Seiti

Uuencodeを使用した例:

uuencode surfing.jpeg surfing.jpeg | mail [email protected]

および参照記事:

http://www.shelldorado.com/articles/mailattachments.html

注意:

apt install sharutilsuuencodeコマンドを使用できます

48
Jon
$ echo | mutt -a syslogs.tar.gz [email protected]

ただし、メール(またはmailx)ではなくmuttを使用します。

20
Seiti

mailは、私が試した現代のLinuxのすべてのバージョンで実行できます。他のソフトウェアは必要ありません:

matiu@matiu-laptop:~$ mail -a doc.jpg [email protected]
Subject: testing

This is a test
EOT

入力が完了したら、ctrl + d。

20
matiu

mailx も役立ちます。 mailxのマニュアルページから:

-a file
     Attach the given file to the message.

とても簡単ですよね?

12
David Winslow

私の答えはメールに加えてbase64を必要としますが、いくつかのuuencodeバージョンは-mでbase64を行うこともできます、またはMIMEを忘れてプレーンなuuencode出力を使用することができます...

   [email protected]
   [email protected]
   SUBJECT="Auto emailed"
   MIME="application/x-gzip"  # Adjust this to the proper mime-type of file
   FILE=somefile.tar.gz
   ENCODING=base64  
   boundary="---my-unlikely-text-for-mime-boundary---$$--" 

   (cat <<EOF
    From: $FROM
    To: $REPORT_DEST
    Subject: $SUBJECT
    Date: $(date +"%a, %b %e %Y %T %z")
    Mime-Version: 1.0
    Content-Type: multipart/mixed; boundary="$boundary"
    Content-Disposition: inline

    --$boundary
    Content-Type: text/plain; charset=us-ascii
    Content-Disposition: inline

    This email has attached the file

    --$boundary
    Content-Type: $MIME;name="$FILE"
    Content-Disposition: attachment;filename="$FILE"
    Content-Transfer-Encoding: $ENCODING

    EOF
    base64 $FILE
    echo ""
    echo "--$boundary" ) | mail
11
njsf
mailx -a /path/to/file email@address

インタラクティブモードに移行し(「Subject:」と空行が表示されます)、件名を入力してから本文を入力し、ヒットします。 Ctrl+D (EOT)終了します。

7
autonymous

mpack -a -s「ねえ、これはあなたのレポートとして役立つでしょうか?」 -m 0 -c application/x-tar-gz survey_results.tar.gz [email protected]

mpackとmunpackは、metamailと連携してmailxを拡張し、htmlマークアップと添付ファイルが散らばっている最新の電子メールで使用できるようにします。

これらの4つのパッケージを一緒に使用すると、guiメールクライアントでできるすべての電子メールを処理できます。

4
Hugh Esco

Ubuntu 10.4を使用して、これがmuttソリューションの記述方法です。

echo | mutt -a myfile.Zip -- [email protected]

2
Antony Gibbs

以下は、Unix/Linuxインストール全体にわたる適切なソリューションであり、通常とは異なるプログラム機能に依存しません。これは、複数行のメッセージ本文、複数の添付ファイル、およびmailxの他のすべての典型的な機能をサポートします。

残念ながら、1行には収まりません。

#!/bin/ksh

# Get the date stamp for temporary files
DT_STAMP=`date +'%C%y%m%d%H%M%S'`

# Create a multi-line body
echo "here you put the message body
which can be split across multiple lines!
woohoo!
" > body-${DT_STAMP}.mail

# Add several attachments
uuencode File1.pdf File1.pdf >  attachments-${DT_STAMP}.mail
uuencode File2.pdf File2.pdf >> attachments-${DT_STAMP}.mail

# Put everything together and send it off!
cat body-${DT_STAMP}.mail attachments-${DT_STAMP}.mail > out-${DT_STAMP}.mail
mailx -s "here you put the message subject" [email protected] < out-${DT_STAMP}.mail

# Clean up temporary files
rm body-${DT_STAMP}.mail
rm attachments-${DT_STAMP}.mail
rm out-${DT_STAMP}.mail
1

ここではmuttやmailxを使用したり、メールが「-a」をサポートしていないと言っている人に多くの回答があります。

まず、mailutilsからのUbuntu 14.0.4メールはこれをサポートしています。

mail -A filename -s "subject" [email protected]

第二に、「man mail」コマンドを使用して「attach」を検索することにより、

1
mbrandeis

Linuxでは、

#FILE_TO_BE_ATTACHED = abc.gz

uuencode abc.gz abc.gz > abc.gz.enc # This is optional, but good to have
                                    # to prevent binary file corruption.
                                    # also it make sure to get original 
                                    # file on other system, w/o worry of endianness

# Sending Mail, multiple attachments, and multiple receivers.
echo "Body Part of Mail" | mailx -s "Subject Line" -a attachment1 -a abc.gz.enc "[email protected] [email protected]"

Uuencodeを使用した場合、メールの添付ファイルを受信すると、uudecodeが必要になります

uudecode abc.gz.enc

#これは、uuencodeの2番目の引数と同じ名前の元のファイルを生成します。

0
prashant

Mailxでできること:

mailx -s "My Subject"  -a ./mail_att.csv -S [email protected]  [email protected] < ./mail_body.txt

これは、私たちのGNU Linuxサーバーでうまく機能しましたが、残念ながら私の開発環境はMac OsXで、mailxの古いBSDバージョンしかありません。通常、私はCoreutilsを使用してMac BSDコマンドよりも優れたバージョンのUNIXコマンドを取得しますが、mailxはCoreutilsにはありません。

関係のないスレッド( https://serverfault.com/questions/196001/using-unix-mail-mailx-with-a-modern-mail-server-imap-instead-of -mbox-files )これは、Heirloom mailx OSXバイナリパッケージを http://www.tramm.li/iWiki/HeirloomNotes.html からダウンロードすることでした。上記のコマンド構文を処理できる、より機能的なmailxがあります。

(リンクまたはリンクの帰属が悪いことをおologiesびします。このサイトは初めてです。)

0
yokeho