SMTP Nedir?
SMTP (Simple Mail Transfer Protocol), e-posta gönderimi için kullanılan standart protokoldür. PHP'nin yerleşik mail() fonksiyonu genellikle spam filtrelerine takılır. SMTP kullanarak e-postalarınızı doğrulanmış bir sunucu üzerinden gönderirsiniz.
Gmail SMTP Ayarları
- Sunucu: smtp.gmail.com
- Port: 587 (TLS) veya 465 (SSL)
- Şifreleme: TLS/STARTTLS
- Kimlik doğrulama: Gerekli (Uygulama Şifresi kullanın)
1. PHPMailer ile Gönderim
require 'vendor/autoload.php';
use PHPMailer\PHPMailer\PHPMailer;
$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';
$mail->Password = 'xxxx xxxx xxxx xxxx';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
$mail->CharSet = 'UTF-8';
$mail->setFrom('[email protected]', 'Eka Sunucu');
$mail->addAddress('[email protected]');
$mail->isHTML(true);
$mail->Subject = 'Sipariş Onayı';
$mail->Body = '<h2>Siparişiniz alındı!</h2>';
$mail->send();
2. Saf PHP ile SMTP (fsockopen)
$sock = fsockopen('tls://smtp.gmail.com', 465,
$errno, $errstr, 10);
fgets($sock);
fwrite($sock, "EHLO localhost\r\n");
fgets($sock);
fwrite($sock, "AUTH LOGIN\r\n");
fgets($sock);
fwrite($sock, base64_encode('[email protected]') . "\r\n");
fgets($sock);
fwrite($sock, base64_encode('app_password') . "\r\n");
fgets($sock);
fwrite($sock, "MAIL FROM:<[email protected]>\r\n");
fgets($sock);
fwrite($sock, "RCPT TO:<[email protected]>\r\n");
fgets($sock);
fwrite($sock, "DATA\r\n");
fgets($sock);
$headers = "Subject: Test Mail\r\n"
. "Content-Type: text/html; charset=UTF-8\r\n\r\n";
fwrite($sock, $headers . "Merhaba!\r\n.\r\n");
fgets($sock);
fwrite($sock, "QUIT\r\n");
fclose($sock);