-----
Phần 90. Gửi
email
Đây là clip số 105:
Cấu hình XAMPP để gửi email từ local bằng hàm mail của PHP.
Cấu hình trong tập tin php.ini tại đường dẫn:
\xampp\php\php.ini. Cấu hình các mục sau:
extension=php_sockets.dll
extension=php_openssl.dll
sendmail_path ="\"D:\xampp\sendmail\sendmail.exe\"
-t"
Cấu hình các thông tin sau trong tập tin sendmail.ini tại
đường dẫn: \xampp\sendmail\sendmail.ini
smtp_server=smtp.gmail.com
smtp_port=465
smtp_ssl=ssl
default_domain=localhost
error_logfile=error.log
debug_logfile=debug.log
auth_username=xxx@gmail.com //tên một hộp thư gmail hợp lệ, dùng
email này để gửi
auth_password: //mật khẩu của hộp thư gmail ở trên
hostname=localhost
Sau khi cấu hình xong các thông tin ở trên, nhớ restart
XAMPP để nó cập nhật các giá trị vừa mới sửa đổi.
Sử dụng hàm mail của PHP để gửi email, cú pháp của hàm mail:
mail($to, $subject, $message, $header)
- $to: địa chỉ email người nhận
- $subject: tiêu đề của email
- $message: nội dung email
- $header: chứa các thông tin cấu hình, quản lý, ví dụ CC,
BCC,
Hàm mail sẽ trả về giá trị “true” nếu thành công (tuy không
chắc chắn đã gửi tới được đích, chỉ là đã hoàn thành việc gửi email) và trả về
giá trị “false” nếu thất bại.
Ví dụ,
<?php
$to = 'xxx@gmail.com';
//tên hộp thư nhận email
$subject = 'test mail';
$message = 'content of
email';
$header =
'from:abc@gmail.com';
if (mail($to, $subject,
$message, $header)) {
echo 'thanh cong';
} else {
echo 'that bai';
}
?>
Khi chạy đoạn mã trên có thể gặp lỗi này (xem trong tập tin error.log):
<https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbvH<EOL>wU53sSUsUXEeZdJHMkRcAQ6aFlQw1-bVfd5aoAM4_SkZO7MVd4cdG5AjdBe_SddXY8wIa0<EOL>-iwKTdED2cqWKVm1HgM7j9EbLJalYKEL6ef9TgP9GBx2jCLNZFt2YewbAlbSiANnxmgppz<EOL>sdvUxQddYoj4i8ByN82r61aZy7A22GHiM39P8-wt11VQIeCjwOkMuaoT8tHNiclxnjUhFK<EOL>2bVvAk8Bs_uQnl92J2xtKFr1NqVdk>
Please log in via your web browser and<EOL>then try again.<EOL>
Learn more at<EOL> https://support.google.com/mail/answer/78754
r9sm11864905pgp.78 - gsmtp<EOL>
Lỗi trên là do email của gmail được bảo mật, nên không cho
ứng dụng được phép truy cập vào để gửi email, kết quả là ứng dụng web sẽ bị
lỗi. Nghĩa là ‘Allow less secure apps’ đang ở chế độ OFF, cần chuyển sang chế
độ ON để chạy được đoạn mã và kiểm tra. Sau đó nhớ chuyển email về lại chế độ
OFF để đảm bảo an toàn cho hộp thư.
Đăng nhập vào hộp thư gmail, sau đó bấm vào link này để
chuyển hộp thư sang chế độ ít an toàn:
Có thể đọc thêm tại đây: https://stackoverflow.com/questions/26399202/sending-activation-email-smtp-server-did-not-accept-the-password
Muốn gửi email tới nhiều người, chỉ việc thêm hộp thư đến vào
biến $to, ví dụ,
$to = 'xxx@gmail.com, yyy@gmail.com';
Nếu muốn gửi email mà phần nội dung có kèm theo thẻ HTML,
thì trong header thêm thuộc tính Content-type: text/html, ví dụ,
$message = '<h3
style="color: red">content of email<h3>';
$header =
'from:abc@gmail.com' . "\r\n";
$header .= 'Content-type:
text/html';
Để gửi Cc và Bcc, chỉ cần thêm thông tin vào $header, ví dụ,
$header = 'from:abc@gmail.com' . "\r\n";
$header .= 'Content-type:
text/html' . "\r\n";
$header .= 'Cc: xyz@gmail.com';
-----------
Cập nhật [16/9/2020]
-----------
Xem thêm: