PHP imap nhận ngày email

Bài đăng này là một phần của loạt bài về tải xuống email bằng cách sử dụng các hàm PHP IMAP. Mục tiêu cuối cùng của loạt bài này là trình bày cách xuất dữ liệu Google Analytics bằng email, sau đó sử dụng PHP để kết nối với máy chủ thư, tìm và tải xuống thư thích hợp rồi tải dữ liệu vào cơ sở dữ liệu. Bài đăng này xem xét cách tìm kiếm một thông báo email cụ thể bằng cách sử dụng các hàm PHP IMAP

Vòng qua các tin nhắn

Giải pháp rõ ràng nhất là lặp qua các tin nhắn và thực hiện so sánh chuỗi về người gửi và chủ đề, v.v., sau đó xử lý tin nhắn nếu nó phù hợp với tiêu chí

Đây là cách bạn sẽ làm điều này

$connection = imap_open($server, $login, $password);
$count = imap_num_msg($connection);
for($msgno = 1; $msgno <= $count; $msgno++) {

    $headers = imap_headerinfo($connection, $msgno);
    if( .. matching criteria here .. ) {
        call_a_function_to_do_something( .. parameters .. );
    }
   
}

Dòng đầu tiên kết nối với máy chủ thư; . Sau đó, tập lệnh lặp qua từng thư, lấy một bản sao của các tiêu đề và sau đó thực hiện điều gì đó nếu một số tiêu chí tìm kiếm phù hợp

Ví dụ: nếu bạn đang tìm kiếm một tin nhắn từ "chris@example. com" với chủ đề "đây là bài kiểm tra", bạn có thể tạo câu lệnh if() như thế này

if(strtolower($headers->subject) == 'this is a test'
    && strtolower($headers->fromaddress) == '[email protected]') {

Việc so sánh chuỗi được thực hiện bằng cách sử dụng strtolower() và hằng số có chữ thường để đảm bảo không có vấn đề về phân biệt chữ hoa chữ thường

Bạn cũng có thể sử dụng các biểu thức thông thường. Mục đích cuối cùng của những bài đăng này là tải xuống các tệp đính kèm Google Analytics và một chủ đề ví dụ là một cái gì đó dọc theo những dòng này. "Phân tích www. hộp công cụ điện. com 20090202-20090304 (Nội dung hàng đầu)"

Để trích xuất tên miền, từ ngày, đến ngày và chủ đề có thể tùy chỉnh, bạn có thể thực hiện việc này

preg_match('/Analytics (.*) (d{8})-(d{8}) ((.*))/i', 
    $headers->subject, $matches)

$matches được điền bằng các kết quả khớp từ biểu thức chính quy và trong trường hợp của ví dụ trên sẽ trả về giá trị này

Array
(
    [0] => Analytics www.electrictoolbox.com 20090202-20090304 (Top Content)
    [1] => www.electrictoolbox.com
    [2] => 20090202
    [3] => 20090304
    [4] => Top Content
)

imap_search là một chức năng tìm kiếm mạnh mẽ giúp bạn không phải lặp lại các thông báo như trong các ví dụ trên. Truyền cho nó kết nối và sau đó là một số tiêu chí như vậy để khớp với email trên

$result = imap_search($connection,
    'SUBJECT "Analytics www.electrictoolbox.com" FROM "[email protected]"');

Cách thức hoạt động của điều này là các tiêu chí là những thứ như CHỦ ĐỀ và TỪ và bạn đặt các giá trị phù hợp trong một chuỗi trích dẫn kép sau tên tiêu chí. Nó phải là một chuỗi trích dẫn kép (không phải là một trích dẫn đơn) nếu không nó sẽ không hoạt động. Có thể tìm thấy danh sách đầy đủ các tiêu chí trên trang hướng dẫn sử dụng imap_search của PHP

Các kết quả khớp được thực hiện theo kiểu không phân biệt chữ hoa chữ thường và sẽ khớp ở bất kỳ đâu trong chuỗi. Vì vậy, trong ví dụ trên 'SUBJECT" www. hộp công cụ điện. com"’, ”CHỦ ĐỀ "Phân tích www. hộp công cụ điện. com"’, v.v. sẽ phù hợp với chủ đề đầy đủ "Analytics www. hộp công cụ điện. com 20090202-20090304 (Nội dung hàng đầu)". Sau đó, bạn có thể cần xác thực thêm về chủ đề, v.v. trước khi xử lý thông báo

Hàm trả về một mảng các số thông báo mà sau đó có thể được lặp lại và các thông báo được xử lý như trong ví dụ sau

foreach($result as $msgno) {
    $headers = imap_fetchheader($connection, $msgno);
    if( .. any optional additional matching criteria here .. ) {
        call_a_function_to_do_something( .. parameters .. );
    }
}

Bài viết tiếp theo trong loạt bài này

Bây giờ tôi đã trình bày cách kết nối với hộp thư bằng cách sử dụng PHP IMAP, trích xuất tệp đính kèm từ thư và lặp lại tìm kiếm một thư cụ thể, tôi sẽ tổng hợp tất cả lại trong bài đăng tiếp theo để chỉ ra cách lấy tệp đính kèm email từ . Các bài đăng sau đây sẽ xem xét cách phân tích dữ liệu

Có vẻ như bạn đang sử dụng Internet Explorer 11 trở lên. Trang web này hoạt động tốt nhất với các trình duyệt hiện đại như các phiên bản mới nhất của Chrome, Firefox, Safari và Edge. Nếu bạn tiếp tục với trình duyệt này, bạn có thể thấy kết quả không mong muốn

  • Nhấp vào tab Xem
    PHP imap nhận ngày email
  • Sau đó nhấp vào Xem cài đặt
    PHP imap nhận ngày email
  • Trong hộp thoại Cài đặt Chế độ xem Nâng cao, bấm vào Định dạng Cột
    PHP imap nhận ngày email
  • Trong Các trường khả dụng ở bên trái, tô sáng Đã nhận
  • Từ menu Định dạng thả xuống (nhấp vào mũi tên xuống ở bên phải của trường định dạng), sau đó chọn cách bạn muốn nó hiển thị. Trong ví dụ dưới đây, định dạng được chọn sẽ hiển thị ngày và giờ
    PHP imap nhận ngày email
  • Nhấp vào OK
  • Sau đó Click OK lần nữa trên hộp thoại Advanced View Settings

Làm cách nào để nhận email bằng PHP và IMAP?

Bật Tiện ích mở rộng IMAP trong cài đặt PHP. .
Mở Gmail
Nhấp vào Cài đặt
Chọn tab Chuyển tiếp và POP/IMAP màu xanh lam
Chọn “Truy cập IMAP. ” và Bật nút radio IMAP
Nhấp vào Lưu thay đổi
Đừng quên bật quyền truy cập ứng dụng kém an toàn cho tài khoản Gmail

Làm cách nào để tìm nạp thư trong PHP?

Trước tiên, bạn cần mở luồng IMAP tới hộp thư. .
Mở Luồng IMAP. imap_open() $inbox = imap_open($mailbox, $username, $password) or die('Không thể kết nối với email. '. .
Nhận email. imap_search().
Tiêu đề của thư điện tử. .
Nội dung thư điện tử. .
Cấu trúc của tin nhắn