Ejemplos de integraci贸n SMTP

Pr贸logo

Esta gu铆a proporciona ejemplos detallados de c贸mo integrarse con el servicio SMTP de Forward Email mediante diversos lenguajes de programaci贸n, frameworks y clientes de correo electr贸nico. Nuestro servicio SMTP est谩 dise帽ado para ser confiable, seguro y f谩cil de integrar con sus aplicaciones existentes.

C贸mo funciona el procesamiento SMTP del reenv铆o de correo electr贸nico

Antes de profundizar en los ejemplos de integraci贸n, es importante comprender c贸mo nuestro servicio SMTP procesa los correos electr贸nicos:

Cola de correo electr贸nico y sistema de reintentos

Cuando env铆a un correo electr贸nico a trav茅s de SMTP a nuestros servidores:

  1. Procesamiento inicial: El correo electr贸nico se valida, se analiza en busca de malware y se verifica con filtros de spam.
  2. Cola inteligente: Los correos electr贸nicos se colocan en un sofisticado sistema de colas para su entrega.
  3. Mecanismo de reintento inteligente: Si la entrega falla temporalmente, nuestro sistema:
  • Analiza la respuesta de error mediante nuestra funci贸n getBounceInfo.
  • Determina si el problema es temporal (p. ej., "int茅ntelo de nuevo m谩s tarde", "aplazado temporalmente") o permanente (p. ej., "usuario desconocido").
  • Para problemas temporales, se marca el correo electr贸nico para reintentarlo.
  • Para problemas permanentes, se genera una notificaci贸n de rebote.
  1. Periodo de reintento de 5 d铆as: Reintentamos la entrega durante un m谩ximo de 5 d铆as (similar a los est谩ndares de la industria como Postfix), lo que da tiempo a que los problemas temporales se resuelvan.
  2. Notificaciones de estado de entrega: Los remitentes reciben notificaciones sobre el estado de sus correos electr贸nicos (entregados, retrasados o rebotados).

Note

Tras una entrega exitosa, el contenido del correo electr贸nico SMTP saliente se redacta tras un periodo de retenci贸n configurable (30 d铆as por defecto) por motivos de seguridad y privacidad. Solo queda un mensaje de marcador de posici贸n que indica la entrega exitosa.

A prueba de manipulaciones para mayor confiabilidad

Nuestro sistema est谩 dise帽ado para manejar diversos casos extremos:

  • Si se detecta una lista negra, se volver谩 a intentar el env铆o autom谩ticamente.
  • Si hay problemas de red, se volver谩 a intentar la entrega.
  • Si el buz贸n del destinatario est谩 lleno, el sistema volver谩 a intentarlo m谩s tarde.
  • Si el servidor receptor no est谩 disponible temporalmente, seguiremos intent谩ndolo.

Este enfoque mejora significativamente las tasas de entrega manteniendo la privacidad y la seguridad.

Integraci贸n con Node.js

Usando Nodemailer

Nodemailer es un m贸dulo popular para enviar correos electr贸nicos desde aplicaciones Node.js.

const nodemailer = require('nodemailer');

// Create a transporter object
const transporter = nodemailer.createTransport({
  host: 'smtp.forwardemail.net',
  port: 465,
  secure: true, // Use TLS
  auth: {
    user: '[email protected]',
    pass: 'your-password'
  }
});

// Send mail with defined transport object
async function sendEmail() {
  try {
    const info = await transporter.sendMail({
      from: '"Your Name" <[email protected]>',
      to: '[email protected]',
      subject: 'Hello from Forward Email',
      text: 'Hello world! This is a test email sent using Nodemailer and Forward Email SMTP.',
      html: '<b>Hello world!</b> This is a test email sent using Nodemailer and Forward Email SMTP.'
    });

    console.log('Message sent: %s', info.messageId);
  } catch (error) {
    console.error('Error sending email:', error);
  }
}

sendEmail();

Usando Express.js

A continuaci贸n se explica c贸mo integrar Forward Email SMTP con una aplicaci贸n Express.js:

const express = require('express');
const nodemailer = require('nodemailer');
const app = express();
const port = 3000;

app.use(express.json());

// Configure email transporter
const transporter = nodemailer.createTransport({
  host: 'smtp.forwardemail.net',
  port: 465,
  secure: true,
  auth: {
    user: '[email protected]',
    pass: 'your-password'
  }
});

// API endpoint for sending emails
app.post('/send-email', async (req, res) => {
  const { to, subject, text, html } = req.body;

  try {
    const info = await transporter.sendMail({
      from: '"Your App" <[email protected]>',
      to,
      subject,
      text,
      html
    });

    res.status(200).json({
      success: true,
      messageId: info.messageId
    });
  } catch (error) {
    console.error('Error sending email:', error);
    res.status(500).json({
      success: false,
      error: error.message
    });
  }
});

app.listen(port, () => {
  console.log(`Server running at http://localhost:${port}`);
});

Integraci贸n de Python

Usando smtplib

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

# Email configuration
sender_email = "[email protected]"
receiver_email = "[email protected]"
password = "your-password"

# Create message
message = MIMEMultipart("alternative")
message["Subject"] = "Hello from Forward Email"
message["From"] = sender_email
message["To"] = receiver_email

# Create the plain-text and HTML version of your message
text = "Hello world! This is a test email sent using Python and Forward Email SMTP."
html = "<html><body><b>Hello world!</b> This is a test email sent using Python and Forward Email SMTP.</body></html>"

# Turn these into plain/html MIMEText objects
part1 = MIMEText(text, "plain")
part2 = MIMEText(html, "html")

# Add HTML/plain-text parts to MIMEMultipart message
message.attach(part1)
message.attach(part2)

# Send email
try:
    server = smtplib.SMTP_SSL("smtp.forwardemail.net", 465)
    server.login(sender_email, password)
    server.sendmail(sender_email, receiver_email, message.as_string())
    server.quit()
    print("Email sent successfully!")
except Exception as e:
    print(f"Error sending email: {e}")

Usando Django

Para aplicaciones Django, agregue lo siguiente a su settings.py:

# Email settings
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.forwardemail.net'
EMAIL_PORT = 465
EMAIL_USE_SSL = True
EMAIL_HOST_USER = '[email protected]'
EMAIL_HOST_PASSWORD = 'your-password'
DEFAULT_FROM_EMAIL = '[email protected]'

Luego env铆a correos electr贸nicos con tus opiniones:

from django.core.mail import send_mail

def send_email_view(request):
    send_mail(
        'Subject here',
        'Here is the message.',
        '[email protected]',
        ['[email protected]'],
        fail_silently=False,
        html_message='<b>Here is the HTML message.</b>'
    )
    return HttpResponse('Email sent!')

Integraci贸n PHP

Usando PHPMailer

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'vendor/autoload.php';

$mail = new PHPMailer(true);

try {
    // Server settings
    $mail->isSMTP();
    $mail->Host       = 'smtp.forwardemail.net';
    $mail->SMTPAuth   = true;
    $mail->Username   = '[email protected]';
    $mail->Password   = 'your-password';
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
    $mail->Port       = 465;

    // Recipients
    $mail->setFrom('[email protected]', 'Your Name');
    $mail->addAddress('[email protected]', 'Recipient Name');
    $mail->addReplyTo('[email protected]', 'Your Name');

    // Content
    $mail->isHTML(true);
    $mail->Subject = 'Hello from Forward Email';
    $mail->Body    = '<b>Hello world!</b> This is a test email sent using PHPMailer and Forward Email SMTP.';
    $mail->AltBody = 'Hello world! This is a test email sent using PHPMailer and Forward Email SMTP.';

    $mail->send();
    echo 'Message has been sent';
} catch (Exception $e) {
    echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}

Usando Laravel

Para aplicaciones Laravel, actualice su archivo .env:

MAIL_MAILER=smtp
MAIL_HOST=smtp.forwardemail.net
MAIL_PORT=465
[email protected]
MAIL_PASSWORD=your-password
MAIL_ENCRYPTION=ssl
[email protected]
MAIL_FROM_NAME="${APP_NAME}"

Luego env铆e correos electr贸nicos utilizando la fachada Mail de Laravel:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
use App\Mail\WelcomeEmail;

class EmailController extends Controller
{
    public function sendEmail()
    {
        Mail::to('[email protected]')->send(new WelcomeEmail());

        return 'Email sent successfully!';
    }
}

Integraci贸n de Ruby

Uso de Ruby Mail Gem

require 'mail'

Mail.defaults do
  delivery_method :smtp, {
    address: 'smtp.forwardemail.net',
    port: 465,
    domain: 'your-domain.com',
    user_name: '[email protected]',
    password: 'your-password',
    authentication: 'plain',
    enable_starttls_auto: true,
    ssl: true
  }
end

mail = Mail.new do
  from     '[email protected]'
  to       '[email protected]'
  subject  'Hello from Forward Email'

  text_part do
    body 'Hello world! This is a test email sent using Ruby Mail and Forward Email SMTP.'
  end

  html_part do
    content_type 'text/html; charset=UTF-8'
    body '<b>Hello world!</b> This is a test email sent using Ruby Mail and Forward Email SMTP.'
  end
end

mail.deliver!
puts "Email sent successfully!"

Integraci贸n con Java

Uso de la API de JavaMail

import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;

public class SendEmail {
    public static void main(String[] args) {
        // Sender's email and password
        final String username = "[email protected]";
        final String password = "your-password";

        // SMTP server properties
        Properties props = new Properties();
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.host", "smtp.forwardemail.net");
        props.put("mail.smtp.port", "465");
        props.put("mail.smtp.socketFactory.port", "465");
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

        // Create session with authenticator
        Session session = Session.getInstance(props,
            new javax.mail.Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(username, password);
                }
            });

        try {
            // Create message
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress(username));
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("[email protected]"));
            message.setSubject("Hello from Forward Email");

            // Create multipart message
            Multipart multipart = new MimeMultipart("alternative");

            // Text part
            BodyPart textPart = new MimeBodyPart();
            textPart.setText("Hello world! This is a test email sent using JavaMail and Forward Email SMTP.");

            // HTML part
            BodyPart htmlPart = new MimeBodyPart();
            htmlPart.setContent("<b>Hello world!</b> This is a test email sent using JavaMail and Forward Email SMTP.", "text/html");

            // Add parts to multipart
            multipart.addBodyPart(textPart);
            multipart.addBodyPart(htmlPart);

            // Set content
            message.setContent(multipart);

            // Send message
            Transport.send(message);

            System.out.println("Email sent successfully!");

        } catch (MessagingException e) {
            throw new RuntimeException(e);
        }
    }
}

Configuraci贸n del cliente de correo electr贸nico

MARCADOR DE TEMPERATURA 0 Thunderbird {MARCADOR DE TEMPERATURA 1

  1. Abra Thunderbird y vaya a Configuraci贸n de la cuenta.
  2. Haga clic en "Acciones de la cuenta" y seleccione "A帽adir cuenta de correo".
  3. Introduzca su nombre, direcci贸n de correo electr贸nico y contrase帽a.
  4. Haga clic en "Configuraci贸n manual" e introduzca la siguiente informaci贸n:
  1. Haga clic en "Probar" y luego en "Listo".

MARCADOR DE TEMPERATURA 0 Apple Mail {MARCADOR DE TEMPERATURA 1

  1. Abra Correo y vaya a Correo > Preferencias > Cuentas.
  2. Haga clic en el bot贸n "+" para agregar una nueva cuenta.
  3. Seleccione "Otra cuenta de correo" y haga clic en "Continuar".
  4. Ingrese su nombre, direcci贸n de correo electr贸nico y contrase帽a, y luego haga clic en "Iniciar sesi贸n".
  5. Si la configuraci贸n autom谩tica falla, ingrese los siguientes datos:
  1. Haga clic en "Iniciar sesi贸n" para completar la configuraci贸n.

Gmail (Enviar correo como)

  1. Abre Gmail y ve a Configuraci贸n > Cuentas e Importar.
  2. En "Enviar correo como", haz clic en "A帽adir otra direcci贸n de correo electr贸nico".
  3. Introduce tu nombre y direcci贸n de correo electr贸nico y haz clic en "Siguiente paso".
  4. Introduce los siguientes datos del servidor SMTP:
  • Servidor SMTP: smtp.forwardemail.net
  • Puerto: 465
  • Nombre de usuario: tu direcci贸n de correo electr贸nico completa
  • Contrase帽a: tu contrase帽a
  • Selecciona "Conexi贸n segura mediante SSL".
  1. Haz clic en "A帽adir cuenta" y verifica tu direcci贸n de correo electr贸nico.

Soluci贸n de problemas

Problemas comunes y soluciones

  1. Error de autenticaci贸n
  • Verifique su nombre de usuario (correo electr贸nico completo) y contrase帽a
  • Aseg煤rese de usar el puerto correcto (465 para SSL/TLS)
  • Compruebe si su cuenta tiene habilitado el acceso SMTP
  1. Tiempo de espera de conexi贸n
  • Verifique su conexi贸n a internet
  • Verifique que la configuraci贸n del firewall no est茅 bloqueando el tr谩fico SMTP
  • Intente usar un puerto diferente (587 con STARTTLS)
  1. Mensaje rechazado
  • Aseg煤rate de que tu direcci贸n de remitente coincida con tu correo electr贸nico autenticado.
  • Comprueba si tu IP est谩 en la lista negra.
  • Verifica que el contenido de tu mensaje no active los filtros de spam.
  1. Errores de TLS/SSL
  • Actualice su aplicaci贸n/biblioteca para que sea compatible con las versiones modernas de TLS
  • Aseg煤rese de que los certificados de CA de su sistema est茅n actualizados
  • Pruebe con TLS expl铆cito en lugar de TLS impl铆cito

Obtenci贸n de ayuda

Si encuentra problemas que no se abordan aqu铆, por favor:

  1. Consulta nuestro P谩gina de preguntas frecuentes para preguntas frecuentes.
  2. Consulta nuestro Entrada de blog sobre la entrega de correo electr贸nico para obtener informaci贸n detallada.
  3. Contacta con nuestro equipo de soporte en [email protected].

Recursos adicionales

Conclusi贸n

El servicio SMTP de Forward Email ofrece una forma confiable, segura y con privacidad para enviar correos electr贸nicos desde sus aplicaciones y clientes. Con nuestro sistema de colas inteligente, nuestro mecanismo de reintento de 5 d铆as y nuestras completas notificaciones de estado de entrega, puede estar seguro de que sus correos llegar谩n a su destino.

Para casos de uso m谩s avanzados o integraciones personalizadas, comun铆quese con nuestro equipo de soporte.