KALF Computertechniek

email verzenden vanaf de commandoregel (cli)

heirloom-mailx email clientBen je lekker met de commandoregel aan de gang  of werk je op een headless-server, en moet er opeens een email, met of zonder bijlage verzonden worden.
In het eerste geval is het omslachtig om eerst een emailclient op te starten en in het tweede geval is deze vaak  niet eens geinstalleerd!
Natuurlijk kan het zich ook voordoen dat vanuit de Cinnamon filemanager Nemo (of Nautilus voor Gnome) een bestandje de electronische snelweg opgestuurd moet worden. Heirloom-Mailx (voorheen "Nail" schiet in alle gevallen tehulp.

Allereerst moet het wel geinstalleerd zijn, zo niet, dan installeren via:

sudo apt-get install heirloom-mailx

wat vervolgens kortweg als "mail"of "mailx" via de cli of een script gestart kan worden.
Om het te gebruiken voor b.v. GMail dient er een ~/.mailrc configuratie-bestand aangemaakt te worden als:

#eventueel extra settings in ~/nailrc
#set NAIL_EXTRA_RC=~/.nailrc
#vanouds werkte ik met "nail" en heb daartoe ook een alias aangemaakt: alias nail='heirloom-mailx'
set editor=/usr/bin/nano
#
set from="naam@domein.nl"
set smtp=smtp.gmail.com:587
set smtp-use-starttls
set smtp-auth-user=naam@gmail.com
set ssl-verify=strict
set smtp-auth-password=wachtwoord
set askatend
set askbcc
#
#IMAP instellingen
#
set folder=imaps://naam@imap.gmail.com/INBOX
set imap=imap.gmail.com:993
#set record=+Sent         #niet gebruiken: geeft een 'dead-letter' error
set from="naam@domein (alias naam)"
set imap-use-starttls
set imap-auth-user=naam@gmail.com
set imap-auth-password="wachtwoord"
#
#
alias jan jan-naam@domein.nl  # gebruik afgekorte namen

email per cli verzenden en/of lezen:

Een email verzenden gaat met de volgende syntax:

nail -a bestandsnaam -s 'Bericht aan de ontvanger' naam@domein.nl
en een email lezen kan via:
mail

voer daarna het wachtwoord van de email-account in.

nemo-action send mail

Gebruik Mail in combinatie met Zenity om een Nemo/Nautilus actie aan te creëren, welke met de rechter muisknop
opgeroepen kan worden. Maak daartoe het bestand "send-by-gmail.nemo_action" aan in ~/.local/share/nemo/actions:

[Nemo Action]
Name=Send by Gmail
Name[nl]=Verzenden via Gmail
Exec=<send-gmail.sh %f>
Selection=s
Extensions=nodirs;
Dependencies=zenity;mailx;
Separator=,

in dezelfde map het aan te roepen scriptbestand: "send-gmail.sh"

#!/bin/bash
# send-gmail.sh plaatsen in  ~/.local/share/nemo/actions/
#voor nemo i.c.m. ~/.local/share/nemo/actions/send-by-mail.nemo_action
#mailaccout gegevens in mailrc bestand.
#2015©CopyLeft frankkalf.nl
#
function getOnderwerp {
Onderwerp=`zenity --title="Zend Gmail" --entry --text="Onderwerp:"`
   if [ $? == 1 ]; then
      exit
   fi
   if [ `echo ${#Onderwerp}` -lt 3 ]; then
      zenity --title="Zend Gmail" --question --text="Geen onderwerp opggeven.\n\nAlsnog onderwerp opgeven!" --ok-label="Ja" --cancel-label="Nee"
         if [ $? == 1 ]; then
            zenity --title="Zend Gmail" --info --text="Exit. Geen onderwerp opgegeven."
            exit
         else
            getOnderwerp
         fi
   fi
}

function getBericht {
Bericht=`zenity --title="Zend Gmail" --entry --text="Type emailbericht:"`
   if [ $? == 1 ]; then
      exit
   fi
   if [ `echo ${#Bericht}` -lt 5 ]; then
      zenity --title="Zend Gmail" --question --text="Geen emailbericht ingegeven.\n\nAlsnog bericht invoeren!" --ok-label="Ja" --cancel-label="Nee"
         if [ $? == 1 ]; then
            zenity --title="Zend Gmail" --info --text="Exit. Geen bericht ingevoerd."
            exit
         else
            getBericht
         fi
   fi
}

function getOntvanger {
TO=`zenity --title="Zend Gmail" --entry --text="Type email geadresseerde:"`
   if [ $? == 1 ]; then
      exit
   fi
   if [ `echo ${#TO}` -lt 10 ]; then
      zenity --title="Zend Gmail" --question --text="Onvolledig of geen adres opeggeven.\n\nAlsnog adres invoeren!" --ok-label="Ja" --cancel-label="Nee"
         if [ $? == 1 ]; then
            zenity --title="Zend Gmail" --info --text="Exit. Geen geadresserde opgegeven."
            exit
         else
            getOntvanger
         fi
   fi
}

   if [ $# -lt 1 ]; then
      zenity --title="Zend Gmail" --info --text="Usage:\n\tsend-gmail.sh [path/filename]\n\nNee file specified. Exiting."
      exit
   fi

FILE1=`zenity --title="Zend Gmail" --entry --entry-text=$1 --text="Geef pad en bestandsnaam in van bijlage:"`
   if [ $? == 1 ]; then
      exit
   fi
   if [ -f $1 ]; then
      FILE=$FILE1
   fi
   if [ -z $1 ]; then
      zenity --title="Zend Gmail" --info --text="Exit. Geen bestand opgegeven."
      exit
   fi

getOnderwerp
getBericht
getOntvanger

echo ${Bericht} | mailx -s "$Onderwerp" -a $FILE $TO | zenity --progress --text="bestand wordt verzonden naar" --percentage=0 --auto-close
exit 0

mutt client

Mutt ncurses emailclientEmail zenden en lezen kan ook nog met ondesteuning van MUTT's ncurses programma.

Mutt kan als imap en als pop3 client gebruikt worden en in die hoedanigheid de amail berichten
lokaal opslaan.

sudo apt-get install mutt

Ook nu dient er een configuratiebestand aangemaakt te worden: ~/.muttrc

#push V
# Local Folders --------------------------------
set header_cache = ~/.mutt/cache/headers
set message_cachedir = ~/.mutt/cache/bodies
set certificate_file = ~/.mutt/
unset signature #= ~/.mutt/signature
set mailcap_path = ~/.mutt/.mailcap
set from = "naam@gmail.com"
set realname = "uw naam"
set imap_user = "naam@gmail.com"
set imap_pass = "wachtwoord"
#REMOTE GMAIL FOLDERS
set folder = "imaps://imap.gmail.com:993"
set spoolfile = "+INBOX"
set postponed ="+[Google Mail]/Drafts"
set trash = "+[Google Mail]/Trash"
#set any_label = "+[Google Mail]/any_label"
# LOCAL FOLDERS FOR CACHED HEADERS AND CERTIFICATES
set certificate_file =~/.mutt/certificates
# SMTP SETTINGS
set smtp_url = "smtp://naam@smtp.gmail.com:587/"
set smtp_pass = "wachtwoord"
# SECURING
set move = no  #Stop asking to "move read messages to mbox"!
set imap_keepalive = 900
alias jan jan@domein.nl
.
Drucken