# Миграция с MailerSend на Amazon SES

## ✅ Выполнено

1. ✅ Создан `EmailSesService` - сервис для отправки email через Amazon SES
2. ✅ Обновлены все контроллеры для использования `EmailSesService` вместо `EmailMailerSendService`:
   - `AuthController`
   - `StaffController`
   - `TelegramWebhookController`
   - `ReservationController`

## 📋 Настройка на сервере

### 1. Обновить `.env` файл

```env
# Отключить MailerSend
# MAILERSEND_API_KEY=...
# MAILERSEND_FROM_EMAIL=...

# Настроить Amazon SES
MAIL_MAILER=ses
AWS_ACCESS_KEY_ID=your_access_key_id_here
AWS_SECRET_ACCESS_KEY=your_secret_access_key_here
AWS_DEFAULT_REGION=eu-central-1
MAIL_FROM_ADDRESS=info@kartulirest.de
MAIL_FROM_NAME="KartuliDe Restaurant"
```

### 2. Проверить конфигурацию SES

Убедитесь, что в `config/services.php` есть секция:

```php
'ses' => [
    'key' => env('AWS_ACCESS_KEY_ID'),
    'secret' => env('AWS_SECRET_ACCESS_KEY'),
    'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
],
```

### 3. Установить AWS SDK (если еще не установлен)

```bash
composer require aws/aws-sdk-php
```

### 4. Очистить кэш конфигурации

```bash
php artisan config:clear
php artisan cache:clear
```

## 🔧 Настройка Amazon SES в AWS Console

### Шаг 1: Верифицировать домен или email

1. Перейдите в [Amazon SES Console](https://console.aws.amazon.com/ses/)
2. Выберите регион: **EU (Frankfurt) eu-central-1**
3. **Verified identities** → **Create identity**
4. Выберите **Domain** и введите `kartulirest.de`
5. Добавьте DNS записи в ваш DNS провайдер

### Шаг 2: Создать IAM пользователя

1. Перейдите в [IAM Console](https://console.aws.amazon.com/iam/)
2. **Users** → **Create user**
3. Имя: `ses-email-sender`
4. Включите **Programmatic access**
5. Прикрепите политику: `AmazonSESFullAccess` (или создайте кастомную с минимальными правами)
6. Сохраните **Access Key ID** и **Secret Access Key**

### Шаг 3: Запросить выход из Sandbox (для продакшена)

По умолчанию SES в Sandbox режиме - можно отправлять только на верифицированные email.

1. В SES Console → **Account dashboard**
2. Нажмите **Request production access**
3. Заполните форму (объясните, как будете использовать SES)
4. Обычно одобряется в течение 24 часов

## 📊 Лимиты и стоимость

### Free Tier (первые 12 месяцев):
- **62,000 email/месяц** бесплатно
- Только из регионов: us-east-1, us-west-2, eu-west-1

### После Free Tier:
- **$0.10 за 1,000 email**
- Пример: 10,000 email = $1.00
- Пример: 100,000 email = $10.00

### Регион EU (Frankfurt) eu-central-1:
- **$0.10 за 1,000 email** (стандартная цена)

## ⚠️ Важные моменты

1. **Sandbox режим**: По умолчанию можно отправлять только на верифицированные email. Нужно запросить выход из Sandbox для продакшена.

2. **Регион**: Используйте `eu-central-1` (Frankfurt) для GDPR compliance и лучшей производительности в Германии.

3. **Верификация**: Обязательно верифицируйте домен или email перед отправкой.

4. **Reputation**: Amazon SES следит за репутацией. Избегайте:
   - Высокого процента bounce
   - Жалоб на спам
   - Отправки на несуществующие адреса

5. **Rate Limits**: 
   - Sandbox: 1 email/сек, 200 email/день
   - Production: зависит от репутации (можно запросить увеличение)

## 🧪 Тестирование

### Тест 1: Проверка конфигурации

```bash
php artisan tinker
```

```php
use Illuminate\Support\Facades\Mail;

Mail::raw('Test email from SES', function ($message) {
    $message->to('your-verified-email@example.com')
            ->subject('SES Test');
});
```

### Тест 2: Проверка логов

```bash
tail -f storage/logs/laravel.log
```

Ищите сообщения:
- `Email sent successfully via SES`
- `Failed to send email via SES`

## 🔄 Откат на MailerSend (если нужно)

Если нужно вернуться на MailerSend:

1. В `.env` верните:
```env
MAILERSEND_API_KEY=your_key
MAILERSEND_FROM_EMAIL=info@kartulirest.de
```

2. Замените все `EmailSesService` обратно на `EmailMailerSendService` в контроллерах

## 📝 Дополнительная информация

- [Amazon SES Documentation](https://docs.aws.amazon.com/ses/)
- [Laravel Mail Documentation](https://laravel.com/docs/mail)
- [SES Webhook Setup](./SES_WEBHOOK_SETUP.md) - для обработки bounce/complaint
