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
//Убедитесь, что конфигурация безопасности соответствует вашим конкретным требованиям