Cara Menggunakan SMTP Gmail di PHP dengan Database (Tanpa Hardcode Password)
Saat membuat aplikasi PHP, fitur kirim email biasanya digunakan untuk verifikasi akun, reset password, maupun notifikasi. Agar lebih aman dan mudah dikelola, simpan konfigurasi SMTP di database, bukan langsung di dalam file PHP.
1. Install PHPMailer
Install menggunakan Composer:
```bash
composer require phpmailer/phpmailer
```
2. Buat Tabel SMTP
```sql
CREATE TABLE smtp_settings (
id INT AUTO_INCREMENT PRIMARY KEY,
smtp_host VARCHAR(100) NOT NULL,
smtp_port INT NOT NULL,
smtp_username VARCHAR(150) NOT NULL,
smtp_password VARCHAR(255) NOT NULL,
smtp_secure VARCHAR(10) NOT NULL,
from_email VARCHAR(150) NOT NULL,
from_name VARCHAR(100) NOT NULL,
status TINYINT(1) DEFAULT 1
);
```
3. Contoh Data
```sql
INSERT INTO smtp_settings
(smtp_host,smtp_port,smtp_username,smtp_password,smtp_secure,from_email,from_name,status)
VALUES
(
'smtp.gmail.com',
587,
'admin@gmail.com',
'APP_PASSWORD_GMAIL',
'tls',
'admin@gmail.com',
'FixDigitech',
1
);
```
Catatan : Gunakan App Password Gmail, jangan password akun Gmail biasa.
4. Koneksi Database (config.php)
```php
<?php
$host = "localhost";
$db = "db_website";
$user = "root";
$pass = "";
try{
$pdo = new PDO(
"mysql:host=$host;dbname=$db;charset=utf8",
$user,
$pass
);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){
die($e->getMessage());
}
```
5. Ambil Konfigurasi SMTP dari Database
```php
$stmt = $pdo->prepare("SELECT * FROM smtp_settings WHERE status='1' LIMIT 1");
$stmt->execute();
$smtp = $stmt->fetch(PDO::FETCH_ASSOC);
if(!$smtp){
die("SMTP belum dikonfigurasi.");
}
```
6. Mengirim Email Menggunakan PHPMailer
```php
<?php
require 'vendor/autoload.php';
require 'config.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
$stmt = $pdo->prepare("SELECT * FROM smtp_settings WHERE status='1' LIMIT 1");
$stmt->execute();
$smtp = $stmt->fetch(PDO::FETCH_ASSOC);
$mail = new PHPMailer(true);
try{
$mail->isSMTP();
$mail->Host = $smtp['smtp_host'];
$mail->SMTPAuth = true;
$mail->Username = $smtp['smtp_username'];
$mail->Password = $smtp['smtp_password'];
$mail->SMTPSecure = $smtp['smtp_secure'];
$mail->Port = $smtp['smtp_port'];
$mail->setFrom(
$smtp['from_email'],
$smtp['from_name']
);
$mail->addAddress("tujuan@email.com","Penerima");
$mail->isHTML(true);
$mail->Subject = "Tes SMTP Database";
$mail->Body = "
<h3>Email berhasil dikirim.</h3>
<p>Konfigurasi SMTP diambil langsung dari database.</p>
";
$mail->send();
echo "Email berhasil dikirim.";
}catch(Exception $e){
echo "Gagal mengirim email : ".$mail->ErrorInfo;
}
```
Kelebihan Cara Ini
* Tidak ada username dan password SMTP yang di-hardcode.
* Cukup ubah data pada tabel jika ingin mengganti akun Gmail.
* Mudah dibuatkan menu **Setting SMTP** di halaman admin.
* Bisa dikembangkan untuk mendukung banyak akun email.
* Lebih profesional dan mudah di-maintenance.
Dengan menyimpan konfigurasi SMTP pada tabel database, aplikasi menjadi lebih fleksibel dan aman. Anda tidak perlu lagi mengedit source code setiap kali ingin mengganti akun Gmail atau App Password. Teknik ini sangat cocok digunakan pada aplikasi berbasis PHP seperti sistem informasi, HRIS, SIMRS, maupun aplikasi administrasi lainnya.
Konsultasikan kebutuhan Anda secara gratis dan dapatkan rekomendasi solusi yang paling efisien untuk bisnis Anda.
💬 Komentar 0
Isi nama & email sekali sebelum mulai berkomentar. Email tidak akan ditampilkan ke publik, hanya untuk keperluan admin.