この質問にはすでに答えがあります。
私はLinuxシェルを実行しているサーバーにいます。 簡単なファイルを受信者に郵送する必要があります。 これを行う方法、優先的には郵便物コマンド?
更新:代わりにmuttを使って、良い解決策を得てください。
$ echo | mutt -a syslogs.tar.gz admin@domain.org
uuencodeを使用した例
uuencode surfing.jpeg surfing.jpeg | mail sylvia@home.com
と参考記事:
http://www.shelldorado.com/articles/mailattachments.html
mail
私が試した最新のLinuxのすべてのバージョンでそれを行うことができます。他のソフトウェアは必要ありません。
matiu@matiu-laptop:~$ mail -a doc.jpg someone@somewhere.com
Subject: testing
This is a test
EOT
入力が終わったらCtrl + Dキーを押します。
mail
これをサポートしていますが、確かに「普通の」とは言えませんmail
"それどころか、いくつかの近代化されたバージョンまたはバリアントどのプラットフォームでどのバージョンを使用しているかを指定すると役に立ちます。 - tripleee
mailx同様に役立つかもしれません。 mailxのmanページから:
-a file
Attach the given file to the message.
簡単ですよね。
-a
手段Specify additional header fields on the command line such as "X-Loop: foo@bar" etc. You have to use quotes if the string contains spaces. This argument may be specified more than once, the headers will then be concatenated.
- Janus Troelsenmailx
サポートしていません-a
(CentOSのmailx-8.1.1-44.2.2パッケージ) - einpoklum-a
どちらか(OS X 10.7.5) - Stefan Schmidt
私の答えはmailに加えてbase64が必要ですが、いくつかのバージョンのuuencodeも-mでbase64を実行することができます。あるいはmimeを忘れてプレーンなuuencode出力を使うこともできます。
FROM=me@mydomain.com
TO=someone@mydomain.com
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
sendmail -t
代わりに。 - Kyle MacFarlanemail
MIME入力を選択しませんが、に切り替えることができます| sendmail -oi -t
その場合、パイプラインの終わりに。その機能を必要としないmail
ラッパーはこの時点でもうあなたに提供しません。 - tripleeeecho "--$boundary--"
最後の閉じ括弧としてこれをマークするために、終わりに2つのダッシュがある閉じ括弧の前。 - tripleee
mailx -a /path/to/file email@address
対話モードに入り( "Subject:"とそれから空白行が表示されます)、件名を入力してから本文を入力してヒットします。Ctrl+D(EOT)を終了します。
mailx: illegal option -- a
- isomorphismesmailx
GNU coreutilsの一部ではありません。あなたはおそらくのバージョンを見つけることができますmailx
この使い方をサポートしているOSXの場合、リンクがない場合、これはまったく役に立ちません。複数のバージョンがあり、その多くはこの使用法をサポートしていません。 - tripleee
mpack -a -s「ねえ、これがあなたの報告になるでしょうか」 -m 0 -cアプリケーション/ x-tar-gz survey_results.tar.gz hesco@example.net
mpackとmunpackは、mailxを拡張するためにメタメールと一緒に働きます。 また、HTMLマークアップと添付ファイルが散りばめられた最新の電子メールでも便利です。
一緒に取られるこれらの4つのパッケージはあなたが扱うことを可能にするでしょう あなたがguiメールクライアントに入れることができるどんな電子メールでも。
ubuntu 10.4を使用して、これがmuttソリューションの書き方です。
echo | mutt -a myfile.zip -- admin@domain.org
mutt
自作発の - Stefan Schmidt
ここにはmuttやmailxを使った答えがたくさんありますし、mailが "-a"をサポートしていないという人もいます。
まず、mailutilsからのUbuntu 14.0.4メールはこれをサポートします。
mail -Aファイル名-s "subject" email@example.com
次に、「man mail」コマンドを使用して「attach」を検索することでわかりました。
以下はUnix / Linuxをインストールする際のまともな解決策であり、これは異常なプログラム機能に依存しません。これは、複数行のメッセージ本文、複数の添付ファイル、および他のすべての一般的な機能をサポートします。mailx
。
残念ながら、それは一行に収まりません。
#!/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" nobody@test-address.com < out-${DT_STAMP}.mail
# Clean up temporary files
rm body-${DT_STAMP}.mail
rm attachments-${DT_STAMP}.mail
rm out-${DT_STAMP}.mail
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 "youremail@domain.com anotheremail@domain.com"
メールの添付ファイルを受信したときに、uuencodeを使用したことがある場合は、uudecodeが必要です。
uudecode abc.gz.enc
#これは、uuencodeの2番目の引数と同じ名前のオリジナルのファイルを生成します。
mailx
サポートする-a
MIME添付ファイルを含めるために、別にする必要は全くありません。uuencode
それら。添付すると、適切なコンテンツ転送エンコーディングでコンテンツがラップされます。base64
必要ならば - これは事実ですもっとポータブルで堅牢uuencode
、そして明らかにもっともっと使える。 - tripleee
mailxでは、次のことができます。
mailx -s "My Subject" -a ./mail_att.csv -S from=noreply@foo.com recipient@bar.com < ./mail_body.txt
これは私たちのGNU Linuxサーバではうまく機能しましたが、残念ながら私の開発環境はMac OS Xであり、これには古いBSDバージョンのmailxしかありません。通常、私はCore BSDよりも良いバージョンのunixコマンドを取得するためにCoreutilsを使いますが、mailxはCoreutilsにはありません。
無関係のスレッドでnotpeterによる解決策を見つけた((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を持っています。
(不十分なクロスリンクまたは帰属をお詫び申し上げます、私はこのサイトに初めて来ました。)
私が使うMailutilsにそして紛らわしい部分はファイルを添付するためにあなたは大文字のAパラメータを使う必要があるということです。以下は一例です。
echo 'here you put the message body' | mail -A syslogs.tar.gz admin@domain.org
あなたのメールコマンドがmailutilsからのものであるかどうか知りたいのならば、単に "mail -V"を実行してください。
root@your-server:~$ mail -V
mail (GNU Mailutils) 2.99.98
Copyright (C) 2010 Free Software Foundation, inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
mutt
それはうまくそして合理的に移植可能です。 - tripleee