Is it possible to email attachments from the command line?
If possible, I'd like something as simple as:
mail -a myfile.txt -t [email protected] -s "Here's my file"
Is it possible to email attachments from the command line?
If possible, I'd like something as simple as:
mail -a myfile.txt -t [email protected] -s "Here's my file"
Of all the mail user agents in the Ubuntu repository, it appears that mutt is the command-line MUA that is blessed with Long Term Support.
According to the manual, you can do something exactly like:
except it won't go anywhere since one also needs a Mail Transfer Agent. Popular ones are:
and the only ones that Canonical seems to support are postfix (thanks for the correction Steve) and exim4.
One could also say that xdg-email is also a proper Ubuntu MUA, but it is a bare-bones front end which only executes your preferred MUA on your behalf.
If you'd like advice on which MTA might be suitable for your use, perhaps open another question here.
I had bad trouble with sending attachment files, too. When I sent an email without attachment, it was successful but was not with attachment. This problem was existent with
sendemail
,mutt
,mail
,mailx
,uuencode
commands.Fortunately, It was solved funnily. I use Gmail for sending email. You can configure your gmail for sending emails via commands in terminal as declared at http://www.linuxandlife.com/2013/01/send-email-from-linux-terminal.html .
You can send a text email using:
but you can't send same file as attachment as below:
or:
Finally, I understood that only this format could send an attachment:
Funnily, the difference is existence of the "echo" command.
Update: 201808
Seems that the
-a
option has been changed with Uppercase-A
for attachment now. The-a
seems to be for changing header according to docI found that the command and parameters have been changed recently.
If your want to send your attachments with this command:
The option
attachment
should be-A
which is CAPITALA
.You may want to send a file from the shell, but otherwise use Thunderbird.
In this case, try
thunderbird -remote ...
is useful - assuming thunderbird is usually running:The command opens a mail compose window of a running thunderbird instance.
The "From" address is your default address configured in thunderbird.
Also, the existing account settings are used, there is no separate setup needed.
For a mail adressed to
[email protected]
, with subject "S", body "B", and an attachment/some/absolute/file.txt
, the command isThere are two problems:
The attached file needs to be given by an absolute path, which is tedious in practice. That can be handeled by using
readlink -f
to resolve relative paths:Also, the command is to long. Use a shell script or shell function, with four arguments:
With this function, the command becomes readable:
will open a thunderbird "Write" window with the attachment, and From, To, Subject, and body text filled in. It can be edited before sending it.
heirloom-mailx
package in debian providesmailx
command to send mime attachments easily. following works for me;I wish to add another answer which is used to add body text along with the attachment. Cheers!!
My version of
mail
, BSD mail, does not seem to support attachments (it's not mentioned anywhere in the manpage).A hacky workaround is to send the attachment as uuencoded stream. Gmail will interpret this as two attachments, one called "noname" which is the uuencoded text and the other called "-" which carries the decoded version that can be opened by any program that recognizes the file type by its binary data. I don't know if this behavior is documented or applies for any other mail client, but if you don't want to install anything this is a quick hack.