Оглавление
Этот скрипт отправляет электронное письмо через SMTP на основе данных текущей строки. Он разработан как скрипт-кнопка: вы нажимаете кнопку в строке, и скрипт читает получателя, тему и текст из соответствующих столбцов. Статус отправки записывается в столбец одиночного выбора.
Предварительные требования
Таблица должна содержать следующие столбцы:
- Recipient (Электронная почта) — адрес получателя
- Subject (Текст) — тема письма
- Body (Длинный текст) — содержание письма
- Status (Одиночный выбор) — устанавливается скриптом на «Success» или «Error»
Также необходимо настроить столбец-кнопку для запуска скрипта.
Скрипт
Адаптируйте учётные данные SMTP и названия столбцов под вашу конфигурацию. Скрипт использует context.current_row для чтения данных из строки, в которой была нажата кнопка.
from seatable_api import Base, context
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
base = Base(context.api_token, context.server_url)
base.auth()
# SMTP configuration
SMTP_SERVER = "smtp.example.com"
SMTP_PORT = 587
SMTP_USER = "your-email@example.com"
SMTP_PASSWORD = "your-app-password"
TABLE_NAME = "Table1"
# Read data from current row
row = context.current_row
if not row:
print("ERROR: This script must be run via a button.")
else:
recipient = row.get('Recipient', '')
subject = row.get('Subject', '')
body = row.get('Body', '')
if not recipient:
print("ERROR: No recipient specified.")
elif not subject:
print("ERROR: No subject specified.")
else:
msg = MIMEMultipart()
msg['From'] = SMTP_USER
msg['To'] = recipient
msg['Subject'] = subject
msg.attach(MIMEText(body or '', 'plain'))
try:
with smtplib.SMTP(SMTP_SERVER, SMTP_PORT) as server:
server.starttls()
server.login(SMTP_USER, SMTP_PASSWORD)
server.send_message(msg)
base.update_row(TABLE_NAME, row['_id'], {'Status': 'Success'})
print(f"Email sent to {recipient}")
except Exception as e:
base.update_row(TABLE_NAME, row['_id'], {'Status': 'Error'})
print(f"Failed: {e}")
SMTP-серверы
Распространённые настройки SMTP:
| Провайдер | Сервер | Порт |
|---|---|---|
| Gmail | smtp.gmail.com | 587 |
| Outlook / Microsoft 365 | smtp-mail.outlook.com | 587 |
| Собственный сервер | Ваш SMTP-сервер | 587 или 465 |
Для HTML-писем замените 'plain' на 'html' в вызове MIMEText.
Полный справочник функций доступен в SeaTable Developer Manual .