Là phương pháp chuyển mã sử dụng các kí tự in được để chuyển dữ liệu dạng
8-bit qua các đường đi chỉ hỗ trợ 7-bit. Phương pháp này ánh xạ một byte bất kì thành
một dãy các kí tự ASCII.
Cách chuyển đổi: Bất kì byte nào sẽ được ánh xạ thành 3 kí tự (bắt đầu bằng
dấu =, theo sau là 2 kí tự hexa). Những kí tự in được (33-60 và 62-126) không cần
encode. Dấu = (mã 61) được encode thành =3D. Dấu TAB và SPACE được encode
thành =09 và =20. Dấu xuống dòng được encode thành =0D=0A.
133 trang |
Chia sẻ: lylyngoc | Lượt xem: 2917 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Nghiên cứu và xây dựng ứng dụng gửi nhận E-Mail trên điện thoại blackberry, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ình thiết bị.
Chương 7: Phân tích và thiết kế
89
Dòng sự kiện:
Dòng sự kiện chính
1. Người dùng chọn E-mail trong danh sách E-mail.
2. Thiết bị kết nối với server và lấy nội dung E-mail.
3. Thiết bị hiển thị nội dung E-mail lên màn hình.
Các dòng sự kiện khác
2a. Nếu lấy nội dung E-mail bị lỗi thì hiển thị lỗi cho người dùng.
3a. Nếu hiển thị nội dung E-mail không được thì hiển thị lỗi cho
người dùng.
Các yêu cầu đặc biệt:
Không có
Trạng thái hệ thống khi bắt đầu Use-case:
Phải có 1 mail được chọn.
Chương trình đang kết nối với server.
Trạng thái hệ thống khi kết thúc Use-case:
Thiết bị hiển thị nội dung E-mail lên màn hình.
Điểm mở rộng:
Save attachment: Lưu trữ tập tin đính kèm E-mail.
Delete E-mail: Xóa E-mail đang đọc.
7.4.3 Manage Accounts:
Tóm tắt:
Tác nhân: Người sử dụng chương trình
Use-case này quản lý các cấu hình E-mail có sẵn
Dòng sự kiện:
Dòng sự kiện chính
1. Lấy danh sách cấu hình E-mail từ hệ thống.
2. Hiển thị danh sách cấu hình E-mail cho người dùng chọn
Các dòng sự kiện khác
1a. Nếu danh sách cấu hình E-mail trống thì thông báo cho người
dùng.
Các yêu cầu đặc biệt:
Không có
Chương 7: Phân tích và thiết kế
90
Trạng thái hệ thống khi bắt đầu Use-case:
Không có
Trạng thái hệ thống khi kết thúc Use-case:
Danh sách cấu hình E-mail hiển thị lên màn hình thiết bị.
Điểm mở rộng:
Delete Account: Xóa cấu hình E-mail được chọn.
Update Account: cập nhật thông tin cấu hình E-mail được chọn.
New Account: Thêm cấu hình E-mail mới.
7.4.4 Compose E-mail:
Tóm tắt:
Tác nhân: Người sử dụng chương trình
Use-case này cho phép người dùng soạn thảo E-mail và gởi E-mail cho một
hay nhiều địa chỉ E-mail.
Dòng sự kiện:
Dòng sự kiện chính
1. Lấy các cấu hình E-mail có sẵn hiển thị cho người dùng.
2. Người dùng chọn cấu hình E-mail để gởi thư đi, điền đầy đủ
thông tin trong màn hình soạn thảo.
3. Người dùng chọn gởi mail đi.
4. Chương trình kết nối với Server dựa trên cấu hình E-mail.
5. Chương trình đóng gói E-mail và gởi đi.
6. Hiển thị thông báo cho người dùng nếu mail được gởi đi.
Các dòng sự kiện khác
1a. Nếu không có cấu hình E-mail thì thông báo cho người dùng.
2a. Người dùng chọn thêm địa chỉ E-mail từ sổ địa chỉ:
1. Lấy số địa chỉ trong máy.
2. Hiển thị sổ địa chỉ cho người dùng chọn.
3. Thêm địa chỉ người dùng chọn vào danh sách địa chỉ gởi
đi.
2b. Người dụng chọn sử dụng mẫu mail(Template):
1. Lấy danh sách mẫu mail có sẵn.
2. Hiển thị danh sách mẫu mail cho người dùng chọn.
3. Thêm mẫu mail được chọn vào nội dung mail.
4a. Nếu không thể kết nối với Server thì hiển thị lỗi cho người
dùng.
Chương 7: Phân tích và thiết kế
91
5a. Nếu không thể gởi mail thì hiển thị lỗi cho người dùng.
Các yêu cầu đặc biệt:
Không có
Trạng thái hệ thống khi bắt đầu Use-case:
Danh sách cấu hình E-mail phải có ít nhất 1 cấu hình E-mail.
Trạng thái hệ thống khi kết thúc Use-case:
Mail của người dùng được gởi đi.
Điểm mở rộng:
Add attachment: Thêm tập tin đính kèm trong quá trình gởi mail.
7.4.5 Manage Configuration:
Tóm tắt:
Tác nhân: Người sử dụng chương trình.
Use-case này cho phép người dùng cấu hình các thông tin chung của chương
trình như ngôn ngữ, sử dụng wifi, tự động nhận mail.v.v.
Dòng sự kiện:
Dòng sự kiện chính
1. Lấy cấu hình có sẵn và hiển thị lên cho người dùng.
2. Người dùng sửa cấu hình.
3. Lưu trữ cấu hình và áp dụng cấu hình cho chương trình.
Các dòng sự kiện khác
1a. Nếu không có cấu hình có sẵn thì sử dụng cấu hình mặc định,
hiển thị lên cho người dùng.
3a. Nếu không thể lưu trữ cấu hình hoặc thông tin cấu hình sai thì
hiển thị lỗi cho người dùng.
Các yêu cầu đặc biệt:
Không có.
Trạng thái hệ thống khi bắt đầu Use-case:
Không có.
Trạng thái hệ thống khi kết thúc Use-case:
Cấu hình được lưu trữ và áp dụng cho chương trình.
Chương 7: Phân tích và thiết kế
92
Điểm mở rộng:
Auto Receive Mail: Chọn cấu hình E-mail muốn tự động nhận
mail và áp dụng cho chương trình.
7.4.6 Show About & Help
Tóm tắt:
Tác nhân: Người sử dụng chương trình.
Use-case này hiển thị thông tin về chương trình và phần giúp đỡ người dùng.
Dòng sự kiện:
Dòng sự kiện chính
1. Lấy thông tin về chương trình và phần giúp đỡ người
dùng từ hệ thống.
2. Hiển thị thông tin về chương trình và phần giúp đỡ lên
màn hình thiết bị.
Các dòng sự kiện khác
Không có
Các yêu cầu đặc biệt:
Không có
Trạng thái hệ thống khi bắt đầu Use-case:
Không có
Trạng thái hệ thống khi kết thúc Use-case:
Thông tin về chương trình và phần giúp đỡ được hiển thị lên màn
hình.
Điểm mở rộng:
Không có
7.4.7 Manage Template
Tóm tắt:
Tác nhân: Người sử dụng chương trình.
Use-case này lấy danh sách các mẫu E-mail trong hệ thống và hiển thị cho
người dùng.
Dòng sự kiện:
Dòng sự kiện chính
1. Chương trình lấy danh sách các mẫu E-mail trong hệ thống.
Chương 7: Phân tích và thiết kế
93
2. Hiển thị các mẫu E-mail lên màn hình thiết bị.
Các dòng sự kiện khác
1a. Nếu danh sách mẫu E-mail trống thì hiển thị thông báo cho
người dùng.
Các yêu cầu đặc biệt:
Không có
Trạng thái hệ thống khi bắt đầu Use-case:
Không có
Trạng thái hệ thống khi kết thúc Use-case:
Danh sách các mẫu E-mail có sẵn được hiển thị lên màn hình
thiết bị.
Điểm mở rộng:
Delete Template: Xóa mẫu E-mail được chọn.
Update Template: Cập nhật mẫu E-mail được chọn.
New Template: Thêm một mẫu E-mail mới.
7.4.8 Delete E-mail:
Tóm tắt:
Tác nhân: Người sử dụng chương trình.
Use-case này cho phép người dùng xóa một E-mail được chọn trong danh sách
mail.
Dòng sự kiện:
Dòng sự kiện chính
1. Người dùng chọn hoặc đọc E-mail.
2. Người dùng chọn xóa E-mail.
3. Chương trình kết nối với server để xóa E-mail.
4. Chương trình xóa E-mail ra khỏi server và chương trình.
5. Chương trình hiển thị thông báo cho người dùng.
Các dòng sự kiện khác
1a. Nếu E-mail không tồn tại thì thông báo cho người dùng.
3a. Nếu không thể kết nối với Server thì thông báo cho người
dùng.
4a. Nếu không thể xóa E-mail thì hiển thị thông báo cho người
dùng.
Chương 7: Phân tích và thiết kế
94
Các yêu cầu đặc biệt:
Không có
Trạng thái hệ thống khi bắt đầu Use-case:
Thiết bị phải kết nối Internet.
Phải có ít nhất 1 cấu hình E-mail đang được lựa chọn.
Thiết bị đang kết nối với server mà cấu hình E-mail đã cấu hình.
Trạng thái hệ thống khi kết thúc Use-case:
E-mail được chọn bị xóa khỏi Server và chương trình.
Điểm mở rộng:
Không có
7.4.9 Save Attachment:
Tóm tắt:
Tác nhân: Người sử dụng chương trình.
Use-case này cho phép người sử dụng lưu tập tin đính kèm trong một E-mail
vào bộ nhớ máy.
Dòng sự kiện:
Dòng sự kiện chính
1. Chương trình đọc E-mail và tìm tập tin đính kèm.
2. Nếu tồn tại tập tin đính kèm thì tải tập tin đính kèm về.
3. Hiển thị màn hình cho người dùng chọn đường dẫn lưu trữ.
4. Ghi tập tin đính kèm vào đường dẫn mà người dùng chọn.
5. Hiển thị thông báo cho người dùng.
Các dòng sự kiện khác
1a. Nếu E-mail không có tập tin đính kèm thì không thể thực hiện
chức năng này.
2a. Nếu không thể tải tập tin đính kèm thì hiển thị lỗi cho người
dùng.
4a. Nếu không thể ghi tập tin đính kèm vào bộ nhớ máy thì hiển
thị lỗi cho người dùng.
Các yêu cầu đặc biệt:
Không có
Trạng thái hệ thống khi bắt đầu Use-case:
Người dùng đang đọc một E-mail trong danh sách E-mail.
Chương 7: Phân tích và thiết kế
95
Chương trình đang kết nối với server được cấu hình trong cấu
hình E-mail hiện tại.
Trạng thái hệ thống khi kết thúc Use-case:
Tập tin đính kèm được tải và lưu trữ trong bộ nhớ máy.
Điểm mở rộng:
Không có
7.4.10 Add Attachment:
Tóm tắt:
Tác nhân: Người sử dụng chương trình
Use-case này cho phép người dùng đính kèm một tập tin từ bộ nhớ máy để gởi
kèm theo E-mail.
Dòng sự kiện:
Dòng sự kiện chính
1. Người dùng chọn tập tin từ bộ nhớ máy.
2. Chương trình đọc và ghi thông tin tập tin vào nội dung E-
mail.
Các dòng sự kiện khác
2a. Nếu không thể đọc tập tin thì hiển thị lỗi cho người dùng.
Các yêu cầu đặc biệt:
Không có.
Trạng thái hệ thống khi bắt đầu Use-case:
Người dùng đang trong màn hình soạn thảo E-mail.
Trạng thái hệ thống khi kết thúc Use-case:
Tập tin được đính kèm trong nội dung E-mail để gởi đi.
Điểm mở rộng:
Không có.
7.4.11 Auto Receive E-mail:
Tóm tắt:
Tác nhân: Người sử dụng chương trình.
Use-case này cho phép người dụng lựa chọn một địa chỉ E-mail trong danh
sách cấu hình E-mail để chương trình tự động nhận E-mail khi có E-mail mới.
Chương 7: Phân tích và thiết kế
96
Dòng sự kiện:
Dòng sự kiện chính
1. Người dùng chọn tự động nhận mail.
2. Chương trình lấy cấu hình E-mail từ hệ thống và hiển thị lên
cho người dùng chọn.
3. Người dùng chọn cấu hình E-mail.
4. Chương trình lưu trữ và áp dụng cho chương trình.
5. Chương trình tự động lấy mail mới theo chu kỳ nhất định và
hiển thị thông báo cho người dùng.
Các dòng sự kiện khác
2a. Nếu không có cấu hình E-mail nào thì không áp dụng tự động
nhận mail.
Các yêu cầu đặc biệt:
Không có
Trạng thái hệ thống khi bắt đầu Use-case:
Người dùng đang ở trong màn hình chỉnh sửa tùy chọn.
Phải tồn tại ít nhất 1 cấu hình E-mail cho phép chế độ tự động
nhận mail.
Trạng thái hệ thống khi kết thúc Use-case:
Chương trình tự động nhận mail mới theo một chu kỳ nhất định.
Điểm mở rộng:
Không có
7.4.12 Search E-mail:
Tóm tắt:
Tác nhận: Người sử dụng chương trình
Use-case này cho phép người dùng tìm kiếm E-mail trong một hộp thư đã được
cấu hình sẵn trong danh sách cấu hình E-mail.
Dòng sự kiện:
Dòng sự kiện chính
1. Người dùng điền nội dung tìm kiếm thư.
2. Chương trình kết nối với server E-mail hiện tại và tìm kiếm
thư.
3. Chương trình hiển thị kết quả lên màn hình thiết bị.
Các dòng sự kiện khác
1a. Nếu nội dung tìm kiếm sai thì hiển thị lỗi cho người dùng.
Chương 7: Phân tích và thiết kế
97
2a. Nếu không thể tìm kiếm thư thì hiển thị lỗi cho người dùng.
Các yêu cầu đặc biệt:
Không có
Trạng thái hệ thống khi bắt đầu Use-case:
Người dùng đang trong màn hình đọc E-mail.
Chương trình phải đang kết nối với Server E-mail hiện tại.
Trạng thái hệ thống khi kết thúc Use-case:
Kết quả tìm kiếm được hiển thị lên màn hình thiết bị.
Điểm mở rộng:
Không có
7.4.13 Add Account:
Tóm tắt:
Tác nhân: Người sử dụng chương trình.
Use-case này cho phép người dùng thêm một cấu hình E-mail vào danh sách
cấu hình E-mail.
Dòng sự kiện:
Dòng sự kiện chính
1. Người dùng điền thông tin cấu hình E-mail.
2. Chương trình thêm cấu hình E-mail vào danh sách cấu hình
E-mail có sẵn.
Các dòng sự kiện khác
2a. Nếu thông tin cấu hình bị sai hoặc không thể thêm cấu hình
E-mail thì hiển thị lỗi cho người dùng.
Các yêu cầu đặc biệt:
Không có
Trạng thái hệ thống khi bắt đầu Use-case:
Thông tin cấu hình E-mail phải chính xác.
Trạng thái hệ thống khi kết thúc Use-case:
Cấu hình E-mail được thêm vào danh sách cấu hình E-mail.
Điểm mở rộng:
Không có
Chương 7: Phân tích và thiết kế
98
7.4.14 Delete Account:
Tóm tắt:
Tác nhân: Không có.
Use-case này cho phép người dùng xóa một cấu hình E-mail từ danh sách cấu
hình E-mail có sẵn trong hệ thống.
Dòng sự kiện:
Dòng sự kiện chính
1. Người dùng chọn cấu hình E-mail cần xóa trong danh sách
cấu hình E-mail.
2. Chương trình xóa cấu hình E-mai ra khỏi hệ thống.
3. Chương trình hiển thị thông báo lên cho người dùng.
Các dòng sự kiện khác
1a. Nếu không có cấu hình E-mail nào thì hiển thị thông báo cho
người dùng.
Các yêu cầu đặc biệt:
Không có
Trạng thái hệ thống khi bắt đầu Use-case:
Phải tồn tại ít nhất 1 cấu hình E-mail.
Trạng thái hệ thống khi kết thúc Use-case:
Cấu hình E-mail bị xóa khỏi danh sách cấu hình E-mail.
Điểm mở rộng:
Không có
7.4.15 Update Account:
Tóm tắt:
Tác nhân: Người sử dụng chương trình.
Use-case này cho phép người dùng cập nhật thông tin của một cấu hình E-mail
có sẵn.
Dòng sự kiện:
Dòng sự kiện chính
1. Lấy cấu hình E-mail từ hệ thống và hiển thị thông tin lên màn
hình thiết bị.
2. Người dùng chỉnh sửa cấu hình E-mail.
Chương 7: Phân tích và thiết kế
99
3. Chương trình cập nhật thông tin cấu hình E-mail vào danh
sách cấu hình E-mail.
Các dòng sự kiện khác
1a. Nếu không thể lấy thông tin cấu hình E-mail thì lấy thông tin
cấu hình E-mail mặc định.
3a. Nếu không thể cập nhật thông tin cấu hình E-mail thì hiển thị
lỗi cho người dùng.
Các yêu cầu đặc biệt:
Không có
Trạng thái hệ thống khi bắt đầu Use-case:
Phải có một cấu hình E-mail đang được chọn.
Thông tin cấu hình E-mail phải chính xác.
Trạng thái hệ thống khi kết thúc Use-case:
Cấu hình E-mail được cập nhật trong danh sách cấu hình E-mail.
Điểm mở rộng:
Không có
7.4.16 Add Template:
Tóm tắt:
Tác nhân: Người sử dụng chương trình.
Use-case này cho phép người dùng thêm một mẫu E-mail vào danh sách mẫu
E-mail.
Dòng sự kiện:
Dòng sự kiện chính
1. Người dùng điền thông tin mẫu E-mail.
2. Chương trình thêm mẫu E-mail vào danh sách mẫu E-mail có
sẵn.
Các dòng sự kiện khác
2a. Nếu thông tin mẫu E-mail bị sai hoặc không thể thêm mẫu E-
mail thì hiển thị lỗi cho người dùng.
Các yêu cầu đặc biệt:
Không có
Trạng thái hệ thống khi bắt đầu Use-case:
Thông tin mẫu E-mail phải chính xác.
Chương 7: Phân tích và thiết kế
100
Trạng thái hệ thống khi kết thúc Use-case:
Mẫu E-mail được thêm vào danh sách mẫu E-mail.
Điểm mở rộng:
Không có
7.4.17 Delete Template:
Tóm tắt:
Tác nhân: Không có.
Use-case này cho phép người dùng xóa một mẫu E-mail từ danh sách mẫu E-
mail có sẵn trong hệ thống.
Dòng sự kiện:
Dòng sự kiện chính
1. Người dùng chọn mẫu E-mail cần xóa trong danh sách mẫu
E-mail.
2. Chương trình xóa mẫu E-mai ra khỏi hệ thống.
3. Chương trình hiển thị thông báo lên cho người dùng.
Các dòng sự kiện khác
1a. Nếu không có mẫu E-mail nào thì hiển thị thông báo cho
người dùng.
Các yêu cầu đặc biệt:
Không có
Trạng thái hệ thống khi bắt đầu Use-case:
Phải tồn tại ít nhất 1 mẫu E-mail.
Trạng thái hệ thống khi kết thúc Use-case:
Cấu hình E-mail bị xóa khỏi danh sách mẫu E-mail.
Điểm mở rộng:
Không có
7.4.18 Update Template:
Tóm tắt:
Tác nhân: Người sử dụng chương trình.
Use-case này cho phép người dùng cập nhật thông tin của một Mẫu E-mail có
sẵn.
Chương 7: Phân tích và thiết kế
101
Dòng sự kiện:
Dòng sự kiện chính
1. Lấy Mẫu E-mail từ hệ thống và hiển thị thông tin lên màn
hình thiết bị.
2. Người dùng chỉnh sửa Mẫu E-mail.
3. Chương trình cập nhật thông tin Mẫu E-mail vào danh sách
Mẫu E-mail.
Các dòng sự kiện khác
1a. Nếu không thể lấy thông tin Mẫu E-mail thì lấy thông tin Mẫu
E-mail mặc định.
3a. Nếu không thể cập nhật thông tin Mẫu E-mail thì hiển thị lỗi
cho người dùng.
Các yêu cầu đặc biệt:
Không có
Trạng thái hệ thống khi bắt đầu Use-case:
Phải có một Mẫu E-mail đang được chọn.
Thông tin Mẫu E-mail phải chính xác.
Trạng thái hệ thống khi kết thúc Use-case:
Mẫu E-mail được cập nhật trong danh sách Mẫu E-mail.
Điểm mở rộng:
Không có
7.5 Thiết kế kiến trúc:
7.5.1 Mô hình hoạt động:
Hình 7.2 – Mô hình hoạt động của ứng dụng
• Ứng dụng chạy trên điện thoại BlackBerry. Ứng dụng viết bằng ngôn ngữ Java,
sau khi biên dịch sẽ tạo ra file *.cod.
Chương 7: Phân tích và thiết kế
102
• Ứng dụng kết nối với các mail server thông qua Internet, sử dụng các giao thức
SMTP, POP3 và IMAP.
• Có thể thiết lập kênh truyền với SSL hay TLS.
• Sau khi kết nối, ứng dụng sẽ giao tiếp với server bằng các lệnh để đọc e-mail, gửi
e-mail, xóa e-mail, ...
7.5.2 Kiến trúc phía ứng dụng BlackBerry:
Hình 7.3 – Kiến trúc thành phần ứng dụng phía Client
Kiến trúc phía Client bao gồm các thành phần:
Thành phần nhận e-mail (receive e-mail component):
Bao gồm các lớp hỗ trợ việc nhận e-mail và hiển thị cho người dùng.
Thành phần gửi e-mail (send e-mail component):
Receive E-mail
Component
Send E-mail
Component
Connection Component
Configuration & Support
Component
Data Store
Component
Chương 7: Phân tích và thiết kế
103
Bao gồm các lớp hỗ trợ việc soạn thảo và gửi e-mail đến các địa chỉ.
Thành phần kết nối (connection component):
Bao gồm các lớp thực hiện việc kết nối, gửi /nhận dữ liệu trên mạng giữa client
và server.
Thành phần quản lý cấu hình và hỗ trợ (Configuration & Support Component):
Bao gồm các lớp thực hiện chức năng quản lý cấu hình ứng dụng, lưu file, đính
kèm file, ...
Thành phần lưu trữ thông tin (Data Store Component):
Các lớp chứa thông tin và lưu trữ thông tin trên điện thoại
7.6 Thiết kế lớp:
7.6.1 Các lớp dùng chung:
Hình 7.4 – Các lớp quản lý màn hình
Chương 7: Phân tích và thiết kế
104
7.6.2 Thành phần gởi & nhận e-mail:
Hình 7.5 – Các thành phần lưu trữ và xử lý Message
Hình 7.6 – Sơ đồ các lớp quản lý E-mail
Chương 7: Phân tích và thiết kế
105
7.6.3 Thành phần quản lý cấu hình và lưu trữ:
Hình 7.7 – Thành phần các lớp quản lý cấu hình và lưu trữ
7.7 Thiết kế xử lí:
7.7.1 Nhận e-mail:
Hình 7.8 – Quá trình nhận E-mail bằng giao thức IMAP
Chương 7: Phân tích và thiết kế
106
Hình 7.9 - Quá trình nhận E-mail bằng giao thức POP
Hình 7.10 – Xử lý và hiển thị nội dung E-mail
Chương 7: Phân tích và thiết kế
107
Hình 7.11 – Xử lý Attachment trong E-mail
7.7.2 Gửi e-mail:
Hình 7.12 – Đóng gói và gởi E-mail
Chương 7: Phân tích và thiết kế
108
7.7.3 Trạng thái chuyển đổi của chương trình
Hình 7.13 - Các trạng thái chuyển đổi của chương trình
Chương 8: Cài đặt và thử nghiệm
109
Chương 8: Cài đặt và thử nghiệm
8.1 Môi trường phát triển:
Ứng dụng gởi và nhận mail trên điện thoại BlackBerry được phát triển sử dụng
các công cụ và môi trường sau:
Công cụ phân tích và thiết kế: Star UML v5.0
Môi trường cài đặt ứng dụng: Research In Motion OS.
Môi trường lập trình: Eclipse và BlackBerry API Plug-in cho Eclipse.
Môi trường thử nghiệm và cài đặt: Máy ảo BlackBerry 9000, 9550, 9700.
8.2 Cài đặt:
8.2.1 Yêu cầu phần mềm:
Yêu cầu phần mềm:
Tập tin .alx và .cod để cài đặt chương trình.
Hệ điều hành Research In Motion phiên bản 5.0 trở lên.
Chương trình quản lý thiết bị của Research In Motion: BlackBerry Desktop
Manager.
8.2.2 Yêu cầu phần cứng:
Yêu cầu phần cứng:
Thiết bị BlackBerry đang sử dụng hệ điều hành Research In Motion phiên bản
5.0 trở lên.
Cable mini USB hoặc loại cable phù hợp để kết nối thiết bị vào máy tính.
Máy tính để lưu trữ và cài đặt chương trình.
8.2.3 Hướng dẫn cài đặt:
Sau khi build chương trình, chương trình sẽ phát sinh cho người dùng tập tin
.alx. Để cài đặt trên máy thật, thực hiện các bước sau:
1. Kết nối thiết bị với máy tính.
2. Khởi động chương trình BlackBerry Desktop Manager.
Chọn Application Loader như hình:
Chương 8: Cài đặt và thử nghiệm
110
Hình 8.1 – Giao diện BlackBerry Desktop Manager
3. Chọn Add/Remove Application, chọn Start, chương
trình BlackBerry Desktop Manager sẽ hiện ra danh sách các
chương trình đã cài trong máy. Để cài chương trình mới. Chọn
Browse.. Lựa chọn tập tin .alx đã build ở trên, nhấn ok. Chọn
Next và bắt đầu cài đặt. Thiết bị sẽ tự khởi động lại, quá trình
cài đặt hoàn tất.
Hình 8.2 – Danh sách chương trình trong thiết bị
8.3 Thử nghiệm:
Chương trình gởi và nhận mail trên BlackBerry thử nghiệm trên máy ảo giả lập
cho ra các kết quả thử nghiệm sau:
Chương 8: Cài đặt và thử nghiệm
111
STT Tính năng thử nghiệm Đánh giá
1 Khả năng kết nối mạng Tốc độ kết nối ổn định, tùy thuộc vào mạng
sử dụng.
2 Nhân và gởi dữ liệu Tốc độ truyền dẫn dữ liệu tương đối nhanh.
3 Tiêu thụ bộ nhỏ Chương trình khởi động chiếm dưới 500 KB
bộ nhớ, tương đối thập và nằm trong phạm vi
cho phép của một chương trình BlackBerry.
Không bị quả tải đối với các máy đời cũ, bộ
sử lý yếu.
4 Lưu trữ bộ nhớ Chương trình lưu trữ các thông tin của
chương trình và dữ liệu dùng để sử dụng
chiếm ít, tăng dần khi người sử dụng tăng dữ
liệu lên. Dữ liệu lưu trữ không bị xóa trong
quá trình khởi động lại máy, dữ liệu lưu trữ
chỉ bị xóa khi Master Reset máy – Làm mới
lại hệ điều hành.
5 Tốc độ hiển thị hình ảnh Tốc độ hiển thị hình ảnh nhanh, đầy đủ.
6 Nhận mail Chương trình nhận mail đầy đủ các thông tin
và tất cả các E-mail trong hộp mail. Chức
năng phân trang đầy đủ.
7 Gởi mail Chương trình đóng gói mail tốc độ khá
nhanh. Tốc độ gởi mail tùy thuộc vào đường
truyền mạng đang sử dụng. Khi gởi mail
bằng mẫu E-mail(Template) tốc độ gởi sẽ
chậm hơn do cần phải thực hiện nhiều lần.
8 Quản lý cấu hình Chương trình quản lý và lưu trữ các cấu hình
E-mail đầy đủ, cho phép người sử dụng
thêm, xóa, sửa các thông tin trong cấu hình.
9 Quản lý mẫu E-mail Chương trình quản lý và lưu trữ các mẫu E-
mail đầy đủ, lưu trữ các mẫu E-mail trong bộ
nhớ máy để sử dụng lần sau, cho phép người
sử dụng thêm, xóa, sửa các thông tin của
mẫu E-mail.
10 Quản lý cấu hình Chương trình quản lý cấu hình đây đủ, có lưu
trữ trong bộ nhớ máy để tải lại vào lần sử
dụng tiếp theo.
11 Tự động nhận mail Tự động nhận mail nhanh, hiển thị chính xác
số mail chưa được đọc. Cho phép người
dùng đọc mail mới ngay lập tức.
12 Hiển thị ngôn ngữ Chương trình cho phép hiển thị ngôn ngữ
tiếng Anh và tiếng Việt. Chuyển đổi ngôn
ngữ để dàng trong phần cấu hình, việc
chuyển đổi ngôn ngữ được áp dụng lập tức
hoặc sau khi người dùng khởi động lại
chương trình.
Chương 8: Cài đặt và thử nghiệm
112
13 Cho phép gõ tiếng Việt
trong E-mail.
Chương trình cho phép người dùng gõ tiếng
Việt trong khi soạn E-mail bằng bộ gõ Telex.
14 Chạy ngầm trong hệ thống. Chương trình chạy ngầm trong hệ thống ổn
định, không bị ảnh hưởng đến các chương
trình khác trong máy.
Bảng 8.1 - Kết quả thử nghiệm trên máy ảo của chương trình
Thử nghiệm trên máy thật: Vì chưa thể ký chương trình để triển khai trên máy
thật nên chương trình hiện nay chưa thể thử nghiệm trên máy thật.
Chương 9: Tổng kết
113
Chương 9: Tổng kết
9.1 Kết luận:
9.1.1 Kết quả đạt được:
Sau khi thực hiện đề tài, chúng em đã thu được một số kết quả sau:
Tìm hiểu được các công nghệ gởi và nhận E-mail, một trong những công nghệ
có tầm ứng dụng mạnh mẽ nhất hiện nay. Chúng em đã tìm hiểu được cách thức hoạt
động, đặc điểm kỹ thuật và khả năng của các công nghệ dùng để gởi và nhận mail.
Tìm hiểu được hệ điều hành Research In Motion và lập trình trên hệ điều hành
Research In Motion. Bằng cách xây dựng một ứng dụng trên hệ điều hành Research In
Motion, chúng em đã tiếp thu được kiến thức về Research In Motion cũng như
BlackBerry, thiết bị di động đã và đang phát triển mạnh mẽ trong các thiết bị di động
thông minh.
Tìm hiểu được cách lập trình giao tiếp với các E-mail Server trên BlackBerry.
Từ lý thuyết(tìm hiểu về các công nghệ giúp cho việc gởi và nhận mail), chúng em đã
tiếp tục thực tế bằng cách tìm hiểu cách lập trình để gởi, nhận và phân tích E-mail trên
hệ điều hành Research In Motion.
Xây dựng một chương trình gởi và nhận mail thông qua điện thoại BlackBerry,
phục vụ cho việc gởi và nhận mail. Với chương trình này người dùng có thể gởi và
nhận mail một cách nhanh chóng và tiện lợi. Ngoài phục vụ cho mục đích gởi và nhận
mail thông thường, chương trình còn phục vụ cho nhiều mục đích khác như thông báo
E-mail mới, gởi E-mail cho nhiều người với nội dung khác nhau.
9.1.2 Hạn chế:
Mặc dù đã cố gắng hết sức nhưng ứng dụng vẫn còn một số hạn chế nhất định:
Tốc độ của ứng dụng còn phụ thuộc vào rất nhiều yếu tố như tốc độ mạng,
dung lượng và cấu trúc của E-mail.v.v. Nếu tốc độ mạng chậm ứng dụng có thể không
thể hiện đầy đủ và chính xác nội dung E-mail.
Ứng dụng chưa thể hiện hết 3 chế độ của IMAP là Disconnect, connect và
offline, ứng dụng chỉ mới thực hiện được chức năng connect.
Ứng dụng chưa thể triển khai trên thực tế vì còn vướng phải vấn đề ký chương
trình của Research In Motion.
Ứng dụng đọc E-mail trực tiếp trên ứng dụng, chưa thể đồng bộ với chế độ E-
mail và tin nhắn trên thiết bị BlackBerry.
9.2 Hướng phát triển:
9.2.1 Phát triển trên các dòng máy BlackBerry:
Với những kết quả đặt được và những hạn chế nêu trên, đề tài có thể mở rộng
theo các hướng sau:
Xây dựng ứng dụng sao cho có thể đồng bộ với các chế độ nhắn tin và E-mail
trên BlackBerry.
Chương 9: Tổng kết
114
Xây dựng ứng dụng có khả năng đồng bộ cao với các E-mail Server hiện tại.
Tăng khả năng kết nối của ứng dụng, cho người dùng tự định nghĩa về ngôn
ngữ cũng như nội dung các mẫu E-mail.
Xây dựng ứng dụng có thể hỗ trợ Push Mail thật sự.
9.2.2 Phát triển trên các dòng máy khác:
Với những kết quả đặt được và những hạn chế nêu trên, đề tài có thể mở rộng
theo các hướng sau:
o Vì chương trình viết dựa trên nền tảng lập trình socket trên ngôn ngữ Java.
Chương trình có thể thay đổi các giao diện và mã nguồn phụ thuộc vào
BlackBerry API để triển khai trên các thiết bị di động khác hỗ trợ Java và kết
nối mạng.
115
PHẦN 4: PHỤ LỤC
Phụ lục A: Phát triển chương trình BlackBerry
A.1 Kiến trúc mạng BlackBerry
BlackBerry được cung cấp bởi nhiều nhà mạng khác nhau như Nextel, Telus,
T-mobile, Viettel.v.v. Nhưng tất cả các thiết bị BlackBerry đều liên kết tới Network
Operating Center(NOC) của Research In Motion. Trung tâm này kết nối tất cả nhà
mạng và từ các BlackBerry Enterprise Server(BES) phân phối khắp nơi. BlackBerry
Enterprise Server là một middleware liên kết thiết bị tới các dịch vụ E-mail như
Microsft Exchange và Lotus Notes.
Hình A.1 - Kiến trúc mạng của BlackBerry
(Nguồn: developers.sun.com)
Được cài đặt sau tường lửa của danh nghiệp, một BES có thể được cung cấp
thêm nhiều dịch vụ khác. Mobile Data Server(MDS) cung cấp cho thiết bị khả năng
truy cập vào mạng toàn cục của doanh nghiệp. Để có được quyền lợi này người dùng
cần cài đặt để có thể sử dụng BES khi người dùng cài đặt chương trình quản lý
Desktop Software Manager của Research In Motion. Chương trình quản lý này giúp
người dùng có thể kết nối thiết bị với máy tính. Một khóa mã hóa sẽ được tạo ra để
bảo mật quá trình giao tiếp giữa thiết bị và BES. Nếu thiết bị không liên kết với BES,
E-mail sẽ được nhận thông qua một Web Client.
116
Hình A.2 - Cài đặt để kết nối BES
(Nguồn: developers.sun.com)
A.2 Mô hình của chương trình BlackBerry
BlackBerry cung cấp cho nhà phát triển ứng dụng 2 mô hình để phát triển ứng
dụng BlackBerry:
o Mô hình dựa trên trình duyệt:Cho phép nhà phát triển phát tirển ứng dụng bằng
một ngôn ngữ đánh dấu, ví dụ như Wireless Markup Language(WML) hoặc
compact Hypertext Markup Language(cHTML). Việc sử dụng các khả năng
của các trình duyệt giúp người phát triển ứng dụng không phải lo về giao diện
người dùng, nhưng nó giới hạn khả năng làm việc của người dùng theo khả
năng trình duyệt có thể cung cấp, và không hỗ trợ tính năng văn phòng.
o Mô hình ứng dụng dựa trên nền Java: Cho phép người phát triển ứng dụng phát
triển giao diện người dùgn tùy biến, hỗ trợ mạnh mẽ tính năng văn phòng và
hình ảnh. Nhà phát triển cũng có thể xây dựng ứng dụng mà người dùng có thể
tải về và cài đặt trên các thiết bị di động để họ có thể tiếp tục sử dụng mà
không cần phải kết nối mạng. Một số thiết bị BlackBerry còn cung cấp cho
người phát triển ứng dụng một bộ API để phát triển ứng dụng dựa trên nền
Java.
A.3 Những mở rộng của BlackBerry từ J2ME
BlackBerry hỗ trợ hoàn toàn các API CLDC và MIDP. Ngoài ra Research In
Motion còn cung cấp một số mở rộng cho phép người phát triển ứng dụng phát triển
117
ứng dụng tùy biến và mạnh mẽ hơn. Giúp người phát triển ứng dụng có thể truy cập
và sử dụng các tính năng của BlackBerry về giao diện người dùng, mạng, bảo mật.v.v.
Người phát triển ứng dụng có thể sử dụng CLDC, MIDP và Blackberry API
trong cùng một ứng dụng. Tuy nhiên, một chương trình không nên sử dụng cả 2 thư
viện javax.microedition.ldcui và net.rim.device.api.ui vì có thể
gây xung đột giao diện người dùng.
A.4 Phát triển chương trình bằng JDE
Trong JDE được cung cấp, chọn menu File, chọn New workspace để tạo một
vùng làm việc JDE có thể quản lý, điền tên và chọn thư mục lưu trữ:
Hình A.3 - Tạo Workspace để quản lý công việc
Trong menu Project, chọn Create New Project để tạo một chương trình mới. Điền
tên và chọn nơi lưu trữ để lưu trữ chương trình:
Hình A.4 - Tạo chương trình mới
Để tạo một tập tin mới để lập trình, chọn New trong menu File. Điền
tên(thường kết thúc bằng đuôi mở rộng .java), chọn đường dẫn lưu trữ:
118
Hình A.5 - Thêm một tập tin mới vào chương trình
Trong màn hình sửa tập tin, nhấp chuột phải và chọn Insert Into Project để
đưa tập tin vào chương trình:
Hình A.6 - đưa một tập tin vào chương trình
Sau đó có thể lập trình chương trình bình thường, sau đây là chương trình mẫu
HelloWorld:
import net.rim.device.api.ui.*;
import net.rim.device.api.ui.component.*;
import net.rim.device.api.ui.container.*;
import net.rim.device.api.system.*;
public class HelloApp extends UiApplication {
public static void main(String argv[]) {
HelloApp app = new HelloApp();
app.enterEventDispatcher();
119
}
public HelloApp() {
pushScreen(new HelloScreen());
}
}
class HelloScreen extends MainScreen {
public HelloScreen() {
super();
LabelField title = new LabelField
("BlackBerry App", LabelField.ELLIPSIS |
LabelField.USE_ALL_WIDTH);
setTitle(title);
add(new RichTextField("Welcome to Developing
BlackBerry Apps Tutorial"));
}
public boolean onClose() {
Dialog.alert("Visit Again!");
System.exit(0);
return true;
}
}
Bảng A.1 - Chương trình HelloWorld
Để build ứng dụng và triển khai ứng dụng, chọn menu Build, chọn Build all,
JdE sẽ tạo ra 3 file .jad, .jar, .cod. Người phát triển ứng dụng có thể sử dụng 3 file này
để triển khai hoặc chạy thử trên máy ảo.
Để triển khai trên máy thật, có thể sử dụng công cụ javaloader và chạy câu lệnh
command: javaloader -usb load “tên chương trình”.cod
A.5 Triển khai chương trình bằng Blackberry Desktop Manager
Như đã nói ở trên, BlackBerry Desktop Manager là một chương trình dùng để
kết nối thiết bị với máy tính. Ngoài ra chương trình này còn cung cấp cho người dùng
các tiện ích như: Triển khai chương trình trên thiết bị, tạo tập tin với đuôi mở rộng của
Research In Motion là .alx để triển khai.
Tập tin có đuôi mở rộng .alx là một tập tin định nghĩa dựa trên ngôn ngữ XML,
nó cung cấp các thông tin về ứng dụng, để tạo tập tin này. Chọn menu Project, chọn
Generate ALX File. Nếu chương trình có tên là FirstApp, thì file alx sẽ có dạng:
120
MyCompany
Copyright (c) 2010 MyCompany
MyCompany
FirstApp.cod
Bảng A.2 - cấu trúc một tập tin .alx
Để triển khai chương trình bằng công cụ Blackberry Desktop Manager: Khởi
động chương trình Blackberry Desktop Manager, chọn Application Loader, chọn tập
tin .alx đã tạo ở trên và cài đặt vào thiết bị.
121
Phụ lục B: Tống hợp các giao thức mail
B.1 Cấu trúc MIME
Có 2 loại cấu trúc MIME: cấu trúc đơn giản (discrete media) và cấu trúc phức tạp
(composite media).
o Cấu trúc đơn giản: text, video, audio, image, application.
o Cấu trúc phức tạp: multipart, message.
Các thành phần cơ bản của MIME (được miêu tả trong RFC-2045):
1. MIME-Version:
Mỗi message yêu cầu có 1 trường MIME-Version trong header. Thông tin này
nhằm cho biết message được chuyển mã sang dạng MIME và cho biết phiên bản
MIME được sử dụng.
Cú pháp: MIME-Version: 1*DIGIT“.”1*DIGIT (1.0)
2. Content-Type:
Dùng để cho biết cách nội dung phần thân được biểu diễn, nhờ đó tác nhân nhận
gói tin biết cách để hiểu thị nội dung với người dùng.
Trường này gồm 2 thông tin kiểu (type) và kiểu con (subtype) đi kèm nhau theo
cấu trúc type/subtype và có thể kèm thêm các tham số khác như charset, name, ...
Tên type, subtype, parameter không phân biệt hoa thường. Tuy nhiên giá trị các
parameter thường phân biệt hoa thường.
Một số content type chính : application, multipart, text, message, audio, video,
image và extension-token. Chú ý thông tin subtype là bắt buộc vì không có subtype
mặc định cho các type trên.
Một số subtype ứng với các type:
1. text: plain (primary), richtext.
2. multipart: mixed (primary), alternative, parallel, digest, related, signed.
3. message: rfc822 (primary), partial, External-body.
4. image: jpeg, gif
5. audio: basic.
6. video: mpeg
7. application: octet-stream, PostScript.
Khi tác nhân đọc mail không nhận ra được giá trị của Content-Type, thường nên
xem như là một application/octet-stream.
Cấu trúc:
Content-Type: /[; parameter1; paramenter2; ...]
122
Text: là Content-Type mặc định, dùng để gửi dữ liệu đang text. Content-Type
mặc định cho Internet mail là “text/plain; charset=us-ascii”. Tham số “charset”
có thể được dùng để chỉ tập kí tự được dùng. Giá trị của tham số này không
phân biệt hoa thường như các tham số khác. Các giá trị bao gồm: “us-ascii” /
“iso-8859-1” / “iso-8859-2” /“iso-8859-3” /“iso-8859-4” /“iso-8859-5” /“iso-
8859-6” /“iso-8859-7” /“iso-8859-8” /“iso-8859-9” / extension-token.
Application: dùng để gửi những dữ liệu cần được xử lí bằng một ứng dụng trên
máy tính, thường là các chương trình. Hai loại thường được sử dụng là
“application/octet-stream” và “application/PostScript”.
o application/octet-stream: là subtype chính dùng trong “application”
Content-Type cho biết thân của message chứa dữ liệu nhị phân. Các
tham số thường dùng : type, padding và name.
o application/PostScript: cho biết nội dung dữ liệu là một chương trình
PostScript (Một ngôn ngữ lập trình để chỉ ra cách bố trí (layout) của một
trang được in).
Image: cho biết nội dung của phần này là một hình ảnh. Giá trị subtype cho biết
định dạng của file ảnh được sử dụng. Một số subtype hỗ trợ: g3fax / gif / ief /
jpeg / tiff. Nhưng 2 loại thường phổ biến là jpeg và gif.
Cấu trúc header:
image-type := “image” “/” (“gif” / “jpeg” / extension-token)
Audio: cho biết nội dung của phần này là một file âm thanh. Subtype được sử
dụng là “basic”
Cấu trúc header:
audio-type := “audio” “/” (“basic” / extension-token)
Video: nội dung của phần này là một file phim ảnh.
Cấu trúc header:
video-type := “video” “/” (“mpeg” / extension-token)
Multipart: phần thân bao gồm 1 hay nhiều phần dữ liệu khác nhau (body part)
kết hợp với nhau. Phần định nghĩa “multipart” Content-Type phải xuất hiện
trên header, phần thân gồm 1 hay nhiều phần. Mỗi phần phân biệt cách nhau
bằng đường biên (boundary). Boundary không được xuất hiện trong phần thân
của body part, do đó phải có cách phát sinh ra boundary duy nhất. Mỗi phần
gồm phần header của chính nó, một dòng trống và theo sau là phần thân. Chỉ
những header bắt đầu bằng Content- mới có ý nghĩa trong phần header của
body part.
o boundary không được dài quá 70 kí tự (không bao gồm 2 dấu ‘-‘ dầu
dòng. Với boundary theo sau part cuối cùng sẽ được gắn thêm 2 dấu ‘-‘
vào cuối.
o Tham số boundary bắt buộc phải có trong “multipart” Content-Type.
....
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="exampledelimtext123"
This is a multipart message in MIME format
123
--exampledelimtext123
Content-Type: text/plain
Jane, here is the photo you wanted me for the new client.
Here are some notes on how it was processed.
(Blah blah blah…)
Talk to you soon,Joe.
--exampledelimtext123
Content-Type: image/jpeg; name="clientphoto.jpg"
Content-Transfer-Encoding: base64
SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7Ozs
…
zv/wAARCADIARoDASIAAhEBAxEB/8QAHAAAAQUBA
--exampledelimtext123--
Bảng B.1 – Ví dụ về tập tin MIME
Cấu trúc của boundary được định nghĩa như sau:
boundary := 0*69 bcharsnospace
bchars := bcharsnospace / " "
bcharsnospace := DIGIT / ALPHA / "'" / "(" / ")" / "+"
/"_" / "," / "-" / "." / "/" / ":" / "=" / "?"
Multipart/mixed: được dùng khi các body part độc lập với nhau và cần được
giữ theo một trật tự. Bất kì subtype của multipart không thể nhận biết phải
được xem như “mixed”.
Multipart/alternative: mỗi body part được xem như là một bản thay thế biểu
diễn cùng một nội dung thông tin. Hệ thống sẽ chọn ra cách tốt nhất để hiển thị
nội dung. Thứ tự của các part trong “multipart/alternative” mang ý nghĩa rằng
tính chính xác của dữ liệu gốc tăng dần. Và thường hệ thống sẽ chọn ra phần
sau nhất được hỗ trợ để hiển thị nội dung. Mỗi phần nên có một Content-ID,
giá trị này giống nhau khi nội dung các phần giống hệt nhau và nên khác nhau
khi nội dung của các phần không giống nhau hoàn toàn. Các Content-ID này
khác với Content-ID của toàn bộ entity “multipart/alternative”.
Multipart/digest: được dùng để gửi tập các message dạng văn bản. Nhưng giá
trị mặc định của Content-Type trong mỗi phần là “message/rfc822”.
Multipart/parallel: dùng để hiển thị tất cả các phần đồng thời trên cả phần cứng
và phần mềm mà nó hỗ trợ. Ví dụ, hiển thị một hình ảnh trong khi đang chơi
một bản nhạc.
124
Hình B.1 - Cấu trúc của một message kiểu multipart
(Nguồn: The TCP/IP Guide - www.tcpipguide.com)
Message: cho phép message có thể chứa các messages khác hoặc chứa các con
trỏ trỏ tới các message khác.
message/rfc822: Phần thân của message chứa một message khác theo
cấu trúc của RFC822 message. Tuy nhiên phần thân của
“message/rfc822” không yêu cầu các trường “From”, “Subject”, “To”.
Một message “message/rfc822” cũng có thể là một MIME message.
message/partial: được định nghĩa nhằm cho phép gửi các đối tượng dữ
liệu có kích thước lớn qua nhiều đoạn message khác nhau, sau đó tự
động hợp lại với nhau thành một message hoàn chỉnh. Chỉ có 7bit
Content-Transfer-Encoding được dùng trong trường hợp này. Có 3 tham
số bắt buộc phải có khi dùng “message/partial” Content-Type là id,
number và total. Id là một giá trị duy nhất để kết hợp các phần lại với
nhau. Nếu như id cho biết các phần thuộc về cùng một message thì
number cho biết thứ tự của các phần và có giá trị là một số tự nhiên.
Tham số cuối cùng là total, một số tự nhiên cho biết tổng số phần được
tách ra của message. Tham số này buộc phải có trong phần cuối cùng
nhưng nên dùng trong tất cả các phần. Chú ý giá trị của tham số number
125
bắt đầu từ 1. Khi phát sinh và hợp các phần của một message, các
header của message được gói gọn phải được kết hợp với các header của
message bao quanh bên ngoài theo các quy tắc sau:
(1) Tất cả các trường trong header của part 1 (enclosing entity), ngoại
trừ các trường bắt đầu bằng “Content-“ và các trường “Message-ID”,
“Encrypted” và “MIME-Version” phải được sao chép theo thứ tự sang
message mới.
(2) Chỉ những trường trong header của (enclosed message) bắt đầu bằng
“Content-” và các trường “Message-ID”, “Encrypted”, “MIME-
Version” phải được thêm theo thứ tự vào header của message mới.
(3) Tất cả các trường trong header của các message tiếp theo bắt đầu từ
message thứ 2 sẽ bị bỏ qua.
Ví dụ: Một message được tách thành 2 phần, phần thứ nhất có nội dung:
X-Weird-Header-1: Foo
From: Bill@host.com
To: joe@otherhost.com
Subject: Audio mail
Message-ID:
MIME-Version: 1.0
Content-type: message/partial;
id="ABC@host.com";
number=1; total=2
X-Weird-Header-1: Bar
X-Weird-Header-2: Hello
Message-ID:
MIME-Version: 1.0
Content-type: audio/basic
Content-transfer-encoding: base64
... first half of encoded audio data goes here...
Phần thứ 2 có nội dung:
Enclosing entity
Enclosed message
126
From: Bill@host.com
To: joe@otherhost.com
Subject: Audio mail
MIME-Version: 1.0
Message-ID:
Content-type: message/partial;
id="ABC@host.com"; number=2; total=2
... second half of encoded audio data goes here...
Theo các quy tắc trên thì message được hợp nhất có nội dung:
X-Weird-Header-1: Foo
From: Bill@host.com
To: joe@otherhost.com
Subject: Audio mail
Message-ID:
MIME-Version: 1.0
Content-type: audio/basic
Content-transfer-encoding: base64
... first half of encoded audio data goes here...
... second half of encoded audio data goes here...
message/external-body: Cho phép nội dung của message nằm bên ngoài của
message và chỉ được tham chiều tới message đó. Tham số buộc phải có khi sử
dụng “message/external-body” là “access-type”, cho biết cơ chế truy cập file.
Một số cơ chế thường sử dụng:
(1) “FTP” và “TFTP”: truy cập file thông qua giao thức FTP và TFTP. Với các
truy cập này, có thể sử dụng các tham số NAME, SIZE, DIRECTORY và
MODE (NETASCII, OCTET và MAIL cho TFTP; ASCII, EBCDIC, IMAGE,
LOCAL8 cho FTP). Nếu tham số MODE không được chỉ định, mặc định giá
127
trị này sẽ là NETASCII cho TFTP và ASCII cho FTP.
(2) “non-ftp”: giống như FTP ngoại trừ không dùng username và password để
đăng nhập và mà đăng nhập dạng ẩn danh (anonymous) với password ứng với
tài khoản email sử dụng.
(3) “local-file” và “afs”: “local-file” chỉ cho biết file được truy cập nằm trên
máy cục bộ trong khi “afs” cho biết file được truy cập thông qua hệ thống file
AFS. Tham số bắt buộc là NAME có giá trị là tên của file. Có thể dùng thêm
tham số SITE để chỉ ra các máy tính có quyền truy cập nội dung của file.
(4) “mail-server”: nội dung thực sự nằm trên mail server. Tham số bắt buộc là
SERVER chứa địa chỉ mail của mail server chứa nội dung dữ liệu.
“message/external-body” phải sử dụng trường Content-ID trong header với một
giá trị duy nhất để tham chiếu tới phần dữ liệu bên ngoài.
Content-Transfer-Encoding: Dùng để chỉ ra cơ chế biến đổi được dùng để biểu
diễn nội dung phần thân thành dạng có thể truyền được trên các protocols giới
hạn tập kí tự chuyển qua. Nhờ đó bên nhận biết cách để chuyển ngược lại dữ
liệu gốc ban đầu. Một số cơ chế thường dùng:
o “7bit” (phân biệt hoa thường):
o “quoted-printable”
o “base64”
o “8bit”
o “binary”
o x-token
7bit là giá trị mặc định. 7bit, 8bit và binary chủ yếu dùng để chỉ loại dữ liệu
chứa trong đối tượng. 7bit bao gồm các dòng ngắn (<1000) với các kí tự US-ASCII.
8bit gồm các dòng ngắn bao gồm các kí tự không phải ASCII. Binary gồm các kí tự
không phải ASCII và không giới hạn độ dài của mỗi dòng.
Có thể định nghĩa thêm cơ chế mới với cấu trúc x-my-new-encoding. Tuy
nhiên, chỉ có 2 bên trong hệ thống mới hiểu cơ chế này.
Nếu Content-Transfer-Encoding xuất hiện trong header của message thì có ảnh
hưởng trên toàn bộ message đó. Nếu xuất hiện trong header của một phần của
message thì chỉ ảnh hưởng trên phần đó của message. Nếu một message (hoặc body
part) loại “multipart” hoặc “message” thì chỉ có 7bit, 8bit và binany được dùng.
3. Content-ID:
Là một giá trị duy nhất cũng gần giống với Message-ID.
Content-ID là không bắt buộc, tuy nhiên khi sử dụng trong message có Content-ID là
“message/external-body” thì bắt buộc phải có để cache dữ liệu được tham chiếu tới.
4. Content-Description:
Được dùng để bổ sung một số thông tin miêu tả cho nội dung của message, thường
dùng dạng US-ASCII.
128
5. Content-Disposition:
Hai giá trị thường sử dụng là “inline” và “attachment”, có thể kèm thêm các tham
số khác. “inline” cho biết nội dung của phần message đó sẽ tự động hiển thị giống như
các phần khác. Trong khi “attachment” cho biết nội dung phần message bị tách riêng
khỏi phần nội dung chính (xem thêm RFC-2183).
6. Content-Location:
Thông tin URI (uniform resource identifier) mà phần message sử dụng.
7. Content-Length:
Tổng số byte dữ liệu chứa trong thực thể MIME (MIME entity).
B.2 Cấu trúc mã trả về và ý nghĩa các chữ số
Mỗi mã trả về gồm một dãy 3 chữ số liên tiếp nhau “xyz” với ý nghĩa như sau:
Chữ số đầu tiên (“x”): Chữ số đầu tiên cho biết kết quả của lệnh thành công
hay thất bại, lệnh đã hoàn thành hay chưa hoàn thành. Các giá trị có thể của
chữ số này như sau:
Định dạng Ý nghĩa
1yz Lệnh được chấp nhận và đang được xử lí.
2yz Lệnh được thực hiện thành công và kết thúc.
3yz Lệnh được chấp nhận, quá trình xử lí tạm dừng chờ cung cấp
thêm thông tin.
4yz Lệnh không được chấp nhận và không có hành động nào được
thực hiện, nhưng lỗi xảy ra chỉ là tạm thời và có thể thử thực hiện
lại lệnh.
5yz Lệnh không được chấp nhận và không có hành động nào được
thực hiện, thường do lệnh không đúng.
Bảng B.2 - Chữ số “x”
Chữ số thứ hai (“y”):
Định dạng Ý nghĩa
x0z Lỗi cấu trúc
x1z Thông tin trạng thái lệnh.
x2z Thông tin trạng thái kết nối client-server.
x3z Không được chỉ định.
x4z Không được chỉ định.
x5z Thông tin liên quan đến dịch vụ (giao thức).
Bảng B.3 – Chữ số “y”
B.3 Base64 và Quoted-printable Encoding
B.3.1 Base64:
Phương pháp chuyển mã sử dụng các kí tự a-z, A-z, /, + và = để biểu diễn dữ
liệu sau khi encode.
129
Các byte cần encode sẽ được biểu diễn dưới dạng nhị phân (nguyên vẹn 8 bit).
Với mỗi 6 bit liên tiếp nhau trong dãy mã nhị phân tương ứng với một giá trị thập
phân từ 1-63, giá trị này được ánh xạ vào bảng chuyển đổi bên dưới sang giá trị được
encode.
Khi số kí tự cần encode là bội của 3 (24 bit) thì kết quả encode không có phần
padding (các dấu =). Khi số kí tự cần encode chia 3 dư 2 thì kết quả sẽ có một dấu = ở
cuối. Nếu số dư là 1 thì sẽ có 2 dấu = ở cuối kết quả encode.
Bảng mã chuyển đổi:
Value Char
Value Char
Value Char
Value Char
0 A 16 Q 32 g 48 W
1 B 17 R 33 H 49 X
2 C 18 S 34 I 50 Y
3 D 19 T 35 J 51 Z
4 E 20 U 36 K 52 0
5 F 21 V 37 L 53 1
6 G 22 W 38 M 54 2
7 H 23 X 39 N 55 3
8 I 24 Y 40 O 56 4
9 J 25 Z 41 P 57 5
10 K 26 a 42 Q 58 6
130
11 L 27 b 43 R 59 7
12 M 28 C 44 S 60 8
13 N 29 D 45 T 61 9
14 O 30 E 46 U 62 +
15 P 31 F 47 V 63 /
Bảng B.4 – Bảng mã chuyển đổi
Ví dụ:
Text content M A n
ASCII 77 97 110
Bit pattern 0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 1 0 1 1 0 1 1 1 0
Index 19 22 5 46
Base64-encoded T W F u
Bảng B.5 – Ví dụ về chuyển đổi mã
B.3.2 Quoted-printable:
Là phương pháp chuyển mã sử dụng các kí tự in được để chuyển dữ liệu dạng
8-bit qua các đường đi chỉ hỗ trợ 7-bit. Phương pháp này ánh xạ một byte bất kì thành
một dãy các kí tự ASCII.
Cách chuyển đổi: Bất kì byte nào sẽ được ánh xạ thành 3 kí tự (bắt đầu bằng
dấu =, theo sau là 2 kí tự hexa). Những kí tự in được (33-60 và 62-126) không cần
encode. Dấu = (mã 61) được encode thành =3D. Dấu TAB và SPACE được encode
thành =09 và =20. Dấu xuống dòng được encode thành =0D=0A.
131
Một dòng dữ liệu dạng quoted-pritable chỉ có tối đa 76 kí tự, do đó dấu xuống
dòng mềm (soft line break) được sử dụng để cắt bớt kí tự trong trường hợp có nhiều
hơn 76 kí tự.
Ví dụ:
If you believe that truth=3Dbeauty, then surely=20=
mathematics is the most beautiful branch of philosophy.
Đoạn trên là kết quả sau khi encode chuỗi sau:
If you believe that truth=beauty, then surely mathematics is the most beautiful
brach of philosophy.
B.4 Cách đánh số các thành phần trong MIME
Để có thể lấy đúng phần dữ liệu mong muốn khi dùng IMAP, ta cần phải hiểu
cách các phần dữ liệu đó được đánh địa chỉ như thế nào trong cấu trúc MIME.
Ví dụ dưới đây miêu tả cách xác định địa chỉ các phần trong một message dang
multipart.
HEADER ([RFC-2822] header of the message)
TEXT ([RFC-2822] text body of the message)
MULTIPART/MIXED
1 TEXT/PLAIN
2 APPLICATION/OCTET-STREAM
3 MESSAGE/RFC822
3.HEADER ([RFC-2822] header of the message)
3.TEXT ([RFC-2822] text body of the message)
MULTIPART/MIXED
3.1 TEXT/PLAIN
3.2 APPLICATION/OCTET-STREAM
4 MULTIPART/MIXED
4.1 IMAGE/GIF
4.1.MIME ([MIME-IMB] header for the IMAGE/GIF)
4.2 MESSAGE/RFC822
4.2.HEADER ([RFC-2822] header of the message)
4.2.TEXT ([RFC-2822] text body of the message)
MULTIPART/MIXED 4.2.1 TEXT/PLAIN
4.2.2 MULTIPART/ALTERNATIVE
4.2.2.1 TEXT/PLAIN
4.2.2.2 TEXT/RICHTEXT
Bảng B.6 – Cách đánh số các thành phần trong MIME
132
Trong đó: HEADER là toàn bộ phần header của message, TEXT là toàn bộ nội
dung phần thân của message (hoặc một part của message). Mỗi part sẽ được đánh số,
các part bên trong một part khác sẽ được đánh số theo chiều sâu.
Ví dụ:
Part 3 dạng MULTIPART/MIXED, bên trong chứa 2 part TEXT/PLAIN và
APPLICATION/OCTET-STREAM sẽ được đánh số lần lượt là 3.1 và 3.2. Biết được
cách đánh địa chỉ này ta dễ dàng lấy được nội dung của bất kì phần nào trong message
thông qua lệnh FETCH đã đề cập ở trên.
133
Tài liệu tham khảo
Tài liệu dạng văn bản:
[1] BlackBerry Forum – Blackberry Development Documents – Research In
Motion.
[2] BlackBerry JDE 4.7 API References – BlackBerry 4.7 SDK.
[3] BlackBerry Forum – Writing You Frist Application V5 – Research In Motion.
[4] BlackBerry Forum – How And When To Sign V2 – Research In Motion.
[5] BlackBerry Forum – Storing Persistent Data V2 – Research In Motion.
[6] BlackBerry Developer Journal Team – BlackBerry Developer Journal Volume
2, issue 2
[7] Josh Schiffman – BlackBerry OS Report 2 – Network and security Research
Center, Department of computer Science and engineering, pennsylvania State
Univercity, University Park PA.
[8] Logic mail – Logicmail Development Blog – 2008 - 2009
Các website:
[9] www.Blackberry.com
[10] www.codeproject.com
[11] www.java2s.com
[12] www.wikipedia.org
[13] www.thinkingblackberry.com
[14]
[15]
[16]
ncapsulatedMes-4.htm
[17] https://www.logicprobe.org/proj/logicmail/
[18] /developers/
Các file đính kèm theo tài liệu này:
- luan_van_final_2010_2_0292.pdf