sendmail send message and attachment use echo. sendmail implements Postfix’s compatibility interface and is present in almost all Unix-like operating systems, as mail transfer agent whose history goes back to the early 1980s.
How to sendmail echo message attachment
sendmail sends message over the Internet to a specific recipient. This can be done by running the
sendmail command on a Linux command line, and can also be used within a shell script.
sendmail: fatal: open /etc/postfix/main.cf: No such file or directory
Make sure sendmail is present on the Linux host with the command
which sendmail or
man sendmail. If sendmail is not found and no MTA like Postfix is installed, sendmail can be deployed as follows.
$ sudo apt install sendmail -y
sendmail in the command line
The following example shows a sendmail command to send a message from the command line with using the echo command.
$ echo -e "Subject:Test Mail using sendmail \nThis is a Test Message\n" | sendmail email@example.com
The next command sends an email with sender (From:) address.
$ /usr/sbin/sendmail firstname.lastname@example.org From: email@example.com Subject: Test Mail using sendmail This is a Test Message .
Enter period (.) ends the editor and the e-mail will by submit.
Example email is interactively created by each line, a message with the subject delivered to inbox of firstname.lastname@example.org.
Change the recipient accordingly, make sure sendmail is present on the host and the host is allowed to send email.
Further, sendmail robs the pipeline instruction, thereby making it possible to send a message using a text file.
$ /usr/sbin/sendmail < message.txt -t -i email@example.com
Example with the content of the message.txt file.
From: firstname.lastname@example.org Subject: Test Mail using sendmail This is a Test Message
The sendmail -i option handles reading the message from standard input without a period (.) at the end of a line.
The -t option extracts the recipients from the message headers and adds them to all recipients specified on the command line.
How to send message with attachment use sendmail
sending an email directly from a host, in this example sendmail is used to send a file as an attachment.
Here is to filter out the delivery attempts rejected as SPAM “blocked using” on a Postfix MTA, and to send them as archives.txt.gz, for this purpose.
Postfix must be configured on the host, it can also be another local MTA, or an external SMTP-Relay is used.
#!/bin/bash cat /var/log/maillog* | grep 'blocked using' | grep 'middleton.tld' > /tmp/blocked.txt gzip -f /tmp/blocked.txt ( echo "to: email@example.com" echo "from: no_reply@$HOSTNAME" echo "subject: Report of messages blocked by $HOSTNAME" echo "mime-version: 1.0" echo "content-type: multipart/related; boundary=messageBoundary" echo echo "--messageBoundary" echo "content-type: text/plain" echo echo "Please find the document attached." echo echo "--messageBoundary" echo "content-type: text/plain; name=blocked.txt.gz" echo "content-transfer-encoding: base64" echo openssl base64 < /tmp/blocked.txt.gz) | sendmail -t -i
The -t option extracts the recipients from the message header.
-i option don´t treat a . character as the end of input.
This example shows how to use sendmail to send an email with attachment directly from the Linux shell.
By changing the individual lines, many other applications can come into play, whereby the Base64 encoding is done by openssl, the echo statements performs the MIME message body.