Biểu mẫu liên hệ php với xác thực smtp

Hôm nay tôi muốn chia sẻ với các bạn hướng dẫn gửi email PHP, một trong những ngôn ngữ phát triển web phổ biến nhất

Hàm thư tích hợp PHP ()

Có hai cách cơ bản để gửi email với PHP. chức năng thư tích hợp và các gói thư bên ngoài

Chức năng thư tích hợp sẵn của PHP () rất đơn giản nhưng đồng thời, nó cung cấp một chức năng hạn chế để gửi email. Bạn sẽ không thể thêm tệp đính kèm vào email của mình và việc xây dựng một mẫu HTML đẹp với hình ảnh được nhúng cũng sẽ là một nhiệm vụ khó khăn

Mặt khác của chức năng thư PHP () là email được gửi từ máy chủ web của bạn, điều này có thể gây ra sự cố về khả năng gửi do lo ngại về bảo mật như nghi ngờ thư rác và danh sách đen. Cách tốt nhất để khắc phục vấn đề này là gửi tin nhắn qua máy chủ SMTP, tuy nhiên, chức năng này cũng bị hạn chế. Thư PHP() thường không cho phép bạn sử dụng máy chủ SMTP bên ngoài và nó không hỗ trợ xác thực SMTP

Nói cách khác, tôi không khuyên bạn nên sử dụng hàm mail() tích hợp sẵn trong PHP và khuyên bạn nên tránh những vấn đề đau đầu mà nó có thể gây ra bằng cách cài đặt gói thư bên ngoài

Nếu bạn vẫn cam kết sử dụng hàm thư tích hợp PHP() và sẵn sàng chấp nhận thử thách, hãy xem mã cơ bản và các tham số chính của nó

Cú pháp và tham số
Cú pháp thư PHP khá đơn giản.


Nó sử dụng các tham số sau

  • “$to” = (những) người nhận tin nhắn của bạn. Định dạng địa chỉ email có thể là user@example. com hoặc Người dùng user@example. com. Nếu có nhiều người nhận, hãy phân tách họ bằng dấu phẩy (-s)
  • “subject” = chủ đề tin nhắn của bạn “tin nhắn” = nội dung tin nhắn của bạn. Các dòng phải được phân tách bằng CRLF (\r\n). Mỗi dòng không được vượt quá 70 ký tự
  • “[$headers]” = người nhận thêm tin nhắn của bạn, có thể được bao gồm trong CC hoặc BCC. Tiêu đề là tùy chọn, ngoại trừ tiêu đề "từ". nó phải được chỉ định, nếu không, bạn sẽ nhận được thông báo lỗi như Cảnh báo. email(). "sendmail_from" không được đặt trong php. ini hoặc tùy chỉnh "Từ. " thiếu tiêu đề

Để biết thêm chi tiết và tham số bổ sung, hãy tham khảo tài liệu PHP

Gửi email HTML bằng hàm PHP mail()

Phần thân của thư có thể được viết bằng HTML. Tuy nhiên, như tôi đã đề cập ở trên, nó phải đơn giản. Trong hàm thư PHP(), phần HTML sẽ như thế này

// Message
$message = '


  Review Request Reminder


  

Here are the cases requiring your review in December:

Case titleCategoryStatusDue date
Case 1DevelopmentpendingDec-20
Case 1DevOpspendingDec-21
';

Điều quan trọng cần nhớ là để gửi thư HTML, bạn cần đặt tiêu đề Kiểu nội dung

$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/html; charset=iso-8859-1';

Gửi email qua máy chủ SMTP trong PHP

Tôi chỉ định cài đặt SMTP ở đâu? . Chuyển đến thư mục cài đặt PHP và định cấu hình chúng trong tệp “php. tập tin ini”. Nhưng điều này sẽ chỉ hoạt động đối với các giải pháp giống như localhost hoặc Xmapp vì như tôi đã đề cập, chức năng thư PHP không hỗ trợ xác thực SMTP và không cho phép gửi thư qua máy chủ bên ngoài

Có một số tùy chọn khác khá lộn xộn nhưng tôi sẽ không quảng bá chúng và khuyên bạn nên sử dụng các gói thư PHP bên ngoài để gửi email qua máy chủ SMTP bên ngoài

PHPMailer

PHPMailer là thư viện gửi email cổ điển cho PHP. Nó hỗ trợ một số cách gửi email như mail(), Sendmail, qmail và gửi trực tiếp đến máy chủ SMTP. Bên cạnh đó, nó cung cấp một danh sách các tính năng nâng cao

  • xác thực SMTP
  • Mã hóa bảo mật/MIME
  • Hỗ trợ các giao thức TLS và SSL
  • Nội dung HTML cùng với văn bản thuần túy
  • Nhiều tệp đính kèm fs, chuỗi và nhị phân
  • Hỗ trợ hình ảnh nhúng

Gửi Email Với PHPMailer và SMTP

Để gửi email bằng PHPMailer và SMTP, trước tiên bạn cần cài đặt PHPMailer và định cấu hình cài đặt SMTP

Cách cài đặt PHPMailer

Cho đến phiên bản 5, PHPMailer đã cung cấp “PHPMailerAutoload. php”, do đó, bạn chỉ cần đưa nó vào tập lệnh của mình và tạo một phiên bản PHPMailer.
Bắt đầu từ PHPMailer 6. 0 vào tháng 8 năm 2017, bạn cần cài đặt nó, tốt nhất là thông qua Composer, trình quản lý phụ thuộc cho PHP (cách này được khuyến nghị bởi những người tạo PHPMailer trên Github). Sau khi cài đặt Trình soạn thảo, hãy thêm dòng này vào trình soạn nhạc của bạn. tập tin json.

"phpmailer/phpmailer": "~6.0"

hoặc chạy

composer require phpmailer/phpmailer

Ví dụ: nếu bạn không muốn cài đặt Trình soạn thảo, trong khi làm việc trong môi trường thử nghiệm, bạn có thể tải xuống các tệp có mã nguồn PHPMailer, sau đó sao chép nội dung của thư mục PHPMailer vào một trong các thư mục include_path được chỉ định trong cấu hình PHP của bạn và

Thêm lớp Exception sẽ giúp bạn xử lý lỗi và gỡ lỗi chúng. Trong PHP, nó hoạt động tương tự như các ngôn ngữ lập trình khác. Vì vậy, nếu không có nó, nếu có lỗi trong mã gửi email của bạn, bạn sẽ chỉ thấy một thông báo cho biết Không tìm thấy lớp ngoại lệ, nhưng bạn sẽ không được cung cấp bất kỳ chi tiết nào về cách gỡ lỗi. Tôi sẽ mô tả gỡ lỗi là một phần riêng biệt của bài viết này

Để xem hướng dẫn chi tiết về cài đặt, hãy kiểm tra tài liệu PHPMail trên Github

cấu hình SMTP

Để kiểm tra chức năng thư PHP, tôi sẽ sử dụng Mailtrap, một máy chủ SMTP giả mạo, không làm ngập hộp thư đến của chúng tôi hoặc thậm chí tệ hơn là hộp thư đến của khách hàng của chúng tôi. Khi bạn chắc chắn rằng mọi thứ hoạt động bình thường và thông báo email của bạn trông ổn, bạn sẽ có thể dễ dàng thay thế cài đặt SMTP trong các ví dụ của chúng tôi bằng máy chủ thực của bạn, cho dù bạn thích dịch vụ cục bộ hay dịch vụ của bên thứ ba, như Gmail. (Chỉ cần lưu ý rằng Nếu bạn muốn sử dụng lớp xác thực Gmail XOAUTH2, bạn cũng sẽ cần thêm một phụ thuộc vào gói league/oauth2-client trong trình soạn thảo của mình. json. )

Nếu bạn chưa sử dụng Mailtrap, hãy tạo một tài khoản miễn phí , truy cập Hộp thư đến của bạn và sao chép các giá trị sau từ tab cài đặt SMTP vào tập lệnh PHPMailer của bạn

  • máy chủ lưu trữ ($mail->Host = ’smtp. bẫy thư. io’)
  • tên người dùng ($mail->Tên người dùng = ‘234234234’ (ví dụ, được tạo bởi Mailtrap)
  • mật khẩu ($mail->Password = ‘435454545’ (ví dụ, được tạo bởi Mailtrap)
  • và cổng ($mail->Port = 25 hoặc 465 hoặc 2525)

Gửi email HTML qua SMTP với PHPMailer

Rất có thể, bạn sẽ sử dụng HTML để thiết kế thông báo email của mình. Vì vậy, hãy xem xét một số ví dụ về việc sử dụng các phương thức và thuộc tính HTML

Thông báo HTML cơ bản

Trong mọi trường hợp, tôi bắt đầu với lớp PHPMailer

Nếu bạn đã sử dụng Trình soạn thảo để cài đặt, hãy bao gồm tải tự động do Trình soạn thảo tạo. tập tin php

require 'pathtocomposer\composer\vendor\autoload.php';
If you have installed PHPMailer manually, initialize it like this:
require path/to/PHPMailer/src/PHPMailer.php'; 
require path/to/PHPMailer/src/SMTP.php'; 
require path/to/PHPMailer/src/Exception.php';
The next step is to create a new PHPMailer object:
$mail = new PHPMailer();

Bây giờ hãy chuyển sang cấu hình SMTP

________số 8

Chỉ định người nhận tin nhắn của bạn

$mail->addAddress('[email protected]');

Tùy chọn, bạn có thể thêm một CC

// Message
$message = '


  Review Request Reminder


  

Here are the cases requiring your review in December:

Case titleCategoryStatusDue date
Case 1DevelopmentpendingDec-20
Case 1DevOpspendingDec-21
';
0

Đặt chủ đề cho tin nhắn của bạn

// Message
$message = '


  Review Request Reminder


  

Here are the cases requiring your review in December:

Case titleCategoryStatusDue date
Case 1DevelopmentpendingDec-20
Case 1DevOpspendingDec-21
';
1

Sau đó đặt định dạng email thành HTML với thuộc tính isHTML(true)

// Message
$message = '


  Review Request Reminder


  

Here are the cases requiring your review in December:

Case titleCategoryStatusDue date
Case 1DevelopmentpendingDec-20
Case 1DevOpspendingDec-21
';
2

Bây giờ bạn có thể nhập nội dung mong muốn

// Message
$message = '


  Review Request Reminder


  

Here are the cases requiring your review in December:

Case titleCategoryStatusDue date
Case 1DevelopmentpendingDec-20
Case 1DevOpspendingDec-21
';
3

Với PHPMailer, bạn cũng có thể tạo một email HTML đẹp mắt, với định dạng tùy chỉnh, hình ảnh và gửi email có tệp đính kèm. Để thuận tiện cho bạn, PHPMailer cung cấp tùy chọn đọc nội dung thư HTML từ tệp bên ngoài, chuyển đổi hình ảnh được tham chiếu thành nhúng cũng như chuyển đổi HTML thành nội dung thay thế văn bản thuần túy cơ bản. Bằng cách này, bạn sẽ không làm quá tải mã gửi tin nhắn của mình bằng HTML và sẽ có thể cập nhật mẫu HTML của mình một cách độc lập. Để bao gồm một tệp HTML riêng, hãy thêm các thuộc tính này

// Message
$message = '


  Review Request Reminder


  

Here are the cases requiring your review in December:

Case titleCategoryStatusDue date
Case 1DevelopmentpendingDec-20
Case 1DevOpspendingDec-21
';
4

Cuối cùng, chỉ định các thuộc tính gửi email

// Message
$message = '


  Review Request Reminder


  

Here are the cases requiring your review in December:

Case titleCategoryStatusDue date
Case 1DevelopmentpendingDec-20
Case 1DevOpspendingDec-21
';
5

Kết quả "Tin nhắn đã được gửi" thông báo cho bạn rằng mã của bạn thực thi chính xác. Để kiểm tra kết quả gửi và thông tin chi tiết, hãy truy cập hộp thư đến Mailtrap của bạn. tin nhắn của bạn sẽ đến đó sau vài giây

Với Mailtrap, bạn sẽ có thể xem lại mã HTML, dữ liệu thô, thực hiện kiểm tra trình duyệt email cũng như đảm bảo rằng thư của bạn sẽ không bị đánh dấu là thư rác hoặc miền gửi của bạn sẽ không bị đưa vào danh sách đen

Khi bạn đã xác minh rằng kết quả gửi PHPMailer phù hợp với mong đợi của mình, bạn có thể chuyển sang gửi email thông thường qua bất kỳ máy chủ SMTP ưa thích nào

Để biết thêm ví dụ về cấu hình, hãy kiểm tra thư mục “ví dụ” bên trong tài liệu PHPMailer

Cách gỡ lỗi sự cố SMTP trong PHPMailer

Nếu bạn gặp một số rắc rối khi gửi email qua máy chủ SMTP, lệnh SMTPDebug sẽ giúp bạn khám phá những lỗi đó và tìm ra những gì cần khắc phục

Bật gỡ lỗi SMTP và đặt mức gỡ lỗi trong tập lệnh của bạn như sau

// Message
$message = '


  Review Request Reminder


  

Here are the cases requiring your review in December:

Case titleCategoryStatusDue date
Case 1DevelopmentpendingDec-20
Case 1DevOpspendingDec-21
';
6

Để hiểu rõ hơn về cách hoạt động của quá trình gỡ lỗi trong PHPMailer, hãy xem lại một vài ví dụ

Ví dụ 1. Tên máy chủ SMTP không hợp lệ

// Message
$message = '


  Review Request Reminder


  

Here are the cases requiring your review in December:

Case titleCategoryStatusDue date
Case 1DevelopmentpendingDec-20
Case 1DevOpspendingDec-21
';
7

Đối với ví dụ này, tôi đã nhập tên máy chủ không hợp lệ. bẫy thư. io thay vì smtp. bẫy thư. io. và ngay lập tức nhận được thông báo rằng đã xảy ra lỗi ở giai đoạn đầu tiên giao tiếp với máy chủ

ví dụ 2. Thông tin không hợp lệ

// Message
$message = '


  Review Request Reminder


  

Here are the cases requiring your review in December:

Case titleCategoryStatusDue date
Case 1DevelopmentpendingDec-20
Case 1DevOpspendingDec-21
';
8

Ví dụ này cho thấy lỗi xảy ra ở đâu. bây giờ SMTP, tên máy chủ và cổng của nó hợp lệ nhưng không tìm thấy kết hợp thông tin đăng nhập và mật khẩu, vì vậy bạn nên kiểm tra kỹ và sửa đổi thông tin đăng nhập của mình

Có một số bài viết chi tiết trên GitHub về gỡ lỗi và khắc phục sự cố, hãy tham khảo chúng khi bạn cần tìm hiểu sâu hơn về các chủ đề này

Bạn nên xem xét điều gì khác về các tùy chọn gửi thư PHP?

Trong bài viết này, tôi đã mô tả các nguyên tắc, cú pháp và tham số gửi email PHP cơ bản. Bên cạnh đó, tôi đã xem xét hai cách chính để gửi email bằng PHP. chức năng thư tích hợp của nó và PHPMailer, gói thư bên ngoài phổ biến nhất

Không còn nghi ngờ gì nữa, giải pháp thứ hai là một giải pháp tiên tiến hơn nhiều, với hỗ trợ xác thực SMTP và một loạt các tính năng liên quan đến HTML, tuy nhiên, chức năng thư PHP() vẫn có thể là một tùy chọn nếu bạn đang gửi thông báo văn bản thuần túy qua localhost

Ngoài PHPMailer, còn có nhiều giải pháp đáng chú ý khác để tạo email HTML và gửi nó qua máy chủ SMTP, chẳng hạn như gói thư PEAR, Swift Mailer hoặc Zend Framework.

Làm cách nào để tạo biểu mẫu liên hệ và gửi email trong PHP?

Biểu mẫu liên hệ qua email PHP .
Mã phải khớp với phương thức biểu mẫu
Định cấu hình máy chủ thư localhost đúng cách
Sử dụng một gói gửi thư khác
Bật thư tùy chỉnh của PHP. đăng nhập
Sử dụng API/SMTP với nhà cung cấp dịch vụ mail uy tín

Làm cách nào để gửi email bằng SMTP trong PHP?

Viết mã PHP để gửi email bằng Gmail SMTP .
Bước 1. Tải xuống thư viện PHPMailer từ liên kết github này. .
Bước 2. Viết mã PHP để tạo kết nối SMTP. .
Bước 3. Bao gồm các gói và tệp cho giao thức PHPMailer và SMTP. .
Bước 4. Khởi tạo PHP Mailer và đặt SMTP làm giao thức gửi thư

Làm cách nào để gửi email từ biểu mẫu liên hệ HTML bằng chức năng thư PHP?

Làm cách nào để gửi biểu mẫu liên hệ tới email bằng PHP? .
Tạo biểu mẫu liên hệ bằng HTML và CSS
Lưu trữ biểu mẫu HTML trên máy chủ lưu trữ web trực tiếp để viết tập lệnh PHP
Mở trình chỉnh sửa Mã VS của bạn
Kết nối trình chỉnh sửa Mã VS với máy chủ web trực tiếp bằng tiện ích mở rộng SFTP
Thay đổi phần mở rộng tệp của bạn từ

Trình gửi thư PHP có cần SMTP không?

Yêu cầu đối với PHPMailer . Việc bạn sử dụng máy chủ thư từ nhà cung cấp hay thiết lập máy chủ của riêng bạn là quyết định của bạn. Trình soạn thảo là trình quản lý gói cho PHP được khuyến nghị cài đặt tiện ích mở rộng PHP. You need an SMTP server to use PHPMailer. It is your decision whether you use the mail server from a provider or set up your own server. Composer is a package manager for PHP which is recommended to install the PHP extension.