Möchte per Script eine Mail versenden, steht man oftmals vor dem Problem, daß kein passendes Mailer-Tool installiert ist. Viele der verfügbaren Werkzeuge sind entweder zu groß oder haben einen Konfigurations-Overhead. Eine schlanke Alternative, die oftmals bereits zum Betriebsystem gehört ist CURL.

CURL kann auch Mails versenden

CURL wird meistens zum Download von Daten oder zum Aufruf von Remote Scripts verwendet. CURL kann jedoch eine Menge mehr, unter Anderem auch Mails per SMTP versenden. Das folgende Script zeigt wie es funktioniert:

#!/bin/bash

# Send mail
#
mail='From: "Backup iMac2" <backup@marketmix.com>
To: <notify@marketmix.com>
Subject: iMac2: Backup Dropbox

Backup finished!
'

echo "$mail" | curl -s \
  --url 'smtps://mail.marketmix.com:465' --ssl-reqd \
  --mail-from 'backup@marketmix.com' \
  --mail-rcpt 'notify@marketmix.com' \
  --user 'notify@marketmix.com:MY-PASSWORD' \
  --upload-file -

Das schöne an dieser Lösung: Es werden keine externen Konfigurationsdateien benötigt und CURL gibt es auf allen Plattformen: macOS, Linux und Windows. Hier die CURL-Parameter im Detail:

  • Variable ‘mail’: Enthält die komplette Mail in einem mehrzeiligen String. Wichtig: Am Ende steht ein Hochkomma.
  • –url: Die URL des SMTP-Servers mit vorangestelltem smtps Protokoll.
  • –ssl-req: Es wird SSL verwendet.
  • –mail-rcpt: Die Adresse des Empfängers.
  • –user: Der SMTP User und dessen Passwort durch Doppelpunkt getrennt.
  • –upload-file: Die Mail selbst. Der leere Eintrag (Minus-Zeichen) indiziert, daß CURL die Daten  über Pipe (‘|’) bekommt.