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:
- Procesamiento inicial: El correo electr贸nico se valida, se analiza en busca de malware y se verifica con filtros de spam.
- Cola inteligente: Los correos electr贸nicos se colocan en un sofisticado sistema de colas para su entrega.
- 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.
- 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.
- 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
- Abra Thunderbird y vaya a Configuraci贸n de la cuenta.
- Haga clic en "Acciones de la cuenta" y seleccione "A帽adir cuenta de correo".
- Introduzca su nombre, direcci贸n de correo electr贸nico y contrase帽a.
- Haga clic en "Configuraci贸n manual" e introduzca la siguiente informaci贸n:
- Servidor de entrada:
- IMAP: imap.forwardemail.net, Puerto: 993, SSL/TLS
- POP3: pop3.forwardemail.net, Puerto: 995, SSL/TLS
- Servidor de salida (SMTP): smtp.forwardemail.net, Puerto: 465, SSL/TLS
- Autenticaci贸n: Contrase帽a normal
- Nombre de usuario: su direcci贸n de correo electr贸nico completa.
- Haga clic en "Probar" y luego en "Listo".
MARCADOR DE TEMPERATURA 0 Apple Mail {MARCADOR DE TEMPERATURA 1
- Abra Correo y vaya a Correo > Preferencias > Cuentas.
- Haga clic en el bot贸n "+" para agregar una nueva cuenta.
- Seleccione "Otra cuenta de correo" y haga clic en "Continuar".
- Ingrese su nombre, direcci贸n de correo electr贸nico y contrase帽a, y luego haga clic en "Iniciar sesi贸n".
- Si la configuraci贸n autom谩tica falla, ingrese los siguientes datos:
- Servidor de correo entrante: imap.forwardemail.net (o pop3.forwardemail.net para POP3).
- Servidor de correo saliente: smtp.forwardemail.net.
- Nombre de usuario: su direcci贸n de correo electr贸nico completa.
- Contrase帽a: su contrase帽a.
- Haga clic en "Iniciar sesi贸n" para completar la configuraci贸n.
Gmail (Enviar correo como)
- Abre Gmail y ve a Configuraci贸n > Cuentas e Importar.
- En "Enviar correo como", haz clic en "A帽adir otra direcci贸n de correo electr贸nico".
- Introduce tu nombre y direcci贸n de correo electr贸nico y haz clic en "Siguiente paso".
- 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".
- Haz clic en "A帽adir cuenta" y verifica tu direcci贸n de correo electr贸nico.
Soluci贸n de problemas
Problemas comunes y soluciones
- 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
- 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)
- 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.
- 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:
- Consulta nuestro P谩gina de preguntas frecuentes para preguntas frecuentes.
- Consulta nuestro Entrada de blog sobre la entrega de correo electr贸nico para obtener informaci贸n detallada.
- Contacta con nuestro equipo de soporte en [email protected].
Recursos adicionales
- Documentaci贸n de reenv铆o de correo electr贸nico
- L铆mites y configuraci贸n del servidor SMTP
- Gu铆a de mejores pr谩cticas de correo electr贸nico
- Pr谩cticas de seguridad
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.