Envoi d'e-mails avec Ruby - SMTP
SMTP (Simple Mail Transfer Protocol) est un ensemble de règles pour transmettre du courrier d'une adresse source à une adresse de destination, et il contrôle la façon dont les messages sont relayés.
Ruby fournit Net::SMTP pour envoyer des e-mails, et fournit deux méthodes : new et start :
newLa méthode a deux paramètres :
- nom du serveurValeur par défaut : localhost
- numéro de portValeur par défaut : 25
startLa méthode a les paramètres suivants :
- server- IP du serveur SMTP, par défaut localhost
- port- Numéro de port, par défaut 25
- domain- Domaine de l'expéditeur, par défaut ENV["HOSTNAME"]
- account- Nom d'utilisateur, par défaut nil
- password- Mot de passe de l'utilisateur, par défaut nil
- authtype- Type d'authentification, par défautcram_md5
La méthode d'instance de l'objet SMTP appelle sendmail, avec les paramètres suivants :
- source- Une chaîne, un tableau, ou tout ce qui est renvoyé par l'itérateur each à un moment donné.
- sender- Une chaîne qui apparaît dans le champ de formulaire de l'e-mail.
- recipients- Une chaîne ou un tableau de chaînes représentant l'adresse du destinataire.
Exemple
Ce qui suit fournit un simple script Ruby pour envoyer un e-mail :
Exemple
Utilisez Net::SMTP pour vous connecter au serveur SMTP sur la machine locale, et utilisez la méthode send_message pour envoyer l'e-mail. Les paramètres de la méthode sont l'e-mail de l'expéditeur et l'e-mail du destinataire.
Si vous n'avez pas de serveur SMTP en cours d'exécution sur votre machine locale, vous pouvez utiliser Net::SMTP pour communiquer avec un serveur SMTP distant. Si vous utilisez des services de webmail (tels que Hotmail ou Yahoo Mail), votre fournisseur de messagerie vous fournira les détails du serveur de messagerie sortant :
Le code ci-dessus se connectera au serveur de messagerie avec l'hôte mail.your-domain.com et le port 25. Si vous devez renseigner un nom d'utilisateur et un mot de passe, le code est le suivant :
L'exemple ci-dessus utilise le nom d'utilisateur et le mot de passe spécifiés pour se connecter au serveur de messagerie avec l'hôte mail.your-domain.com et le port 25.
Envoi d'e-mails HTML avec Ruby
Net::SMTP prend également en charge l'envoi d'e-mails au format HTML.
Lors de l'envoi d'un e-mail, vous pouvez définir la version MIME, le type de document et le jeu de caractères pour envoyer un e-mail au format HTML.
Exemple
L'exemple suivant est utilisé pour envoyer un e-mail au format HTML :
Exemple
Envoi d'e-mails avec pièces jointes
Si vous devez envoyer un e-mail avec un contenu mixte, vous devez définir Content-type sur multipart/mixed. Ainsi, vous pouvez ajouter le contenu d'une pièce jointe à l'e-mail.
Avant la transmission, la pièce jointe doit utiliser la fonctionpack("m")pour convertir son contenu au format base64.
Exemple
L'exemple suivant enverra un e-mail avec la pièce jointe /tmp/test.txt :
Exemple
Remarque :Vous pouvez spécifier plusieurs adresses de destinataires, mais elles doivent être séparées par des virgules.
Autres extensions