Comment envoyer un e-mail à partir d'une ligne de commande ou d'un script? Je veux pouvoir exécuter le script par programme en passant le récepteur et le message.
Comment envoyer un e-mail à partir d'une ligne de commande ou d'un script? Je veux pouvoir exécuter le script par programme en passant le récepteur et le message.
Réponses:
mail -s subject someone@example.com
tapez votre message, appuyez sur Ctrl+D
pour terminer
echo This will be the body of the email | mail -s "This is the Subject" destination@example.com
Il y a deux programmes que je connais qui vous permettront facilement de configurer votre Mac pour envoyer des e-mails à partir de la ligne de commande.
J'ai rédigé des HOWTO pour les deux:
Des deux, je suggère msmtp
.
La configuration est suffisamment compliquée pour que je ne sois pas sûr de devoir répliquer toutes les étapes ici, mais je mentionnerai que si vous utilisez Homebrew, vous pouvez installer msmtp en utilisant
brew install msmtp --with-macosx-keyring
Ensuite, le reste est juste une question de mise en place des fichiers de configuration associés
Le premier est /usr/local/etc/msmtprc
# Begin msmtprc
# Set default values for all following accounts.
defaults
tls on
logfile ~/.msmtp.log
# A first gmail address
account example@gmail.com
host smtp.gmail.com
port 587
protocol smtp
auth on
from example@gmail.com
user example@gmail.com
tls on
tls_starttls on
# this next line is crucial: you have to point to the correct security certificate for GMail.
# If this doesn't work, check the mstmp documentation
# at http://msmtp.sourceforge.net/documentation.html for help
#
# This next line should all be on one long line:
tls_trust_file /path/to/Thawte Roots/Thawte SSLWeb Server Roots/thawte Premium Server CA/Thawte Premium Server CA.pem
# Set a default account
# You need to set a default account for Mail
account default : example@gmail.com
# end msmtprc
Notez que la tls_trust_file
ligne doit pointer vers l'endroit où vous avez téléchargé et installé les certificats depuis https://www.thawte.com/roots/index.html .
J'ai mis le mien ~/Dropbox/Thawte Roots
pour que je puisse l'avoir sur tous mes Mac.
Ensuite, vous avez besoin d'un ~/.mailrc
fichier pour dire où se trouve le binaire msmtp. Si vous utilisez brew
ce sera /usr/local/bin/msmtp
donc le fichier ressemblerait à ceci:
set sendmail="/usr/local/bin/msmtp"
La dernière étape, mais cruciale, consiste à s'assurer que votre trousseau contient les informations exactement au format que msmtp attendra:
Je pense que cela couvre la plupart des détails. Voir http://www.tuaw.com/2010/05/04/msmtp-a-free-tool-to-send-email-from-terminal/ si vous voulez quelques détails supplémentaires.
example@gmail.com
à votre adresse e-mail Gmail ou Google Apps.
~/.msmtprc
La façon la plus simple d'envoyer du courrier consiste à utiliser une session telnet avec le serveur smtp de votre fournisseur / réseau. Après avoir contacté le serveur et après chaque commande, le serveur répondra s'il accepte la commande avec quelque chose comme "250 OK", ou sinon avec un message d'erreur.
Tous les détails peuvent être trouvés dans RFC2821 - Simple Mail Transfer Protocol, Google pour cela. Cette méthode de base est idéale pour tester pourquoi quelque chose ne va pas lors de l'envoi de courrier, mais je pense qu'il est assez compliqué de l'écrire en preuve complète.
Obtenez d'abord une interface de ligne de commande sur votre ordinateur, en démarrant Terminal. Continuez ensuite avec les commandes suivantes, l'une après l'autre.
Ouvrez une session telnet sur le port 25 du serveur smtp de votre fournisseur / réseau
telnet name_or_ip_of_smtp_server 25
dites bonjour plus le nom Internet de votre fournisseur / réseau, comme abc.com
EHLO name_of_your_network
une adresse from = return est nécessaire, les <et> font partie de la commande
MAIL FROM:<your_email_adress>
donner une ou plusieurs destinations, les <et> font partie de la commande
RCPT TO:<destination_email_address>
RCPT TO:<second_destination_email_address>
RCPT TO:<etc_destination_email_address>
dites au serveur que vous voulez commencer à envoyer des données
DATA
Maintenant, le serveur doit répondre, vous pouvez commencer à envoyer votre courrier et passer en mode données
your data
more data
etc
maintenant terminer les données avec un point comme seul caractère sur une ligne
.
le serveur revient en mode commande pour que vous puissiez quitter
QUIT
Cela a fonctionné pour moi, il a été écrit avec Lion à l'esprit mais fonctionne pour Mountain Lion. Btw cela utilise Gmail donc si vous n'êtes pas ...
Vous n'avez pas besoin de télécharger quoi que ce soit! (il suffit de configurer un compte gmail)
http://www.anujgakhar.com/2011/12/09/using-macosx-lion-command-line-mail-with-gmail-as-smtp/
Configurer Postfix pour Gmail SMTP Edit file /etc/postfix/main.cf
sudo vim /etc/postfix/main.cf
et ajoutez ci-dessous les hôtes de relais commentés: -
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
smtp_sasl_mechanism_filter = plain
Générer sasl_password s'il n'existe pas déjà
sudo vim /etc/postfix/sasl_passwd
et entrez les informations suivantes: -
[smtp.gmail.com]:587 username@gmail.com:password
Exécutez les commandes suivantes
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
Et vous avez terminé….
Maintenant, vous devriez pouvoir envoyer des e-mails depuis la ligne de commande, par exemple pour envoyer le contenu d'un répertoire sous forme d'arborescence à une adresse e-mail
tree /var/www/somefolder | mail -s "contents" your@yourdomain.com
mtcmail est une autre option: http://www.macupdate.com/app/mac/33505/mtcmail-cli .
[Ignorez ce texte supplémentaire. Ajouté parce que: le corps doit contenir au moins 30 caractères; vous avez entré 27.]
Comme il est basé sur Unix, vous pouvez utiliser la commande sendmail .