Doing mail from the Command Line is not as hard as you may think.
To send an email from your computer just open Terminal and type the following command:
mail -s "Subject" email@example.com <<EOF
Replace “Subject” with the subject of the mail messages that you are sending. You’ll then replace “firstname.lastname@example.org” with the email address of the recipient of the message. Finally, to write your message, include the <<EOF, followed by an enter, then type your message using as many newline characters as needed. When you are ready to stop writing and send your message, type “EOF” followed by the enter key.
A 1 Line method would look like this:
echo 'Some Text of the Body!' | mail -s 'Subject!' email@example.com
(notice the use of single quotes those are used if you want punctuation in title or subject.)
This will cause OS X to relay the message to your ISP’s SMTP server, and send the message to the recipient that you specified.
If you get an Error like:
sendmail: fatal: chdir /Library/Server/Mail/Data/spool: No such file or directory
Then you have to do a little more work like this:
sudo mkdir -p /Library/Server/Mail/Data/spool sudo /usr/sbin/postfix set-permissions sudo /usr/sbin/postfix start
You didn’t get any mail still then now you will have to setup Google as your SMTP server?
Configure Postfix for Gmail SMTP
Edit file /etc/postfix/main.cf
sudo nano /etc/postfix/main.cf
relayhost = [smtp.gmail.com]:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_use_tls = yes
Generate sasl_password if not already exists
sudo nano /etc/postfix/sasl_passwd
and enter in the following:
Run the following commands
sudo chmod 600 /etc/postfix/sasl_passwd sudo postmap /etc/postfix/sasl_passwd sudo launchctl stop org.postfix.master sudo launchctl start org.postfix.master
I was trying to see if my port 25 was open so I used this command
(echo >/dev/tcp/localhost/25) &>/dev/null && echo "TCP port 25 opened" || echo "TCP port 25 closed"
A cool way to to see what ports are open with grep
sudo lsof -i -P | grep -i "listen"
Thats It enjoy what is built-in to your Mac!
edit: September 22, 2015
I forgot to tell you that you need to setup postfix to load automatically on boot so I added a file /System/Library/LaunchDaemons/org.postfix.master.plist file this file will load the postfix automatically.
so use nano to create a file with this command:
sudo nano /System/Library/LaunchDaemons/org.postfix.master.plist
copy the text below and paste into that file.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>org.postfix.master</string> <key>Program</key> <string>/usr/libexec/postfix/master</string> <key>ProgramArguments</key> <array> <string>master</string> <string>-e</string> <string>60</string> </array> <key>QueueDirectories</key> <array> <string>/var/spool/postfix/maildrop</string> </array> <key>AbandonProcessGroup</key> <true/> <key>OnDemand</key> <true/> <key>RunAtLoad</key> <true/> </dict> </plist>
Now I think it is working even on reboot.
To use this with XTension it is pretty easy also. In your attachments folder create a Handler with text like this:
--eMail Script on sendEmail(eSubject, eBody) set eRecipient to "firstname.lastname@example.org" write log "Email sent about: " & eBody set theCommand to "echo " & eBody & " | mail -s " & quoted form of eSubject & " " & eRecipient try do shell script theCommand on error msg number eNum write log "Sending Mail error: " & eNum & " " & msg end try end sendEmail
The results are that you are using the simple send like above 1 line with the echo of the Body and this one will take punctuation in the Subject and Body.