Hướng dẫn php sendmail
Th8 17, 2022 Show
Hai G. 8ít nhất Đọc Gần như bất kỳ dự án kinh doanh nào cũng cần có email và gửi email cho khách hàng hoặc đối tác. Mặc dù có nhiều loại email hosting doanh nghiệp khác nhau, như Hostinger, Zoho Mail, và Google Workspace, bạn cũng có thể gửi email bằng PHP. Trong bài hướng dẫn này, bạn sẽ học cách gửi email bằng PHP mail() function có sẵn và PHPMailer với giao thức Simple Mail Transfer Protocol (SMTP). PHP mail() function có thể được dùng để gửi email sử dụng PHP. Nó thuận tiện nếu bạn muốn tạo form liên hệ trên website của bạn. Với PHP mail(), emails có thể được gửi sử dụng script PHP đơn giản.
Gửi email bằng PHP mail() FunctionPHP mail() function kích hoạt chương trình Sendmail, thường được cấu hình bởi system admin. Chương trình này giúp bạn gửi email được. Để dùng được hàm này, hãy chắc là nhà cung cấp của bạn cho phép bạn chỉnh chức năng Sendmail service. Các bước gửi email hàm PHP mail() như sau: Bước 1 – Kích hoạt dịch vụ SendmailNếu bạn đang dùng web hosting của Hostinger hoặc WordPress hosting, bạn có thể kích hoạt hoặc vô hiệu function này trong hPanel. Nhấn vào Emails -> Mail Service Control. Mặc định, Sendmail service đã được kích hoạt. Bạn có thể kiểm tra lại cho chắc. Bước 2 — Tạo một file PHP mớiĐầu tiên, bạn cần tạo file PHP trong tài khoản hosting. Để file của bạn có thể truy cập bằng địa chỉ web, bạn cần mua tên miền web, kết nối nó tới hosting và upload file PHP vào trong thư mục public_html.
Hiểu thêm về các thành phần trong PHP MailNhư đã hứa, chúng tôi sẽ giới thiệu bạn các thành phần cơ bản của một mail script PHP. Ví dụ này là chúng tôi tạo một cú pháp email cơ bản để bạn hiểu nó hoạt động như thế nào cụ thể. Tuy nhiên, nếu bạn muốn biết thêm thông tin chức năng của Sendmail và các components của nó, bạn có thể xem qua bộ tài liệu PHP chính thức. Đây là PHP syntax chúng tôi đã dùng ở phần trước: Cùng xem qua cụ thể về từng dòng một: ini_set( 'display_errors', 1 ); error_reporting( E_ALL ); 2 dòng đầu tiên là bật tính năng hiện lỗi để bạn thấy lỗi nếu có. Chúng sẽ báo lỗi nếu script thực thi thất bại. $from = ""; $from – Email gửi từ. Nhiều nhà cung cấp không cho phép sử dụng email address tùy ý vì lý do nó có thể bị lạm dung làm spoofing. Nên bạn cần điền email address bạn đã tạo cho tên miền này ở đây để thực thi PHP mail thành công. $to = ""; $to – Email người nhận. Khi bạn gửi đi cho mục đích kiểm tra, hãy dùng email cá nhân của bạn để thử. $subject = "Checking PHP mail"; $subject – Tiêu đề email $message = "PHP mail works just fine"; $message – Đây là chỗ bạn điền nội dung của email vào $headers = "From:" . $from; $headers – Mỗi email có headers. Chúng bao gồm những thông tin như là email gửi từ, địa chỉ email để trả lời (reply-to address) mail ($to,$subject,$message,$headers); mail($to,$subject,$message, $headers) – Đây là hàm PHP để chạy lệnh gửi email. Bạn không nên thay đổi gì trong dòng này. echo "The email message was sent."; echo “The email message was sent.” – PHP function echo sẽ hiển thị thông báo trên màn hình là script đã được thực thi thành công. Sử dụng PHPMailer để gửi emailPHPMailer là thư viện phổ biến để gửi mail trong PHP. Nó hỗ trợ gửi email bằng hàm mail() hoặc Simple Mail Transfer Protocol (SMTP). Thư viện này đơn giản quá trình phức tạp xây dựng một PHP mail bằng cách cho bạn dùng một bộ các function để tạo và gửi email Cài PHPMailer cũng rất dễ, đặc biệt nếu bạn đã có sẵn Composer. Nếu bạn đang dùng Hostinger, bạn không phải lo về việc này nữa vì nó đã được cài sẵn trong mọi gói hosting. Nếu bạn muốn cài đặt PHPMailer thủ công, bạn có thể kết nối tới hosting qua SSH terminal bằng các bước sau:
Sử dụng PHPMailer để gửi email với Hostinger SMTPKhi bạn đã có PHPMailer sẵn, bạn có thể dùng nó để gửi PHP mails bằng Hostinger SMTP.
Hiểu về PHPMailer ComponentsĐể hiểu PHPMailer hoạt động như thế nào, hãy cùng chúng tôi xem mô tả của ví dụ script trên đã dùng SMTP để gửi email thành công nhé. Đây là giải thích từng component: use PHPMailer\PHPMailer\PHPMailer; Dòng này nhập PHPMailer class vào global namespace. require '../vendor/autoload.php'; Nó kết hợp nhiều thư viện khác nhau để PHPMailer chạy được. $mail-> Tất cả những biến tương tự chứa thông tin quan trọng, như địa chỉ server, message header, attachment,… Tóm lại, hãy đảm bảo sender được bảo vệ bởi chứng thực SMTP. if (!$mail->send()) { Định nghĩa điều gì sẽ xảy ra khi script được thực thi. echo 'Mailer Error: ' . $mail->ErrorInfo; Nó sẽ hiện lỗi giải thích khi nào script thất bại. } else { Xác định điều gì xảy ra tiếp theo khi scritp được thực thị. echo 'The email message was sent!'; Nếu email được gửi thành công, dòng này sẽ hiện ra. PRO TIP: Dòng này SMTPDebug = 2; chỉ hữu dụng khi bạn gửi test script và muốn xem nó hoạt động như thế nào. Bạn cần chuyển nó về SMTPDebug = 0; nếu bạn đã test xong. Để tránh người dùng cuối nhận được SMTP deliver report. Nếu bạn chú ý, bạn sẽ nhận ra nó hơi khác so với ví dụ đầu tiên – chúng tôi đang gửi một HTML message thay vì là một đoạn văn bản thuần túy. Vì vậy, tin nhắn của bạn sẽ tải nội dung từ trong file message.html đặt trong cùng thư mục — public_html. Định dạng này có nhiều chức năng tuyệt vời hơn so với plain text vì HTML có khả năng tùy chỉnh cao. Bạn có thể chỉnh màu, phong cách, ảnh, và thêm file multimedia vào, những thứ mà sẽ bị mất khi gửi mail plain text. PHPMailer Contact FormBạn có thể ứng dụng PHPMailer vào nhiều thứ hơn thay vì chỉ gửi PHP mail đơn giản. Một khi bạn đã ứng dụng nó, bạn có thể tạo contact form nơi độc giả có thể nhanh chóng tương tác với bạn. Đây là ví dụ của đoạn script: isSMTP(); $mail->Host = 'smtp.hostinger.com'; $mail->Port = 587; $mail->SMTPAuth = true; $mail->Username = ''; $mail->Password = 'EMAIL_ACCOUNT_PASSWORD'; $mail->setFrom('', 'Mr. Drago'); $mail->addAddress('', 'Receiver Name'); if ($mail->addReplyTo($_POST['email'], $_POST['name'])) { $mail->Subject = 'PHPMailer contact form'; $mail->isHTML(false); $mail->Body = << Giống với script trước, bạn cần tạo file mới trong thư mục public_html. Trong trường hợp này, chúng tôi đặt tên nó là formscript.php. Chỉnh thông tin bên trong script tuần tự. Sau đó, bạn có thể chạy script từ trong trình duyệt. Đây là kết quả: Khi khách hàng gửi tin nhắn, anh ta sẽ nhận được thông báo xác nhận và nội dung sẽ chuyển đến ibox của email bạn nhập ở đây:$mail->addAddress('', 'Receiver Name'); PRO TIP: Trong trường hợp PHPMailer contact form không hoạt động. thêm dòng $mail->SMTPDebug = 2; vào để xem điều gì gây ra lỗi. Đừng quên xóa số 2 thành 0 khi xong việc. PHPMailer có nhiều ví dụ hơn nữa bạn có thể thử trong GitHub repository chín thức. Cũng vậy, nếu bạn đang dùng WordPress, bạn có thẻ dễ dàng tạo một contact form với rất nhiều plugin như WP Forms, Formidable Forms, hoặc Gravity Forms. Sửa lỗi thông thường của PHP mail và PHPMailerLỗi phát sinh trong khi dùng PHP mail hoặc PHPMailer. Đây là danh sách các lỗi thông thường và cách sửa lỗi chúng. Sender Address Rejected: Not Owned by the UserLỗi này có nghĩa server không thể chứng thực bằng thông tin bạn cung cấp. Để sửa, hãy kiểm tra lại email bạn dùng để gửi email và chắc rằng nó đang tồn tại. Nếu nó trỏ tới sai inbox, hãy thay đổi. Ngoài ra, bạn cũng có thể kích hoạt SPF record Gmail Couldn’t Verify That YourDomain.com Sent This MessageNếu bạn thấy cảnh bảo này khi kiểm thử PHP mail script, có nghĩa là:
Mail bị chuyển tới thư mục spamCó nhiều lý do khiến gửi email PHP rơi vào thư mục spam. Đây là một số lý do phổ biến:
Kết luậnBây giờ bạn đã biết làm thế nào để gửi email qua PHP. Mặc dù bài hướng dẫn này khá cơ bản, nhưng phương pháp cũng cùng như vậy nếu bạn muốn tạo contact form trên website của bạn. Tuy nhiên nếu bạn muốn có thêm những script cao cấp chạy lệnh gửi email sử dụng PHP, hãy xem qua PHPMailer project. Nếu bạn có thủ thuật, mẹo nào để gửi email hoặc ý tưởng mới có thể chia sẽ. Đừng ngại hãy để lại bình luận bên dưới cho chúng tôi nhé. Hải G. là chuyên gia quản lý, vận hành các dịch vụ website. Anh có nhiều năm kinh nghiệm về VPS, Hosting, technical SEO, CMS. Đặc biệt yêu thích WordPress và đã dùng nó hơn 5 năm nay. Sở thích của anh là đọc, viết blog, đi du lịch và tư vấn cho các bạn trẻ khởi nghiệp. |