Thư PHP đột nhiên ngừng hoạt động

Việc tôi gặp khó khăn với tập lệnh 'biểu mẫu gửi email' đã xảy ra quá thường xuyên. Mọi thứ hiển thị đúng nhưng email được gửi bởi tập lệnh không bao giờ đến địa chỉ đích

Bài viết này hướng dẫn bạn các bước để khắc phục sự cố

E-mail. lai lịch

email là một trong những hệ thống liên lạc sớm nhất được phát triển trên internet. Mặc dù email vẫn là hệ thống liên lạc phổ biến nhất trên internet, thư rác email đã trở thành một vấn đề lớn

Khoảng 100 tỷ email rác được gửi mỗi ngày [vâng, không phải lỗi đánh máy; 100 tỷ, mỗi ngày. ]. Hơn 94% tất cả các email được gửi là thư rác. Mọi máy chủ email đều nhận được một phần công bằng trong số 100 tỷ đó và phải đối phó với sự tấn công của một lượng thư rác khổng lồ như vậy. Do đó, các máy chủ email [MTA. Mail Transfer Agents] đã trang bị cho mình các phương pháp để xem xét kỹ lưỡng các email và từ chối email nếu nghi ngờ thư là thư rác.

Đây là lý do tại sao tập lệnh của bạn nên soạn email cẩn thận để tránh thư bị từ chối.

Giả mạo trường 'Từ' và địa chỉ nguồn

Một thông điệp email có hai phần. một tiêu đề và chính thông điệp. Tiêu đề chứa một số thông tin nhận dạng. Trường 'Từ' là một trong các trường tiêu đề email. Mục đích của trường 'Từ' là để cho biết ai đã gửi email. Tuy nhiên, người gửi email có thể đặt trường 'Từ' thành bất kỳ địa chỉ nào mà anh ta chọn. Những kẻ gửi thư rác khai thác khía cạnh này của giao thức. Ví dụ: người gửi thư rác có thể gửi email làm cho nó có vẻ như là email đến từ security@bank. com và yêu cầu nạn nhân cung cấp chi tiết đăng nhập ngân hàng. Người gửi thư rác không cần truy cập vào máy chủ ngân hàng để thực hiện việc này. Thêm một “Từ. an ninh@ngân hàng. com” vào email sẽ khiến người dùng nghĩ rằng email đến từ ngân hàng. Để biết chi tiết, hãy xem giả mạo địa chỉ nguồn email

chữa bệnh. chỉ số chống nắng

Khung chính sách người gửi [SPF] đã được giới thiệu để ngăn chặn giả mạo địa chỉ nguồn email. Đây là cách nó làm việc. Giả sử một người gửi thư rác đang gửi cho bạn một tin nhắn giả mạo

  • Máy chủ email của bạn nhận được thư từ người gửi thư rác
  • Máy chủ email tìm kiếm địa chỉ 'Từ' trong tiêu đề email. Giả sử trường 'Từ' là 'bảo mật @ ngân hàng. com’
  • Máy chủ email của bạn yêu cầu bản ghi DNS của ngân hàng. com [nói một cách đơn giản, DNS dùng để phân giải một tên miền như ngân hàng. com đến một địa chỉ IP ]. Bản ghi DNS của miền có thể chứa bản ghi SPF. Các bản ghi SPF sẽ cho biết địa chỉ IP nào có thể gửi email thay cho nó. Hầu hết thời gian, nó sẽ chỉ là máy chủ thư chính [ví dụ. ngân hàng. com trong trường hợp này]. Vì địa chỉ IP của người gửi thư rác khác, email bị từ chối

Hãy tưởng tượng bạn nhận được một cú điện thoại và người gọi nói rằng anh ta đang gọi từ ngân hàng. Bạn có thể xác minh bằng cách tra cứu số điện thoại của cuộc gọi đến trong danh bạ điện thoại. Hệ thống SPF tuân theo cùng một phương pháp

Đặt trường 'Từ' bên phải

Có trường 'Từ' trong các email mà bạn đã gửi qua tập lệnh. Địa chỉ Từ phải thuộc về miền mà bạn đang chạy tập lệnh từ đó. Nếu tập lệnh của bạn đang chạy trên trang web của bạn. com thì địa chỉ Từ phải giống như someone@your-website. com

Mã PHP mẫu


$headers = "From: someone@your-website.com";
mail[$to,$subj,$body,$headers];

Điều gì sẽ xảy ra nếu bạn muốn có một số khác. com là địa chỉ từ? . com để chỉ ra rằng trang web của bạn. com có ​​thể gửi email thay cho người khác. com. Thấy. openspf. org để biết chi tiết

Trả lời khách truy cập đã gửi biểu mẫu

Khi gửi email từ tập lệnh 'biểu mẫu tới email', sẽ thuận tiện khi có địa chỉ email của khách truy cập trang web trong trường 'Từ'. Bạn có thể trả lời tin nhắn bằng cách chỉ cần nhấn nút 'Trả lời' trong ứng dụng email. Tuy nhiên, điều này có thể dẫn đến việc email không đến được với bạn

Ví dụ: giả sử đây là biểu mẫu gửi mã email


$visitor_email = $_POST['email'];

$headers = "From: $visitor_emailrn";
mail[$to,$subj,$body,$headers];

Bây giờ, nếu ai đó gửi địa chỉ email của họ dưới dạng 'ai đó@a-company. com’, khi máy chủ email nhận được thông báo email này, nó sẽ kiểm tra xem trang web của bạn có thể gửi email thay mặt cho một công ty hay không. com và cuối cùng từ chối email

Giải pháp thay thế phù hợp là sử dụng tiêu đề email 'Trả lời'. Đặt 'Từ' thành địa chỉ thuộc miền trang web của bạn và thêm tiêu đề 'Trả lời' với địa chỉ email của khách truy cập trang web

mã ví dụ


$headers = "From: name@your-website.com";
$headers .= "Reply-To: $visitor_email";
mail[$to,$subj,$body,$headers];

Hãy nhớ rằng bạn cần làm sạch tất cả các giá trị được sử dụng trong thuộc tính tiêu đề của mail[]

Hãy chắc chắn rằng php. ini được cấu hình đúng

Nếu bạn vẫn không nhận được email, vấn đề có thể nằm ở thiết lập PHP. Thư phải được cấu hình trong tệp cấu hình PHP php. ban đầu

Đoạn mã sau hiển thị cấu hình thư PHP điển hình [sử dụng sendmail]

[mail function]
; Setup for Linux systems
sendmail_path = /usr/sbin/sendmail -t
sendmail_from = me@myserver.com

Đoạn mã sau hiển thị cấu hình SMTP trong php. ban đầu

[mail function]
; Setup for Windows systems
SMTP = smtp.my.isp.net
sendmail_from = me@myserver.com

Lưu ý rằng bạn có thể cập nhật php. ini chỉ khi bạn đang chạy máy chủ web của riêng mình. Thay vào đó, nếu bạn đang lưu trữ trang web bằng dịch vụ lưu trữ web, hãy liên hệ với nhà cung cấp dịch vụ để cài đặt php mail ngay

Một tập lệnh đơn giản để kiểm tra cấu hình thư PHP → của bạn

Tải xuống tập lệnh email php này. Chỉnh sửa tệp và cập nhật các biến $from_add và $to_add. [xem hướng dẫn trong mã]. Tải tập lệnh lên trang web của bạn. truy cập trang. Bạn sẽ thấy một nút gửi trên trang. Nhấn nút gửi để gửi email cho chính bạn. Nếu bạn vẫn không nhận được email, hãy nhờ trợ giúp từ nhà cung cấp dịch vụ lưu trữ/quản trị viên mạng của bạn. Chỉ cho họ tập lệnh mẫu này không gửi được email

Tại sao email PHP của tôi không hoạt động?

Ví dụ: có thể do bạn thiếu các tham số cần thiết, có lỗi chính tả trong địa chỉ email của người nhận hoặc cần thiết lập chuyển tiếp SMTP. Out of all the possible options as to why your PHP mail[] isn't sending email, we found that most issues stem from Postfix being configured incorrectly.

Làm cách nào để kiểm tra xem chức năng thư có hoạt động hay không trong PHP?

để kiểm tra xem nó có đang gửi thư như dự kiến ​​hay không; . com"; $subject = "Kiểm tra email"; $message = "đây là chức năng kiểm tra thư trên máy chủ"; $sendMail = mail[$email, $subject, $message]; if[$sendMail] { echo "Email Sent Successfully"; } else { echo "Mail Failed"; } ?>

Làm cách nào để kiểm tra lỗi thư SMTP trong PHP?

Thử đặt chế độ SMTPDebug 3 và kiểm tra đầu ra . Trong trường hợp đó, hãy kiểm tra cài đặt tài khoản gmail để biết email bạn đang sử dụng để gửi thư. Bạn cần cho phép gửi thư.

Làm cách nào để kích hoạt chức năng thư trong PHP?

Thay đổi php. .
Mở php của bạn. ini bằng cách sử dụng bên dưới. .
Tìm kiếm [chức năng thư] trong tệp. .
Thêm chi tiết máy chủ thư của bạn vào tệp hoặc trong trường hợp bạn có một máy chủ, bạn có thể thay đổi nó [máy chủ thư có thể là của riêng bạn, tức là. .
Lưu/đóng php. tập tin ini

Chủ Đề