72 lines
2.4 KiB
Python
72 lines
2.4 KiB
Python
import os
|
|
import smtplib
|
|
from loguru import logger
|
|
from email.mime.text import MIMEText
|
|
from email.mime.multipart import MIMEMultipart
|
|
from utils.loadDotENV import initializeENV
|
|
|
|
def send_lead_to_email(name, phone, email, diskription):
|
|
"""
|
|
Отправляет информацию о заявке на фиксированный email rkplastic@mail.ru.
|
|
|
|
Args:
|
|
name (str): ФИО клиента
|
|
phone (str): Телефон клиента
|
|
email (str): Email клиента
|
|
|
|
Returns:
|
|
bool: True если отправка успешна, иначе False
|
|
"""
|
|
initializeENV()
|
|
# Настройки Яндекс.Почты
|
|
SMTP_SERVER = "smtp.yandex.ru"
|
|
SMTP_PORT = 587
|
|
SENDER_EMAIL = "rkplastic@yandex.ru"
|
|
SENDER_PASSWORD = os.environ.get('EMAIL_PASS')
|
|
RECIPIENT_EMAIL = "rkplastic@mail.ru"
|
|
|
|
if not SENDER_PASSWORD:
|
|
logger.error("❌ Не найдена переменная окружения EMAIL_PASS")
|
|
return False
|
|
|
|
# Тема и текст письма
|
|
subject = "Новая заявка с сайта"
|
|
body = f"""На сайте оставлена заявка:
|
|
Имя: {name}
|
|
Телефон: {phone}
|
|
Почта: {email}
|
|
Содержание заявки: {diskription}
|
|
"""
|
|
|
|
# Создаём сообщение
|
|
msg = MIMEMultipart()
|
|
msg['From'] = SENDER_EMAIL
|
|
msg['To'] = RECIPIENT_EMAIL
|
|
msg['Subject'] = subject
|
|
msg['Reply-To'] = SENDER_EMAIL
|
|
|
|
# Добавляем текст в кодировке UTF-8
|
|
msg.attach(MIMEText(body, 'plain', 'utf-8'))
|
|
|
|
try:
|
|
logger.info(f"Подключение к SMTP-серверу {SMTP_SERVER}:{SMTP_PORT}...")
|
|
server = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
|
|
server.starttls()
|
|
server.login(SENDER_EMAIL, SENDER_PASSWORD)
|
|
|
|
server.send_message(msg)
|
|
server.quit()
|
|
|
|
logger.info(f"✅ Заявка успешно отправлена на {RECIPIENT_EMAIL}")
|
|
return True
|
|
|
|
except smtplib.SMTPAuthenticationError:
|
|
logger.error("❌ Ошибка аутентификации. Проверьте пароль в переменной EMAIL_PASS")
|
|
return False
|
|
except smtplib.SMTPException as e:
|
|
logger.error(f"❌ Ошибка SMTP: {e}")
|
|
return False
|
|
except Exception as e:
|
|
logger.error(f"❌ Неожиданная ошибка: {e}")
|
|
return False
|