Hi tại sao tôi lại hướng dẫn gmail mà ko phải là yahoo hay cái khác :
Trước hết
it's FREE! Mà các SMPT hay host của việt nam IP lõm quá chạy
thua xa Gmail. mà google lại hỗ trợ quá tuyệt hình như là 500 mail cho 1
ngày thì phải gởi đã đời. đối với web nhỏ như chúng ta thôi nha. chứ
vài nghìn mình ko nghĩ tới.
Bắt đầu.
1. Bạn phải sử dụng PHP5 nha và port 465 chắc chắn được phép chạy vì nó sẽ kết nối với Gmail
2. Download
PHPMailer
3. Vào :
http://gmail.com đăng ký cái tài khoản
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 :
PHP Code:
require_once('phpmailer/class.phpmailer.php');
Đinh nghĩa biến cho tài khoản Gmail của bạn
PHP Code:
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
PHP Code:
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 hàm đã viết bên trên như thế nào (ai ko biết code sẽ hỏi nhỉ )
PHP Code:
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é
.
PHP Code:
$_POST hay $_GET gì gì đó
Và hơn 1 chút thay vì chỉ gởi mà lặng lẽ rôi im ru
PHP Code:
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;
Tạo một Form để nhập nội dung Email
Bạn tạo một trang đặt tên là email.php
với nội dung như bên dưới:
|
< form method = "post" action = "email.php" >
Email: < input name = "email" id = "email" type = "text" />
Message:
< textarea name = "message" id = "message" rows = "15" cols = "40" ></ textarea >
< input type = "submit" value = "Submit" />
</ form >
|
Bổ sung PHPMailer vào mã nguồn
|
<?php
$email = $_REQUEST [ 'email' ] ;
$message = $_REQUEST [ 'message' ] ;
require ( "PHPMailer_5.2.0/class.PHPMailer.php" );
$mail = new PHPMailer();
$mail ->IsSMTP();
$mail ->Host = "localhost" ;
$mail ->SMTPAuth = true;
$mail ->Username = "contact@domain.com" ;
$mail ->Password = "password" ;
$mail ->From = $email ;
$mail ->AddAddress( "webmaster-abcd@gmail.com" , "Brad Markle" );
$mail ->WordWrap = 50;
$mail ->IsHTML(true);
$mail ->Subject = "You have received feedback from your website!" ;
$mail ->Body = $message ;
$mail ->AltBody = $message ;
if (! $mail ->Send())
{
echo "Message could not be sent. <p>" ;
echo "Mailer Error: " . $mail ->ErrorInfo;
exit ;
}
echo "Message has been sent" ;
?>
|
Phpmailer gởi mail SMTP bằng Gmail/Google Apps
Tạo 1 file send.php với nội dung sau
<?
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 = "your_email@gmail.com"; // your SMTP username or your gmail username
$mail->Password = "passwordhere"; // your SMTP password or your gmail password
$from = "your_email@gmail.com"; // Reply to this email
$to="email_nguoinhan@domain.com"; // Recipients email ID
$name="Ky Thuat PA"; // 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,"Ky Thuat PA");
$mail->WordWrap = 50; // set word wrap
$mail->IsHTML(true); // send as HTML
$mail->Subject = "Gui mail script from www.pavietnam.vn";
$mail->Body
= "<b>Mail nay duoc gui bang SMTP Gmail dung phpmailer class. -
<a
href='http://www.pavietnam.vn'>www.pavietnam.vn</a></b>";
//HTML Body
$mail->AltBody = "Mail nay duoc gui bang SMTP Gmail dung phpmailer class. - www.pavietnam.vn"; //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>";
}
?>
Để gửi tài khoản bằng gmail chúng ta cần làm những điều sau nếu bạn dùng localhost
- Extension php_openssl cầi được cài đặt
- Gmail sử dụng SMTPSecure (ssl) để gửi email
- Khi sử dụng ssl của gmail chúng ta phải sử dụng port 465
Lưu ý cuối cùng: Đa số Web Hosting và Email Server không cho phép bạn gởi email có địa chỉ người gởi (FROM) khác với tên miền bạn đang dùng. Ví dụ nếu bạn đã tạo account dùng để gởi email là contact@domain.com nhưng lại để địa chỉ FROM là visitor@yahoo.com là không hợp lệ. Máy chủ sẽ từ chối và báo lỗi.
----> Một bài viết khác
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 Password:
– 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 bác Gmail và các mail sử
dụng cơ chế Google 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.
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.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| <?
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>";
}
?>
|
Các bạn có thể download file zip dưới đây gồm 3 file
(class.phpmailer.php, class.smtp.php và send.php) bỏ vào localhost, thay
đổi thông tin username,password cho đúng rồi test thử xem thế nào. Chúc
vui!
Download:
Test Gmail SMTP with PHP Mailer (testgmail-bloghoctap.com_.zip)
———————–
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 download phiên bản mới từ địa chỉ mình để ở trên từ
trang http://phpmailer.worxware.com
Nếu các bạn thấy có ích xin hãy cho 1 Like :D
Comments[ 0 ]
Đăng nhận xét