GIT – Thông số chính để chạy được SMTP thì đòi hỏi tối thiểu 3 tham số là SMTP Host, SMTP Username, SMTP :
– SMTP Host: thì nếu nhà cung cấp dịch vụ mail nào đưa ra SMTP thì họ cũng sẽ đưa cho mình cái địa chỉ, cụ thể của Gmail và các mail sử dụng cơ chế Apps thì có địa chỉ Host là smtp.gmail.com
– SMTP Username và SMTP Password chính là account email.

Các SMTP khác sao thì không biết, nhưng đối với Google thì chúng ta phải cấu hình SSL và Port 465 để có thể authen được.
Nếu bạn nào đã quen với OOP rồi thì việc sử dụng class phpmailer khá đơn giản, nó cung cấp khá nhiều property và method cho các vấn đề của chúng ta, kể cả attachment trong mail.

Cách 1. Dưới đây là đoạn script gởi mail mà mình test, các bạn có thể tham khảo sơ qua cách sử dụng 1 số method và property của phpmailer class.

<?
include "class.phpmailer.php"; 
include "class.smtp.php"; 

$mail = new PHPMailer();
$mail->IsSMTP(); // set mailer to use SMTP
$mail->Host = "smtp.gmail.com"; // specify main and backup server
$mail->Port = 465; // set the port to use
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->SMTPSecure = 'ssl';
$mail->Username = "username@gmail.com"; // your SMTP username or your gmail username
$mail->Password = "passwordhere"; // your SMTP password or your gmail password
$from = "fromemail@somemail.com"; // Reply to this email
$to="emailnguoinhan@domain.com"; // Recipients email ID
$name="Vo Duy Tuan"; // Recipient's name
$mail->From = $from;
$mail->FromName = "Your From Name"; // Name to indicate where the email came from when the recepient received
$mail->AddAddress($to,$name);
$mail->AddReplyTo($from,"Vo Duy Tuan");
$mail->WordWrap = 50; // set word wrap
$mail->IsHTML(true); // send as HTML
$mail->Subject = "Test mail script from bloghoctap.com";
$mail->Body = "<b>Mail nay duoc goi bang phpmailer class. - <a href='http://bloghoctap.com'>bloghoctap.com</a></b>"; //HTML Body
$mail->AltBody = "Mail nay duoc goi bang phpmailer class. - bloghoctap.com"; //Text Body
//$mail->SMTPDebug = 2;
if(!$mail->Send())
{
	echo "<h1>Loi khi goi mail: " . $mail->ErrorInfo . '</h1>';
}
else
{
	echo "<h1>Send mail thanh cong</h1>";
}
?>

LƯU Ý: Nếu script báo lỗi không connect được tới SMTP host chắc có lẽ PHP.INI chưa enable extension “extension=php_openssl.dll”, hãy bỏ dấu “;” ở trước dòng đó đi và restart lại Server là ok. Nếu vẫn không được nữa thì hãy kiểm tra account gmail xem có chính xác không, hoặc kiểm tra xem account gmail đã enable chế POP trong Setting chưa. Và lưu ý cái version của class phpmailer nhé, nên phiên bản mới từ địa chỉ mình để ở trên từ trang http://phpmailer.worxware.com.

Cách 2. Include file phpmailer chứa class làm việc này vào file mà bạn cần sử lý gởi mail : 

require_once('phpmailer/class.phpmailer.php');

Đinh nghĩa biến cho tài khoản Gmail của bạn

define('GUSER', 'you@gmail.com'); // tài khoản đăng nhập Gmail
define('GPWD', 'password'); // mật khẩu cho cái mail này

Rồi hàm nãy đã viết sẳn bạn chỉ việc dùng hay viết lại thêm cái gì đó theo ý bạn thôi. nhúng nó vào file gởi mail của bạn rồi chạy

function smtpmailer($to, $from, $from_name, $subject, $body) {
global $error;
$mail = new PHPMailer();  // tạo một đối tượng mới từ class PHPMailer
$mail->IsSMTP(); // bật chức năng SMTP
$mail->SMTPDebug = 0;  // kiểm tra lỗi : 1 là  hiển thị lỗi và thông báo cho ta biết, 2 = chỉ thông báo lỗi
$mail->SMTPAuth = true;  // bật chức năng đăng nhập vào SMTP này
$mail->SMTPSecure = 'ssl'; // sử dụng giao thức SSL vì gmail bắt buộc dùng cái này
$mail->Host = 'smtp.gmail.com';
$mail->Port = 465;
$mail->Username = GUSER;
$mail->Password = GPWD;
$mail->SetFrom($from, $from_name);
$mail->Subject = $subject;
$mail->Body = $body;
$mail->AddAddress($to);
if(!$mail->Send()) {
$error = 'Gởi mail bị lỗi: '.$mail->ErrorInfo;
return false;
} else {
$error = 'thư của bạn đã được gởi đi ';
return true;
}
}  
Cách sử dụng
smtpmailer('goiden@gmail.com', '', 'goitu@mail.com', 'yourName', 'Tiêu đề Thư', 'Nội dung thư');

bạn có thể thay thế các giá trị bên trên thành 1 biến lấy từ Form của bạn nhé

$_POST hay $_GET gì gì đó

Và hơn 1 chút thay vì chỉ gởi mà lặng lẽ rôi im ru

if (smtpmailer('to@mail.com', 'from@mail.com', 'yourName', 'test mail message', 'Hello World!')) {
// gởi  xong rồi thông báo gì đó cho ngươi dùng  :D viết ở đây
}
if (!empty($error)) echo $error;  
Nguồn bloghoctap.com – Nhatnghe.com
Print Friendly

Comments

comments

Bài viết liên quan