6.7 KiB
6.7 KiB
سرویس ایمیل حسابیکس
نمای کلی
سرویس ایمیل حسابیکس یک سیستم داخلی برای ارسال ایمیل است که توسعهدهندگان میتوانند به راحتی از آن استفاده کنند. این سرویس از SMTP استفاده میکند و تنظیمات اتصال در دیتابیس ذخیره میشود.
ویژگیها
- ✅ ارسال ایمیل با SMTP
- ✅ پشتیبانی از TLS و SSL
- ✅ ذخیره تنظیمات در دیتابیس
- ✅ مدیریت چندین پیکربندی
- ✅ تست اتصال
- ✅ رابط کاربری برای مدیریت
- ✅ پشتیبانی از چندزبانه (فارسی/انگلیسی)
- ✅ امنیت و رمزگذاری
ساختار فایلها
Backend
hesabixAPI/
├── adapters/db/models/email_config.py # مدل دیتابیس
├── adapters/db/repositories/email_config_repository.py # Repository
├── adapters/api/v1/schema_models/email.py # Schema models
├── adapters/api/v1/admin/email_config.py # API endpoints
├── app/services/email_service.py # سرویس اصلی
└── locales/
├── fa/LC_MESSAGES/messages.po # ترجمههای فارسی
└── en/LC_MESSAGES/messages.po # ترجمههای انگلیسی
Frontend
hesabixUI/hesabix_ui/lib/
├── models/email_models.dart # مدلهای Flutter
├── services/email_service.dart # سرویس Flutter
├── pages/admin/email_settings_page.dart # صفحه مدیریت
└── l10n/
├── app_fa.arb # ترجمههای فارسی
└── app_en.arb # ترجمههای انگلیسی
استفاده برای توسعهدهندگان
1. ارسال ایمیل ساده
import 'package:hesabix_ui/services/email_service.dart';
final emailService = EmailService();
// ارسال ایمیل سفارشی
await emailService.sendCustomEmail(
to: 'user@example.com',
subject: 'عنوان ایمیل',
body: 'متن ایمیل',
htmlBody: '<h1>عنوان</h1><p>متن</p>',
);
2. ارسال ایمیل خوشآمدگویی
await emailService.sendWelcomeEmail(
'user@example.com',
'نام کاربر',
);
3. ارسال ایمیل بازیابی رمز عبور
await emailService.sendPasswordResetEmail(
'user@example.com',
'https://example.com/reset?token=abc123',
);
4. ارسال ایمیل اطلاعرسانی
await emailService.sendNotificationEmail(
'user@example.com',
'عنوان اطلاعرسانی',
'پیام اطلاعرسانی',
);
مدیریت تنظیمات
1. دسترسی به صفحه تنظیمات
- وارد بخش "تنظیمات سیستم" شوید
- روی "تنظیمات ایمیل" کلیک کنید
2. افزودن پیکربندی جدید
-
فرم را پر کنید:
- نام پیکربندی: نام منحصر به فرد
- میزبان SMTP: آدرس سرور SMTP
- پورت SMTP: پورت سرور (معمولاً 587 یا 465)
- نام کاربری: نام کاربری SMTP
- رمز عبور: رمز عبور SMTP
- ایمیل فرستنده: آدرس ایمیل فرستنده
- نام فرستنده: نام نمایشی فرستنده
- TLS/SSL: نوع رمزگذاری
-
روی "ذخیره پیکربندی" کلیک کنید
3. تست اتصال
- پیکربندی مورد نظر را انتخاب کنید
- روی "تست اتصال" کلیک کنید
- وضعیت اتصال نمایش داده میشود
4. ارسال ایمیل تست
- پیکربندی مورد نظر را انتخاب کنید
- روی "ارسال ایمیل تست" کلیک کنید
- ایمیل تست به آدرس "ایمیل فرستنده" ارسال میشود
API Endpoints
مدیریت پیکربندیها
GET /api/v1/admin/email/configs- دریافت لیست پیکربندیهاGET /api/v1/admin/email/configs/{id}- دریافت پیکربندی خاصPOST /api/v1/admin/email/configs- ایجاد پیکربندی جدیدPUT /api/v1/admin/email/configs/{id}- بروزرسانی پیکربندیDELETE /api/v1/admin/email/configs/{id}- حذف پیکربندی
تست و ارسال
POST /api/v1/admin/email/configs/{id}/test- تست اتصالPOST /api/v1/admin/email/configs/{id}/activate- فعالسازی پیکربندیPOST /api/v1/admin/email/send- ارسال ایمیل
امنیت
- رمزهای عبور SMTP در دیتابیس ذخیره میشوند (باید رمزگذاری شوند)
- تمام endpoint ها نیاز به احراز هویت دارند
- تست اتصال قبل از فعالسازی انجام میشود
چندزبانه
فارسی
- تمام متنها به فارسی ترجمه شدهاند
- پشتیبانی از RTL
- فرمت تاریخ شمسی
انگلیسی
- پشتیبانی کامل از انگلیسی
- فرمت تاریخ میلادی
عیبیابی
مشکلات رایج
-
خطا در اتصال SMTP
- بررسی صحت آدرس میزبان و پورت
- بررسی نام کاربری و رمز عبور
- بررسی تنظیمات TLS/SSL
-
ایمیل ارسال نمیشود
- بررسی پیکربندی فعال
- تست اتصال
- بررسی لاگهای سرور
-
خطا در رابط کاربری
- بررسی اتصال به API
- بررسی مجوزهای کاربر
- بررسی ترجمهها
لاگها
- لاگهای ارسال ایمیل در console نمایش داده میشوند
- خطاهای SMTP در response API نمایش داده میشوند
توسعه آینده
ویژگیهای پیشنهادی
- سیستم قالبهای ایمیل
- صف ارسال ایمیل
- آمار ارسال
- لاگگیری کامل
- رمزگذاری رمزهای عبور
- پشتیبانی از چندین ارائهدهنده SMTP
- تست خودکار اتصال
بهبودهای فنی
- Cache کردن پیکربندیها
- Connection pooling
- Retry mechanism
- Rate limiting
- Monitoring و alerting
پشتیبانی
برای گزارش مشکلات یا درخواست ویژگیهای جدید، لطفاً با تیم توسعه تماس بگیرید.
نسخه: 1.0.0
تاریخ: 2025-01-17
نویسنده: تیم توسعه حسابیکس