# Panduan Setup Email untuk Hosting

Email sudah diupdate menggunakan SMTP untuk lebih reliable di hosting. Ikuti panduan ini untuk mengkonfigurasinya.

## ⚙️ Step 1: Edit File Konfigurasi Email

Buka file: `config/email.php`

```php
define('SMTP_HOST', 'smtp.gmail.com');           // Ganti sesuai email provider
define('SMTP_PORT', 587);
define('SMTP_USERNAME', 'your-email@gmail.com'); // Email Anda
define('SMTP_PASSWORD', 'your-app-password');    // Password (lihat di bawah)
define('SMTP_FROM_EMAIL', 'noreply@kasirmurah.biz.id');
define('SMTP_FROM_NAME', 'KasirMurah');
define('MAIL_DEBUG', false);                      // Set true untuk debugging
```

---

## 📧 Opsi 1: Menggunakan Gmail SMTP (Recommended untuk Awal)

### Langkah Setup:

1. **Buka akun Google Anda**: https://myaccount.google.com/security

2. **Aktifkan 2-Step Verification** (jika belum):
   - Klik "2-Step Verification"
   - Ikuti instruksi

3. **Buat App Password**:
   - Buka https://myaccount.google.com/apppasswords
   - Pilih "Mail" di dropdown pertama
   - Pilih "Windows Computer" (atau device yang sesuai)
   - Klik "Generate"
   - Salin password yang muncul (16 karakter, tanpa spasi)

4. **Update `config/email.php`**:
   ```php
   define('SMTP_HOST', 'smtp.gmail.com');
   define('SMTP_PORT', 587);
   define('SMTP_USERNAME', 'your-email@gmail.com');     // Email Gmail Anda
   define('SMTP_PASSWORD', 'xxxx xxxx xxxx xxxx');       // Password App yang di-generate (buang spasi)
   define('SMTP_FROM_EMAIL', 'your-email@gmail.com');   // Bisa sama dengan SMTP_USERNAME
   define('SMTP_FROM_NAME', 'KasirMurah');
   ```

5. **Test**: Coba register user baru dan lihat apakah email masuk

---

## 📧 Opsi 2: Menggunakan Hosting SMTP

Jika hosting Anda menyediakan email (seperti cPanel):

1. **Login ke control panel hosting (cPanel, Plesk, dll)**

2. **Cari Email atau Mail Management**

3. **Catat informasi SMTP**:
   - SMTP Host (biasanya `mail.yourdomain.com` atau IP address)
   - SMTP Port (biasanya 587 atau 465)
   - Username (email Anda)
   - Password (password email Anda)

4. **Update `config/email.php`**:
   ```php
   define('SMTP_HOST', 'mail.your-hosting.com');    // Dari control panel
   define('SMTP_PORT', 587);                         // 587 atau 465
   define('SMTP_USERNAME', 'your-email@yourdomain.com');
   define('SMTP_PASSWORD', 'email-password');
   ```

---

## 📧 Opsi 3: Menggunakan SendGrid (Recommended untuk Production)

SendGrid menawarkan 100 email gratis per hari.

1. **Sign up**: https://sendgrid.com (free tier available)

2. **Generate API Key** di Dashboard

3. **Update `config/email.php`**:
   ```php
   define('SMTP_HOST', 'smtp.sendgrid.net');
   define('SMTP_PORT', 587);
   define('SMTP_USERNAME', 'apikey');                    // LITERAL 'apikey'
   define('SMTP_PASSWORD', 'SG.your-api-key-here');      // API Key dari SendGrid
   define('SMTP_FROM_EMAIL', 'noreply@yourdomain.com');
   ```

---

## 🧪 Testing Email

Untuk debug, set di `config/email.php`:
```php
define('MAIL_DEBUG', true);
```

Kemudian:
1. Buka browser console atau error log
2. Coba register user baru
3. Lihat log SMTP di file `error_log` atau output

Set kembali ke `false` setelah testing.

---

## ❌ Troubleshooting

### Email tidak terkirim
- Cek SMTP credentials di `config/email.php`
- Pastikan password benar (terutama untuk Gmail App Password)
- Lihat error log di server

### "Connection refused"
- SMTP host atau port salah
- Hosting firewall memblokir SMTP

### Gmail tidak accept credentials
- Pastikan 2-Step Verification aktif
- Generate ulang App Password
- Buang spasi dari App Password

### "STARTTLS failed"
- Port mungkin salah
- Coba port 465 (SSL) instead of 587 (TLS)
- Update: `define('SMTP_PORT', 465);`
- Update Mail.php baris 48 menjadi `STREAM_CRYPTO_METHOD_TLS_CLIENT` → `STREAM_CRYPTO_METHOD_SSLv23_CLIENT`

---

## 📧 Email yang Dikirim

Aplikasi sekarang mengirim email untuk:

1. **Welcome Email** - Saat user register baru
2. **Payment Notification** - Saat user submit bukti pembayaran
3. **Expired Email** - Saat subscription berakhir

---

## 💾 Files yang Diupdate

- `config/email.php` - **BARU** - Konfigurasi email
- `app/Mail.php` - **BARU** - Class untuk SMTP
- `app/Subscription.php` - Updated untuk gunakan Mail class
- `public/init.php` - Added include untuk Mail dan email config
- `public/auth/register.php` - Added include untuk Mail dan email config

---

Jika ada masalah, hubungi hosting support atau cek error log server.
