Các giải pháp về vấn đề nhận e-mail

Một phần của tài liệu Luận văn xây dựng ứng dụng gửi nhận email trên blackberry (Trang 81 - 84)

Chương 5: Các kĩ thuật xử lí trong ứng dụng

5.1 Các giải pháp về vấn đề nhận e-mail

Trong ứng dụng mail, việc nhận mail có thể được thực hiện thông qua 2 giao thức POP3 và IMAP, với các đặc điểm khác nhau của 2 giao thức này mà ta có 2 cách thức nhận mail cũng khác nhau:

5.1.1 Nhận mail với giao thức POP3:

Nhận xét:

Như đã đề cập ở trên, giao thức POP3 hỗ trợ ít lệnh do đó có nhiều hạn chế trong việc nhận mail. Cụ thể, POP3 không có lệnh nào để nhận biết được cấu trúc MIME của một e-mail và cũng không hỗ trợ khả năng tải một phần dữ liệu trong cấu trúc của mail về client. Do đó, khi làm việc với POP3, nếu muốn đọc nội dung của một mail, ta buộc phải tải toàn bộ nội dung của mail đó về. Điều này dẫn đến trường hợp phải tải luôn nội dung của các tập tin kèm theo mail đó. Nếu kích thước những tập tin này lớn và người dùng chỉ quan tâm đến nội dung của mail thì cũng không có cách nào cải thiện được quá trình nhận mail.

Hướng giải quyết:

• Nhận về thông tin tóm tắt của message:

Lệnh TOP trong POP3 cho phép nhận về toàn bộ phần header của mail và N dòng phần nội dung bên trong.

Nếu ta cho tham số N này có giá trị là 0 thì dữ liệu nhận về chỉ là nội dung phần header.

TOP <số thứ tự message> 0

Chương 6: các kĩ thuật xử lý trong ứng dụng

Nhờ vậy ta có thể sử dụng cách này để lấy về thông tin người gửi, tiêu đề đề hiển thị trong danh sách các email mà không phải tải toàn bộ nội dung của từng mail.

• Nhận về toàn bộ message:

Lệnh RETR trả về toàn bộ nội dung của message, bao gồm nội dung của các attachment. Nếu kích thước attachment này lớn, nếu bộ nhớ của thiết bị không đủ lớn có thể sẽ gây ra lỗi chương trình. Vấn đề đặt ra là có cách nào cải thiện vấn để này.

Hướng giải quyết được đề nghị là xây dựng hàm nhận dữ liệu đặc biệt. Khi nhận từng dòng dữ liệu trả về, ta kiểm tra để nhận biết đó là một attachment hay không. Ta sẽ lưu nội dung attachment này xuống một file tạm và thay nội dung của part tương ứng bằng định danh của file tạm này. Với cách giải quyết này, kích thước của một message lưu trong bộ nhớ chương trình sẽ không lớn và giải quyết được vấn đề trên.

Tuy nhiên, các dòng máy BlackBerry hiện nay có không gian bộ nhớ khá lớn, có thể lưu trữ được hầu hết các kích thước mà các server mail có thể hỗ trợ hiện nay, do đó ta có thể bỏ qua vấn đề này khi xây dựng ứng dụng.

5.1.2 Nhận mail với giao thức IMAP:

Nhận xét:

Với IMAP, tập hợp các lệnh nhiều hơn giúp ta có thể xác định được cấu trúc MIME của mail, cũng như tải về nội dung một phần trong cấu trúc đó. Việc nhận mail trở nên nhanh hơn so với giao thức POP3.

Hướng giải quyết:

Ta xây dựng nhận mail bằng IMAP theo hướng sau:

Nhận về header của mai để hiển thị trong danh sách: Lệnh FETCH cho phép ta tải về nội dung của một mail theo từng phần (address). Khi giá trị address là HEADER thì nội dung tải về là toàn bộ phần header của mail đó.

FETCH <số thứ tự message> BODY[HEADER]

Nhận về nội dung của mail mà không kèm theo nội dung của các tập tin đính kèm:

Đấu tiên ta lấy về thông tin cấu trúc MIME bằng cách sử dụng lệnh:

FETCH <số thứ tự message> (BODYSTRUCTURE)

Tiếp theo, ta sẽ tiến hành tự đóng gói một message tương tự như khi lấy toàn bộ thông tin của mail. Để làm được điều này ta sẽ duyệt qua cấu trúc MIME vừa nhận được, ta có thể biết được phần nào trong cấu trúc này là attachment cùng với thông tin tên tập tin đó. Bằng cách này ta sẽ lần lượt tải nội dung từng phần và gắn vào mail, nếu phát hiện phần chuẩn bị gắn vào thì ta sẽ bỏ qua không tải nội dung về, thay vào đó ta sẽ ghi thông tin có cấu trúc sau:

Attachment(1)(2)(3)[4]

Trong đó:

- (1): loại của phần dữ liệu đó

- (2): phần mở rộng cụ thể

- (3): dạng encode của dữ liệu

- (4): địa chỉ của phần đó trong cấu trúc MIME 5.1.3 Hiển thị nội dung một e-mail:

Mail được hiển thị luôn có cấu trúc MIME với nhiều phần (MultiPart). Các loại part có thể là Image, Audio, Video, Application, Text hoặc là một MultiPart khác. Với 2 giao thức POP3 và IMAP tùy có cách nhận dữ liệu khác nhau, song kết quả trả về cuối cùng vẫn là một cấu trúc dạng Message chung và có cách thức hiển thị như nhau:

Hiển thị thông tin chính:

Ta sẽ duyệt qua lần lượt tất cả các part trong message, nếu part đang xét không phải là một attachment (thường là kiểu TEXT) ta sẽ gắn thêm một field

Chương 6: các kĩ thuật xử lý trong ứng dụng

thông tin lên màn hình. Các đời máy BlackBerry hiện nay sử OS 5.0 có hỗ trợ BrowserField do đó trong phần xử lí hiển thị thông tin ta cũng kiểm tra xem nếu là multipart dạng alternative và có part dạng text/html thì ta ưu tiên hiển thị dạng HTML cho người dùng.

Với các part là attachment thì ta có cách xử lí để lưu thông tin attachment này.

Lưu tạm các attachment trong e-mail:

Trong mỗi màn hình hiển thị message, ta sẽ tạo một bảng lưu trữ thông tin các attachment, với key là tên của attachment và value là nội dung của attachment (POP3) hoặc định danh của attachment (IMAP), giá trị định danh này sẽ bị thay thế bằng nội dung của attachment khi người dùng chọn tải attachment về máy.

Lưu attachment:

Duyệt qua tất cả các trường trong bảng thông tin attachment. Với mỗi trường, lấy thông tin tên attachment, cho phép người dùng đổi tên và chọn đường dẫn lưu file. Kiểm tra giá trị của trường, nếu là nội dung attachment thì lưu xuống file; nếu là định danh thì ta dựa vào định danh này để tải nội dung attachment về lưu xuống máy.

Một phần của tài liệu Luận văn xây dựng ứng dụng gửi nhận email trên blackberry (Trang 81 - 84)

Tải bản đầy đủ (DOC)

(161 trang)
w