Приклади інтеграції SMTP
Передмова
Цей посібник показує, як інтегруватися з SMTP-сервісом Forward Email за допомогою різних мов програмування, фреймворків та клієнтів електронної пошти.
Як працює обробка SMTP у Forward Email
Наш SMTP-сервіс обробляє електронні листи так:
Черга електронної пошти та система повторних спроб
Коли ви надсилаєте лист через SMTP на наші сервери:
- Початкова обробка: Лист перевіряється, сканується на наявність шкідливого ПЗ та проходить фільтри спаму
- Черга: Наша система розміщує листи в черзі доставки
- Механізм повторних спроб: Якщо доставка тимчасово не вдається, наша система:
- Аналізує відповідь про помилку за допомогою функції
getBounceInfo - Визначає, чи є проблема тимчасовою (наприклад, "спробуйте пізніше", "тимчасово відкладено") або постійною (наприклад, "користувач не знайдений")
- Для тимчасових проблем позначає лист для повторної спроби
- Для постійних проблем генерує повідомлення про відмову доставки
- Аналізує відповідь про помилку за допомогою функції
- Період повторних спроб 5 днів: Ми повторюємо спроби доставки до 5 днів (аналогічно галузевим стандартам, як Postfix), даючи час для вирішення тимчасових проблем
- Повідомлення про статус доставки: Відправники отримують сповіщення про статус своїх листів (доставлено, затримано або відхилено)
Note
Після успішної доставки вміст вихідних SMTP-листів редагується після налаштовуваного періоду зберігання (за замовчуванням 30 днів) для безпеки та конфіденційності. Залишається лише повідомлення-заповнювач, що вказує на успішну доставку.
Захищено від помилок для надійності
Наша система обробляє такі крайні випадки:
- Якщо виявлено блоклист, лист автоматично буде повторно надіслано
- Якщо виникають проблеми з мережею, доставка буде повторена
- Якщо поштовий ящик отримувача переповнений, система спробує пізніше
- Якщо сервер отримувача тимчасово недоступний, ми продовжимо спроби
Такий підхід покращує показники доставки, зберігаючи конфіденційність та безпеку.
Інтеграція Node.js
Використання Nodemailer
Nodemailer — популярний модуль для надсилання електронних листів з додатків Node.js.
const nodemailer = require('nodemailer');
// Створення об'єкта транспорту
const transporter = nodemailer.createTransport({
host: 'smtp.forwardemail.studio',
port: 465,
secure: true, // Використовувати TLS
auth: {
user: 'your-username@your-domain.com',
pass: 'your-password'
}
});
// Надіслати лист за допомогою визначеного об'єкта транспорту
async function sendEmail() {
try {
const info = await transporter.sendMail({
from: '"Ваше ім’я" <your-username@your-domain.com>',
to: 'recipient@example.com',
subject: 'Привіт від Forward Email',
text: 'Привіт, світ! Це тестовий лист, надісланий за допомогою Nodemailer та Forward Email SMTP.',
html: '<b>Привіт, світ!</b> Це тестовий лист, надісланий за допомогою Nodemailer та Forward Email SMTP.'
});
console.log('Повідомлення надіслано: %s', info.messageId);
} catch (error) {
console.error('Помилка надсилання листа:', error);
}
}
sendEmail();
Використання Express.js
Ось як інтегрувати Forward Email SMTP з додатком Express.js:
const express = require('express');
const nodemailer = require('nodemailer');
const app = express();
const port = 3000;
app.use(express.json());
// Налаштування транспорту для електронної пошти
const transporter = nodemailer.createTransport({
host: 'smtp.forwardemail.studio',
port: 465,
secure: true,
auth: {
user: 'your-username@your-domain.com',
pass: 'your-password'
}
});
// API-ендпоінт для відправки листів
app.post('/send-email', async (req, res) => {
const { to, subject, text, html } = req.body;
try {
const info = await transporter.sendMail({
from: '"Your App" <your-username@your-domain.com>',
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}`);
});
Інтеграція Python
Використання smtplib
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
# Налаштування електронної пошти
sender_email = "your-username@your-domain.com"
receiver_email = "recipient@example.com"
password = "your-password"
# Створення повідомлення
message = MIMEMultipart("alternative")
message["Subject"] = "Привіт від Forward Email"
message["From"] = sender_email
message["To"] = receiver_email
# Створення текстової та HTML версії повідомлення
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>"
# Перетворення у MIMEText об'єкти plain/html
part1 = MIMEText(text, "plain")
part2 = MIMEText(html, "html")
# Додавання HTML/текстових частин до MIMEMultipart повідомлення
message.attach(part1)
message.attach(part2)
# Відправка листа
try:
server = smtplib.SMTP_SSL("smtp.forwardemail.studio", 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}")
Використання Django
Для додатків Django додайте наступне у ваш settings.py:
# Налаштування електронної пошти
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.forwardemail.studio'
EMAIL_PORT = 465
EMAIL_USE_SSL = True
EMAIL_HOST_USER = 'your-username@your-domain.com'
EMAIL_HOST_PASSWORD = 'your-password'
DEFAULT_FROM_EMAIL = 'your-username@your-domain.com'
Потім відправляйте листи у ваших views:
from django.core.mail import send_mail
def send_email_view(request):
send_mail(
'Тема листа',
'Ось повідомлення.',
'from@your-domain.com',
['to@example.com'],
fail_silently=False,
html_message='<b>Ось HTML повідомлення.</b>'
)
return HttpResponse('Лист надіслано!')
Інтеграція PHP
Використання PHPMailer
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
$mail = new PHPMailer(true);
try {
// Налаштування сервера
$mail->isSMTP();
$mail->Host = 'smtp.forwardemail.studio';
$mail->SMTPAuth = true;
$mail->Username = 'your-username@your-domain.com';
$mail->Password = 'your-password';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->Port = 465;
// Одержувачі
$mail->setFrom('your-username@your-domain.com', 'Your Name');
$mail->addAddress('recipient@example.com', 'Recipient Name');
$mail->addReplyTo('your-username@your-domain.com', 'Your Name');
// Вміст
$mail->isHTML(true);
$mail->Subject = 'Привіт від 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 'Повідомлення надіслано';
} catch (Exception $e) {
echo "Повідомлення не може бути надіслано. Помилка Mailer: {$mail->ErrorInfo}";
}
Використання Laravel
Для додатків Laravel оновіть ваш файл .env:
MAIL_MAILER=smtp
MAIL_HOST=smtp.forwardemail.studio
MAIL_PORT=465
MAIL_USERNAME=your-username@your-domain.com
MAIL_PASSWORD=your-password
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=your-username@your-domain.com
MAIL_FROM_NAME="${APP_NAME}"
Потім надсилайте листи, використовуючи фасад Mail у 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('recipient@example.com')->send(new WelcomeEmail());
return 'Лист успішно надіслано!';
}
}
Інтеграція Ruby
Використання Ruby Mail Gem
require 'mail'
Mail.defaults do
delivery_method :smtp, {
address: 'smtp.forwardemail.studio',
port: 465,
domain: 'your-domain.com',
user_name: 'your-username@your-domain.com',
password: 'your-password',
authentication: 'plain',
enable_starttls_auto: true,
ssl: true
}
end
mail = Mail.new do
from 'your-username@your-domain.com'
to 'recipient@example.com'
subject 'Привіт від Forward Email'
text_part do
body 'Привіт світ! Це тестовий лист, надісланий за допомогою Ruby Mail та Forward Email SMTP.'
end
html_part do
content_type 'text/html; charset=UTF-8'
body '<b>Привіт світ!</b> Це тестовий лист, надісланий за допомогою Ruby Mail та Forward Email SMTP.'
end
end
mail.deliver!
puts "Лист успішно надіслано!"
Інтеграція Java
Використання JavaMail API
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
public class SendEmail {
public static void main(String[] args) {
// Електронна пошта та пароль відправника
final String username = "your-username@your-domain.com";
final String password = "your-password";
// Властивості SMTP сервера
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", "smtp.forwardemail.studio");
props.put("mail.smtp.port", "465");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
// Створення сесії з автентифікатором
Session session = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
// Створення повідомлення
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(username));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient@example.com"));
message.setSubject("Привіт від Forward Email");
// Створення мультипарт повідомлення
Multipart multipart = new MimeMultipart("alternative");
// Текстова частина
BodyPart textPart = new MimeBodyPart();
textPart.setText("Привіт світ! Це тестовий лист, надісланий за допомогою JavaMail та Forward Email SMTP.");
// HTML частина
BodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent("<b>Привіт світ!</b> Це тестовий лист, надісланий за допомогою JavaMail та Forward Email SMTP.", "text/html");
// Додавання частин до мультипарту
multipart.addBodyPart(textPart);
multipart.addBodyPart(htmlPart);
// Встановлення вмісту
message.setContent(multipart);
// Надсилання повідомлення
Transport.send(message);
System.out.println("Лист успішно надіслано!");
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
}
Налаштування поштового клієнта
Thunderbird
- Відкрийте Thunderbird і перейдіть до Налаштувань облікового запису
- Натисніть "Дії з обліковим записом" і виберіть "Додати поштовий обліковий запис"
- Введіть своє ім’я, адресу електронної пошти та пароль
- Натисніть "Ручне налаштування" і введіть такі дані:
- Вхідний сервер:
- IMAP: imap.forwardemail.studio, Порт: 993, SSL/TLS
- POP3: pop3.forwardemail.studio, Порт: 995, SSL/TLS
- Вихідний сервер (SMTP): smtp.forwardemail.studio, Порт: 465, SSL/TLS
- Аутентифікація: Звичайний пароль
- Ім’я користувача: ваша повна адреса електронної пошти
- Вхідний сервер:
- Натисніть "Перевірити" і потім "Готово"
Apple Mail
- Відкрийте Mail і перейдіть у Mail > Налаштування > Облікові записи
- Натисніть кнопку "+" для додавання нового облікового запису
- Виберіть "Інший поштовий обліковий запис" і натисніть "Продовжити"
- Введіть своє ім’я, адресу електронної пошти та пароль, потім натисніть "Увійти"
- Якщо автоматичне налаштування не вдається, введіть такі дані:
- Вхідний поштовий сервер: imap.forwardemail.studio (або pop3.forwardemail.studio для POP3)
- Вихідний поштовий сервер: smtp.forwardemail.studio
- Ім’я користувача: ваша повна адреса електронної пошти
- Пароль: ваш пароль
- Натисніть "Увійти" для завершення налаштування
Gmail (Відправляти пошту як)
- Відкрийте Gmail і перейдіть у Налаштування > Облікові записи та імпорт
- У розділі "Відправляти пошту як" натисніть "Додати іншу адресу електронної пошти"
- Введіть своє ім’я та адресу електронної пошти, потім натисніть "Наступний крок"
- Введіть такі дані SMTP сервера:
- SMTP сервер: smtp.forwardemail.studio
- Порт: 465
- Ім’я користувача: ваша повна адреса електронної пошти
- Пароль: ваш пароль
- Виберіть "Захищене з’єднання за допомогою SSL"
- Натисніть "Додати обліковий запис" і підтвердіть свою адресу електронної пошти
Усунення несправностей
Поширені проблеми та рішення
-
Помилка аутентифікації
- Перевірте своє ім’я користувача (повна адреса електронної пошти) та пароль
- Переконайтеся, що ви використовуєте правильний порт (465 для SSL/TLS)
- Перевірте, чи увімкнено доступ до SMTP для вашого облікового запису
-
Тайм-аут з’єднання
- Перевірте своє інтернет-з’єднання
- Переконайтеся, що налаштування брандмауера не блокують SMTP-трафік
- Спробуйте використовувати порт 465 з SSL/TLS (рекомендовано) або порт 587 з STARTTLS
-
Повідомлення відхилено
- Переконайтеся, що адреса "Від" збігається з вашою аутентифікованою електронною поштою
- Перевірте, чи не внесено вашу IP-адресу до чорного списку
- Переконайтеся, що вміст повідомлення не викликає спам-фільтри
-
Помилки TLS/SSL
- Оновіть свій додаток/бібліотеку для підтримки сучасних версій TLS
- Переконайтеся, що сертифікати CA вашої системи актуальні
- Спробуйте явний TLS замість неявного TLS
Отримання допомоги
Якщо ви зіткнулися з проблемами, які тут не описані, будь ласка:
- Перевірте нашу сторінку FAQ для поширених запитань
- Ознайомтеся з нашим постом у блозі про доставку електронної пошти для детальної інформації
- Зв’яжіться з нашою службою підтримки за адресою support@forwardemail.studio
Додаткові ресурси
- Документація Forward Email
- Обмеження та налаштування SMTP сервера
- Посібник з найкращих практик електронної пошти
- Практики безпеки
Висновок
SMTP-сервіс Forward Email забезпечує надійний, безпечний та орієнтований на конфіденційність спосіб надсилання електронної пошти з ваших додатків та поштових клієнтів. Він включає систему черги, механізм повторних спроб протягом 5 днів та сповіщення про статус доставки.
Для більш складних випадків використання або індивідуальних інтеграцій, будь ласка, звертайтеся до нашої служби підтримки.