Отправка через smtp
Здесь описаны шаги для получения доступов к SMTP.
Настройки
SMTP сервер: smtp.mailganer.com
Порт: 1126 или 1127 (TLS)
Треккинг открытий и кликов
Для отслеживания кликов оберните все ссылки в в следующий редирект
[domain]/click/[X-Track-ID]?goto_url=[url]

Для отслеживания открытий добавьте следующую конструкцию в контент письма
<img src="[domain]/open/[X-Track-ID]" alt="" height="1" width="1" border="0"/>

X-Track-ID это ваш внутренний ID отправки, нужно также его передавать и в заголовок письма. Должен быть уникальным для каждой отправки.
Хорошая практика формирования X-Track-ID - [login]-[timestamp]-[your-id]
  • login - ваш логин к SMTP
  • timestamp - временная метка запроса
  • your-id - любой понятный вам ID
url это целевая ссылка
domain это http://track.mailganer.com или ваш домен, на котором настроена CNAME запись на track.mailganer.com
Все значения для переменных формируются на вашей стороне.
Mailganer не взаимодействует с контентом писем.
Если вам нужна поддержка передаваемых переменных, воспользуйтесь API
Ознакомьтесь подробнее с тем, какие бывают ошибки и с нашей политикой ретраев
Возможные ошибки в SMTP диалоге
Если в копии есть имейл, находящийся в стоп-листе, то отправка не будет произведена ни на один имейл
Обратите внимание, что если имейл находится в любом из стоп-листов, при попытке отправить письмо на этот адрес, вы будете получать ошибку 550 bounce check filter. Каждый такой запрос будет тарифицироваться системой, настройте соответствующую обработку ошибок.
Примеры работы с SMTP

telnet smtp.mailganer.com 1126 // Хост и порт
Trying 45.136.180.204...
Connected to spf.mailganer.com
Escape character is '^]'.
220 sender1.mailganer.com ESMTP ready
helo domain.ru // Ваш домен
250 sender1.mailganer.com
auth login // Метод авторизациии
334 VXNlcm5hbWU6
XXXXXXXXXXXX // Ваш логин в формате base64
334 UGFzc3dvcmQ6
XXXXXXXXXXXX // Ваш пароль в формате base64
235 2.0.0 OK
mail from:info@domain.ru // Email отправителя
250 OK
rcpt to:test@mailganer.ru // Email получателя
250 Accepted
data // Строим письмо
354 Enter message, ending with "." on a line by itself
// Далее идут ОБЯЗАТЕЛЬНЫЕ ЗАГОЛОВКИ
From: <info@domain.ru>
To: <test@mailganer.ru>
Subject: Subject Test  // Обязательно пустая строка после темы

Hello world // Тело письма
. // Конец тела письма

250 OK id=1rNT4d-005ie-SR // пример id рассылки, который мы возвращаем

import time
import smtplib
from email.message import EmailMessage
from email.utils import formataddr


def send_email_smtp(sender_name, sender_email, to_emails, subject, email_content, login, password, content_html=True, attachment=False, attachment_name=None, cc_emails=None, bcc_emails=None):
    x_track_id = f'{login}_{int(time.time())}'  # Ваш параметр для отслеживания
    port = 1126
    host = 'smtp.mailganer.com'

    recipients = [email.split(';')[0] for email in to_emails]

    if content_html:
        # Заменяем переменную {{X-Track-ID}} в вашем html
        with open(email_content, 'r', encoding='utf-8') as html:
            body = html.read().replace('{{X-Track-ID}}', x_track_id)
    else:
        body = email_content

    # Создаем письмо
    email = EmailMessage()
    email['Subject'] = subject
    email['From'] = formataddr((sender_name, sender_email))
    email['To'] = recipients
    if cc_emails:
        email['Cc'] = cc_emails
    email['X-Track-ID'] = x_track_id
    email['Return-Path'] = sender_email
    email.set_content(body, subtype='html')

    if attachment:
        with open(attachment_name, 'rb') as content_file:
            content = content_file.read()
            email.add_attachment(content, maintype='application', subtype=attachment_name.split('.')[1], filename=attachment_name)

    all_recipients = recipients + (cc_emails if cc_emails else []) + (bcc_emails if bcc_emails else [])

    try:
        # Создаем SMTP сессию
        smtp = smtplib.SMTP(host, port)
        # Создаем TLS подключение
        smtp.starttls()
        # Авторизация
        smtp.login(login, password)
        # Отправляем письмо
        smtp.send_message(email, sender_email, all_recipients)
        # Прерываем сессию
        smtp.quit()
        print("Email sent successfully!")
    except Exception as ex:
        print("Something went wrong....", ex)


if __name__ == '__main__':
        send_email_smtp(sender_name='mailganer.com',
                           sender_email='info@mailguner.com',
                           to_emails=['example1@mailganer.com'],  # получатели
                           cc_emails=['example2@mailganer.com'],  # имейлы в копии
                           bcc_emails=['example3@mailganer.com'],  # имейлы в скрытой копии
                           subject=f'Тема письма',
                           email_content=r'Контент письма',
                           login='1234',
                           password='pass',
                           content_html=False,
                           attachment=True,
                           attachment_name='Путь до файла с вложением'
                           )

// Создать файл /etc/postfix/sasl/sasl_passwd
sudo nano /etc/postfix/sasl/sasl_passwd

// Сохранить в него логин (вместо XXX) и ключ (вместо YYY):
[smtp.mailganer.com]:1126 XXX:YYY

// Сконвертировать текстовый файл в hash database
sudo postmap /etc/postfix/sasl/sasl_passwd

// Проверить права
sudo chown root:root /etc/postfix/sasl/sasl_passwd /etc/postfix/sasl/sasl_passwd.db
sudo chmod 0600 /etc/postfix/sasl/sasl_passwd /etc/postfix/sasl/sasl_passwd.db

// Отредактировать настройки postfix, sudo nano /etc/postfix/main.cf
relayhost = [smtp.mailganer.com]:1126
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
smtp_sasl_security_options =

// Перезапустить postfix
sudo service postfix restart

// Откройте файл конфигурации Exim в текстовом редакторе. Местоположение может варьироваться в зависимости от вашей системы, но обычные пути включают /etc/exim/exim.conf или /etc/exim4/exim4.conf.
sudo nano /etc/exim/exim.conf

// Найдите секции routers и transports в файле конфигурации
// Измените следующие записи:
begin routers
relay_provider:
  driver = manualroute
  domains = ! +local_domains
  transport = remote_smtp
  route_list = * smtp.mailganer.com::1127
. . . 
begin transports
remote_smtp:
  driver = smtp
  port = 1127
  hosts_require_tls = smtp.mailganer.com
. . . 
//Измените следующую информацию об аутентификации в файл конфигурации, замените XXX на свой логин и YYY на пароль.:
plain:
  driver = plaintext
  public_name = LOGIN
  client_send = : XXX : YYY
//Добавьте следующие строки для конфигурации TLS/STARTTLS:
tls_advertise_hosts = *
//После внесения изменений перезапустите службу Exim для применения конфигурации:
sudo service exim restart
//Убедитесь, что конфигурация безопасности соответствует вашим конкретным требованиям
Написать в поддержку
Mail