Kategoriler
PHP

PHPMailer ile mail göndermek

PHP ile mail göndermek için mail() fonksiyonu kullanabileceğinizi anlatmıştık. Bu fonksiyon sistem üzerindeki mail sunucu tarafından göndermektedir. Farklı bir mail sunucudan mail göndermek için smtp üzerinden göndermek gerekir. PHPMailer, smtp üzerinden gönderebileceğiniz bir php eklentisidir. Kurulumu ve kullanımı oldukça kolaydır. https://github.com/PHPMailer/PHPMailer sayfasından indirebilirsiniz. Kurulum ve kullanım kodları şu şekildedir.

Standart kullanım;

[code]<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require ‘PHPMailer/src/Exception.php’;
require ‘PHPMailer/src/PHPMailer.php’;
require ‘PHPMailer/src/SMTP.php’;

$mail = new PHPMailer(true);

$mail->setLanguage(‘tr’);
$mail->CharSet = “utf-8”;

$mail->isSMTP();
$mail->Host = ‘mail.example.com’;
$mail->Port = ‘587’;
$mail->Username = ‘[email protected]’;
$mail->Password = ‘Mail şifresi’;
$mail->SMTPAuth = true;
$mail->SMTPSecure = ‘tls’;

$mail->setFrom(‘[email protected]’,’Example – Admin’);
$mail->addAddress(‘[email protected]’);

$mail->isHTML(false);
$mail->Subject = ‘Test İleti’;
$mail->Body = ‘Merhaba, Bu ileti test amaçlı iletilmiştir. Bilginize.’;

if($mail->send())
{
echo(‘Mesaj gönderildi.’);
}
else
{
echo(‘Mail gönderilemedi.’);
}
?>[/code]

HTML ileti kullanımı;

[code]<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require ‘PHPMailer/src/Exception.php’;
require ‘PHPMailer/src/PHPMailer.php’;
require ‘PHPMailer/src/SMTP.php’;

$mail = new PHPMailer(true);

$mail->setLanguage(‘tr’);
$mail->CharSet = “utf-8”;

$mail->isSMTP();
$mail->Host = ‘mail.example.com’;
$mail->Port = ‘587’;
$mail->Username = ‘[email protected]’;
$mail->Password = ‘Mail şifresi’;
$mail->SMTPAuth = true;
$mail->SMTPSecure = ‘tls’;

$mail->setFrom(‘[email protected]’,’Example – Admin’);
$mail->addAddress(‘[email protected]’);

$mail->isHTML(true);
$mail->Subject = ‘Test İleti’;
$mail->Body = ‘Merhaba,<br /><br />Bu ileti test amaçlı iletilmiştir.<br /><br />Bilginize.’;

if($mail->send())
{
echo(‘Mesaj gönderildi.’);
}
else
{
echo(‘Mail gönderilemedi.’);
}
?>[/code]

try-catch kullanım;

[code]<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require ‘PHPMailer/src/Exception.php’;
require ‘PHPMailer/src/PHPMailer.php’;
require ‘PHPMailer/src/SMTP.php’;

$mail = new PHPMailer(true);

$mail->setLanguage(‘tr’);
$mail->CharSet = “utf-8”;

$mail->isSMTP();
$mail->Host = ‘mail.example.com’;
$mail->Port = ‘587’;
$mail->Username = ‘[email protected]’;
$mail->Password = ‘Mail şifresi’;
$mail->SMTPAuth = true;
$mail->SMTPSecure = ‘tls’;

$mail->setFrom(‘[email protected]’,’Example – Admin’);
$mail->addAddress(‘[email protected]’);

$mail->isHTML(true);
$mail->Subject = ‘Test İleti’;
$mail->Body = ‘Merhaba,<br /><br />Bu ileti test amaçlı iletilmiştir.<br /><br />Bilginize.’;

try
{
if($mail->send())
{
echo(‘Mesaj gönderildi.’);
}
else
{
echo(‘Mail gönderilemedi.’);
}
}
catch (Exception $e)
{
echo(‘Mesaj gönderilemedi. Mailer Hatası: ‘.$mail->ErrorInfo);
}
?>[/code]

HTML içerik ileti kullanımı;

[code]<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require ‘PHPMailer/src/Exception.php’;
require ‘PHPMailer/src/PHPMailer.php’;
require ‘PHPMailer/src/SMTP.php’;

$mail = new PHPMailer(true);

$mail->setLanguage(‘tr’);
$mail->CharSet = “utf-8”;

$mail->isSMTP();
$mail->Host = ‘mail.example.com’;
$mail->Port = ‘587’;
$mail->Username = ‘[email protected]’;
$mail->Password = ‘Mail şifresi’;
$mail->SMTPAuth = true;
$mail->SMTPSecure = ‘tls’;

$mail->setFrom(‘[email protected]’,’Example – Admin’);
$mail->addAddress(‘[email protected]’);

$mail->isHTML(true);
$mail->Subject = ‘Test İleti’;
$mail->msgHTML(file_get_contents(‘contents.html’));

if($mail->send())
{
echo(‘Mesaj gönderildi.’);
}
else
{
echo(‘Mail gönderilemedi.’);
}
?>[/code]

Dosya ekli ileti kullanımı;

[code]<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require ‘PHPMailer/src/Exception.php’;
require ‘PHPMailer/src/PHPMailer.php’;
require ‘PHPMailer/src/SMTP.php’;

$mail = new PHPMailer(true);

$mail->setLanguage(‘tr’);
$mail->CharSet = “utf-8”;

$mail->isSMTP();
$mail->Host = ‘mail.example.com’;
$mail->Port = ‘587’;
$mail->Username = ‘[email protected]’;
$mail->Password = ‘Mail şifresi’;
$mail->SMTPAuth = true;
$mail->SMTPSecure = ‘tls’;

$mail->setFrom(‘[email protected]’,’Example – Admin’);
$mail->addAddress(‘[email protected]’);

$mail->isHTML(true);
$mail->Subject = ‘Test İleti’;
$mail->Body = $ileti;
$mail->addAttachment(‘image.jpg’);

if($mail->send())
{
echo(‘Mesaj gönderildi.’);
}
else
{
echo(‘Mail gönderilemedi.’);
}
?>[/code]

Upload metodu ile dosya ekli ileti kullanımı;

[code]<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require ‘PHPMailer/src/Exception.php’;
require ‘PHPMailer/src/PHPMailer.php’;
require ‘PHPMailer/src/SMTP.php’;

$mail = new PHPMailer(true);

$mail->setLanguage(‘tr’);
$mail->CharSet = “utf-8”;

$mail->isSMTP();
$mail->Host = ‘mail.example.com’;
$mail->Port = ‘587’;
$mail->Username = ‘[email protected]’;
$mail->Password = ‘Mail şifresi’;
$mail->SMTPAuth = true;
$mail->SMTPSecure = ‘tls’;

$mail->setFrom(‘[email protected]’,’Example – Admin’);
$mail->addAddress(‘[email protected]’);

$mail->isHTML(true);
$mail->Subject = ‘Test İleti’;
$mail->Body = $ileti;
$mail->addAttachment($_FILES[‘dosya’][‘tmp_name’]);

if($mail->send())
{
echo(‘Mesaj gönderildi.’);
}
else
{
echo(‘Mail gönderilemedi.’);
}
?>[/code]

Gmail kullanımı;

[code]<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require ‘PHPMailer/src/Exception.php’;
require ‘PHPMailer/src/PHPMailer.php’;
require ‘PHPMailer/src/SMTP.php’;

$mail = new PHPMailer(true);

$mail->setLanguage(‘tr’);
$mail->CharSet = “utf-8”;

$mail->isSMTP();
$mail->Host = ‘smtp.gmail.com’;
$mail->Port = ‘465’;
$mail->Username = ‘[email protected]’;
$mail->Password = ‘Mail şifresi’;
$mail->SMTPAuth = true;
$mail->SMTPSecure = ‘ssl’;

$mail->setFrom(‘[email protected]’,’Example’);
$mail->addAddress(‘[email protected]’);

$mail->isHTML(false);
$mail->Subject = ‘Test İleti’;
$mail->Body = ‘Merhaba, Bu ileti test amaçlı iletilmiştir. Bilginize.’;

try{
if($mail->send()){
echo(‘Mesaj gönderildi.’);
}else{
echo(‘Mail gönderilemedi.’);
}
}catch(Exception $e){
echo(‘Mesaj gönderilemedi. Mailer Hatası: ‘.$mail->ErrorInfo);
}
?>[/code]

“PHPMailer ile mail göndermek” için bir yanıt

Eski versiyonlarını sitemde kullanıyordum. Yenisini indirip kullanayım dedim, baştan beceremedim sandım ama sağda solda başka gereksiz şeyler anlatıldığı içinmiş.

Çoğu yerde vendor klasöründe autoload.php falan include edileceğinden bahsediliyor. Tıpkı eski sürümlerinde olduğu gibi o işleri sunucu hallediyor. Vendor a falan gerek yokmuş. Sayfanızda verdiğiniz gibi doğru namespace tanımlamaları ve doğru include lar ile kodlar sorunsuz çalışmakta.

Açıkçası kimsenin yorum yazmamasını yadırgadığım için en azından emeğe saygı duyma adına bir yorum yazıp teşekkür etmek istedim. Bilgiler için teşekkür ederim, elinize sağlık.