Ruby enviar correo - SMTP
SMTP (Simple Mail Transfer Protocol), es decir, Protocolo Simple de Transferencia de Correo, es un conjunto de reglas para transferir correo desde una dirección de origen a una dirección de destino, y controla la forma de retransmisión de los mensajes.
Ruby proporciona Net::SMTP para enviar correos, y ofrece dos métodos: new y start:
newEl método tiene dos parámetros:
- server namePor defecto es localhost
- port numberPor defecto es 25
startEl método tiene los siguientes parámetros:
- server- Dirección IP del servidor SMTP, por defecto localhost
- port- Número de puerto, por defecto 25
- domain- Dominio del remitente del correo, por defecto ENV["HOSTNAME"]
- account- Nombre de usuario, por defecto nil
- password- Contraseña del usuario, por defecto nil
- authtype- Tipo de autenticación, por defectocram_md5
El método de instanciación del objeto SMTP llama a sendmail, con los siguientes parámetros:
- source- Una cadena, un array o cualquier cosa que devuelva cada iterador en un momento dado.
- sender- Una cadena que aparece en el campo del formulario del correo electrónico.
- recipients- Una cadena o un array de cadenas que representan las direcciones de los destinatarios.
Ejemplo
A continuación se proporciona un sencillo script de Ruby para enviar correos:
Ejemplo
Usa Net::SMTP para conectarte al servidor SMTP en la máquina local y usa el método send_message para enviar el correo; los parámetros del método son el correo del remitente y el correo del destinatario.
Si no tienes un servidor SMTP ejecutándose en tu máquina local, puedes usar Net::SMTP para comunicarte con un servidor SMTP remoto. Si usas un servicio de correo web (como Hotmail o Yahoo Mail), tu proveedor de correo electrónico te proporcionará los detalles del servidor de correo saliente:
El código anterior se conectará al servidor de correo con host mail.your-domain.com y puerto 25. Si necesitas proporcionar nombre de usuario y contraseña, el código es el siguiente:
El ejemplo anterior se conectó al servidor de correo con host mail.your-domain.com y puerto 25 usando el nombre de usuario y la contraseña especificados.
Enviar correo HTML con Ruby
Net::SMTP también ofrece soporte para enviar correos en formato HTML.
Al enviar correos electrónicos, puedes configurar la versión MIME, el tipo de documento y el conjunto de caracteres para enviar correos en formato HTML.
Ejemplo
El siguiente ejemplo se utiliza para enviar un correo en formato HTML:
Ejemplo
Enviar correo con adjuntos
Si necesitas enviar un correo electrónico con contenido mixto, debes configurar Content-type como multipart/mixed. De esta manera puedes agregar contenido adjunto al correo.
Los archivos adjuntos deben, antes de la transmisión, utilizarpack("m")la función para convertir su contenido al formato base64.
Ejemplo
El siguiente ejemplo enviará un correo con el archivo adjunto /tmp/test.txt:
Ejemplo
Nota:Puedes especificar varias direcciones de envío, pero debes separarlas con comas.
Otras extensiones