Ví dụ PHP IMAP

Bước đầu tiên để đọc email là học cách mở và đóng kết nối. Như bạn đã đoán ra, điều này được thực hiện thông qua các hàm imap_open[] và imap_close[]. Cái đầu tiên trong số hai cái này lấy một hộp thư để mở làm tham số đầu tiên, sau đó là tên người dùng và mật khẩu làm tham số hai và ba tương ứng. Tham số đầu tiên là nơi cú pháp kỳ lạ xuất hiện - đây là một ví dụ về imap_open[] đang hoạt động


Chạy tập lệnh đó, khi bạn đã thay đổi tên miền, tên người dùng và mật khẩu thành các giá trị hợp lệ, sẽ in ra nội dung như "Id tài nguyên #4". Nếu bạn không in được gì, điều đó có nghĩa là kết nối không thành công và bạn có thể cần kiểm tra xem mình đã nhập chính xác chưa

Khi bạn làm cho tập lệnh của mình hoạt động, bạn sẽ thấy rằng hàm imap_open[] trả về tài nguyên cho kết nối IMAP - về mặt kỹ thuật, đây được gọi là luồng IMAP. Điều này sẽ được lưu trữ để sử dụng sau này, vì vậy hãy đặt nó vào một biến chẳng hạn như $imap

Bây giờ, tham số đầu tiên của imap_open[] là nơi có thể xảy ra sự nhầm lẫn. Trong ví dụ trên, nó chỉ định kết nối đến máy chủ thư. máy chủ của bạn. com trên cổng 143, sau đó chọn thư mục INBOX. Các dấu ngoặc nhọn, { và }, là bắt buộc và không được bao gồm bất kỳ dấu cách nào bên trong chúng. Một số máy chủ IMAP có các hình thức kết nối khác nhau. Ví dụ: kết nối với Microsoft Exchange có thể yêu cầu bạn sử dụng "{mail. máy chủ của bạn. com. 143/imap}Hộp thư đến" và cũng cung cấp tên người dùng là "/". Ngoài ra, nếu bạn đang chạy máy chủ IMAP của mình bằng SSL, bạn có thể cần phải sử dụng "{mail. máy chủ của bạn. com. 993/ssl/novalidate-cert}INBOX". Tôi khuyên bạn nên sử dụng imap_open[] như trong ví dụ mã ở trên trừ khi bạn đặc biệt cần thay đổi nó

Khi bạn kết thúc kết nối, hãy gọi imap_close[] và chuyển biến tài nguyên kết nối IMAP làm tham số duy nhất của nó, như thế này


Khả năng kết nối và ngắt kết nối khỏi máy chủ thư không ấn tượng lắm, nhưng đó là một khởi đầu tốt - hãy đọc tiếp

Lưu ý của tác giả. Tốt nhất là chỉ định máy chủ theo địa chỉ IP của nó [chẳng hạn như 212. 192. 219. 29] trái ngược với tên miền, vì bạn có thể thấy nó nhanh hơn rất nhiều. Với mục đích của cuốn sách này, các tên miền được sử dụng vì chúng giúp cho việc đọc dễ dàng hơn nhiều.

Bạn muốn học PHP 7?

Hacking with PHP đã được cập nhật đầy đủ cho PHP 7 và hiện có sẵn dưới dạng PDF có thể tải xuống. Nhận hơn 1200 trang học PHP thực hành ngay hôm nay

Nếu điều này hữu ích, vui lòng dành chút thời gian để nói với những người khác về Hacking với PHP bằng cách tweet về nó

Một vài tuần trước, tôi đã đăng cách sử dụng các hàm PHP IMAP để tải xuống email từ máy chủ IMAP. Bài đăng này xem xét cách thực hiện tương tự nhưng tải xuống thư IMAP từ Gmail mà bạn cần kết nối trên một cổng khác và sử dụng SSL. Đầu ngày hôm nay, tôi đã đăng cách bật quyền truy cập thư IMAP trong Gmail, vì vậy bạn cần đảm bảo điều đó được thực hiện trước

Cách kết nối với máy chủ IMAP bình thường

Tóm tắt nhanh, đây là cách bạn kết nối với máy chủ thư IMAP bằng PHP, trong đó $server là tên của máy chủ thư IMAP [bao gồm {dấu ngoặc nhọn}. port và /flags], $login là tên đăng nhập của bạn và $password là mật khẩu của bạn

$connection = imap_open['$server', $login, $password];

Cách kết nối với máy chủ IMAP của Gmail

Gmail yêu cầu kết nối IMAP được thực hiện trên cổng 993 và đó phải là kết nối SSL. Tên máy chủ là imap. gmail. com. Do đó, để kết nối với Gmail IMAP bằng các hàm PHP IMAP bạn sẽ làm điều này

$server = '{imap.gmail.com:993/ssl}';
$connection = imap_open[$server, $login, $password];

Lưu ý rằng tên đăng nhập Gmail của bạn cũng bao gồm tên miền

Nếu bạn có @gmail. com địa chỉ email thì tên đăng nhập của bạn sẽ là e. g. 'địa chỉ email của tôi @ gmail. com’

Nếu bạn sử dụng Google Apps và lưu trữ thư miền của bạn bằng Gmail thì đó sẽ là địa chỉ email tài khoản của bạn. g. ‘chris@ví dụ. com’

IMAP hỗ trợ khái niệm nhiều hộp thư. Trong Gmail, nhãn của bạn trở thành hộp thư trong kết nối IMAP của bạn. Khi bạn kết nối lần đầu bằng cách sử dụng ở trên, bạn sẽ nhìn vào HỘP THƯ ĐẾN. Sau đó, có thể thay đổi sang một trong các hộp thư khác của bạn và đọc thư từ đó

Cách tải xuống email bằng IMAP từ Gmail

Ở giai đoạn này, việc tải thư xuống từ bất kỳ máy chủ IMAP nào cũng giống như vậy, vì vậy hãy tham khảo bài đăng khác của tôi để biết cách sử dụng các hàm PHP IMAP để tải xuống email từ máy chủ IMAP

 

 

Cập nhật ngày 12 tháng 3 năm 2009 – cờ novalidate-cert

Gần đây tôi đã chuyển từ CentOS 5 sang PHP 5. 1. 6 đến Debian 5 với PHP 5. 2. 6 trong môi trường phát triển của tôi [và cũng sẽ được sản xuất vào tuần tới]. Tập lệnh kiểm tra tương tự của tôi sẽ không còn kết nối với Gmail nữa, thay vào đó, lỗi xảy ra với

Warning: imap_open[]: Couldn't open stream {imap.gmail.com:993/ssl}

Sau khi thử nghiệm nhiều loại cờ khác nhau, tôi phát hiện ra rằng mình cần thêm cờ 'novalidate-cert' để chuỗi máy chủ trông như thế này

$server = '{imap.gmail.com:993/ssl/novalidate-cert}';

Bài đăng tiếp theo trong loạt bài này sẽ xem xét cách mở các hộp thư khác bằng PHP IMAP, sử dụng hộp thư và nhãn của Gmail làm ví dụ

Cập nhật ngày 13 tháng 3 năm 2009 – sự cố tường lửa

Tôi đã nhận được email từ Jesse Fisher, người đang gặp sự cố khi kết nối với Gmail bằng các hàm PHP IMAP và nhận được thông báo lỗi "Không thể kết nối với gmail-imap. l. Google. com,993. Kết nối bị từ chối"

Hóa ra cổng 993 đã bị chặn bởi tường lửa trên máy chủ mà tập lệnh PHP đang chạy trên đó. Khi nhà cung cấp dịch vụ lưu trữ mở cổng đó, sự cố đã biến mất và Jesse có thể kết nối

Nếu bạn gặp lỗi như thế này khi kết nối với máy chủ thư bằng các hàm PHP IMAP thì việc kiểm tra cài đặt tường lửa bên ngoài là một điều cần được xem xét

Làm cách nào để sử dụng IMAP trong PHP?

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 để nhận email bằng PHP và IMAP?

Giống như nhiều tính năng trong PHP, bạn bắt đầu bằng cách mở kết nối và lấy một tay cầm. $mail = imap_open['{mail. người phục vụ. com. 143}', 'tên người dùng', 'mật khẩu']; . người phục vụ. com trên cổng 143. Nó cũng chuyển tên người dùng và mật khẩu làm đối số thứ hai và thứ ba

Làm cách nào để sử dụng IMAP với Gmail trong PHP?

Cấu hình IMAP trong Môi trường PHP và Gmail .
Cài đặt thư viện PHP IMAP. .
Bật phần mở rộng thư viện IMAP trong tệp cấu hình PHP, xóa dấu chấm phẩy [;] ở đầu dòng. .
Tăng giới hạn cho chỉ thị max_execution_time trong php. tập tin ini
Khởi động lại apache để những thay đổi này có hiệu quả

Làm cách nào để đọc email từ Outlook bằng PHP?

Cách đọc email bằng PHP .
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

Chủ Đề