Simple MAPI API (SMAPI)


Các hàm và cấu trúc dữ liệu của Simple MAPI API (SMAPI) cho phép chúng ta thêm các dịch vụ MAPI cho các ứng dụng Windows của mình . Mặc dù tập các SMAPI là khá nhỏ , nhưng nó đủ dùng cho các ứng dụng cần dịch vụ mail .

Đầu tiên chúng ta xét các cấu trúc dữ liệu của SMAPI .

User-Defined type

SMAPI có ba cấu trúc dữ liệu chính :

MapiMessage :
bao gồm các thông tin về gói thông điệp gồm người tạo ra (originator) , tiêu đề (subject) , văn bản (text) , các người nhận (recipients) , và các file ghép (attachements) .

MapiRecip :
bao gồm các thông tin về thông điệp hồi đáp gồm tên (name) , loại địa chỉ (address type) , địa chỉ (full address) , định danh (entry ID) .

MapiFile :
bao gồm các thông tin về các file đi kèm gồm tên file (display name) , hệ điều hành (operating system) và vị trí trong thông điệp .


Trở về gốc

Mục Lục


MapiMessage

Cấu trúc dữ liệu MapiMessage dùng chứa các thông tin hiển của thông điệp .

Sau đây là bảng mô tả các thành phần của MapiMessage

Table -1

Field

Type

Mô tả

Reserved Long Dành riêng cho tương lai . Có giá trị 0
Subject String Tiêu đề của thông điệp , không dài hơn 256 ký tự
NoteText String Phần văn bản của thông điệp

Mỗi dòng kết thúc bởi 0x0d0a (inbound message)

Mỗi dòng kết thúc bởi 0x0d , hoặc 0x0a , hoặc 0x0d0a (outbound message)

MessageType String Nếu là Interpersonal mail thì là string rỗng

String được xác định do ứng dụng ghi

DateReceived String Ngày nhận , YYYY/MM/DD HH:MM

(giờ theo 24)

ConversationID String Xác định luồng đối thoại mà thông điệp này thuộc về .
Flags Long Mặt nạ cờ . Thông thường là 0 . Tuy nhiên cũng có các cờ được định nghĩa saün như sau :

MAPI_RECEIPT_REQUESTED

MAPI_SEND

MAPI_UNREAD

RecipCount Long Số người nhận
FileCount Long Số file attach

 

Sau đây là đoạn đặc tả MapiMessage trong MAPI.H

typedef struct {

ULONG ulReserved;

LPTSTR lpszSubject;

LPTSTR lpszNoteText;

LPTSTR lpszMessageType;

LPTSTR lpszDateReceived;

LPTSTR lpszConversationID;

FLAGS flFlags;

lpMapiRecipDesc lpOriginator;

ULONG nRecipCount;

lpMapiRecipDesc lpRecips;

ULONG nFileCount;

lpMapiFileDesc lpFiles;

} MapiMessage, FAR *lpMapiMessage;


Trở về gốc

Mục Lục


MapiRecip

Cấu trúc dữ liệu MapiRecip dùng chứa các thông tin quan trọng có liên quan đến người nhận thông điệp .

Sau đây là bảng mô tả các thành phần của MapiRecip

Table -2

Field

Type

Mô tả

Reserved Long Dành riêng cho tương lai . Có giá trị 0
RecipClass Long Phân loại người nhận

MAPI_TO : người nhận bản gốc

MAPI_CC : người nhận bản copy (carbon copy)

MAPI_BCC : người nhận bản blind copy (các ngưòi nhận khác không biết có người này cùng nhận bản copy)

MAPI_ORG : người nhận cũng đồng thời là người gởi

Name String Tên người nhận
Address String Địa chỉ người nhận mà MAPI service provider cần gởi thông điệp tới . Dùng trong trường hợp địa chỉ chưa có trong address list .
EIDSize Long Kích thước (byte) của dữ liệu trong EntryID
EntryID String String nhị phân mà MAPI dùng xác định người nhận

 

Sau đây là đặc tả MapiRecipDesc trong MAPI.H

typedef struct {

ULONG ulReserved

ULONG ulRecipClass;

LPTSTR lpszName;

LPTSTR lpszAddress;

ULONG ulEIDSize;

LPVOID lpEntryID;

} MapiRecipDesc, FAR *lpMapiRecipDesc;


Trở về gốc

Mục Lục


MapiFile

Cấu trúc MapiFile chứa các thông tin về các file đi kèm trong thông điệp .

Table -3

Field

Type

Mô tả

Reserved Long Dành riêng cho tương lai . Có giá trị 0
Flags Long Mặt nạ cờ . Thông thường là 0 . Tuy nhiên cũng có các cờ được định nghĩa saün như sau :

MAPI_OLE : nếu attachement là đối tượng OLE

MAPI_OLE_STATIC : nếu attachement là đối tượng OLE static hơn là embedded

Position Long Số nguyên xác định vị trí xuất hiện của attachement trong thông điệp . Nói cách khác attachement thay thế vị trí xuất hiện của NoteText , nên ta có thể viết NoteText[Position].
PathName String Đường dẫn đầy đủ chỉ tới file attach .
FileName String Tên file sẽ được hiển thị cho người nhận. Tên này có thể khác với PathName ở trên . Nếu FileName rỗng thì PathName sẽ được thay thế . Trưởng hợp attachement là OLE object thì FileName bao gồm class name nữa (ví dụ Microsoft Excel Worksheet)
FileType Long Dùng để xác định loại của file attach . Giá trị rỗng cho biết file không xác định của một hệ điều hành không xác định .

 

Sau đây là đặc tả MapiFileDesc trong MAPI.H

typedef struct {

ULONG ulReserved;

ULONG flFlags;

ULONG nPosition;

LPTSTR lpszPathName;

LPTSTR lpszFileName;

LPVOID lpFileType;

} MapiFileDesc, FAR *lpMapiFileDesc;


Trở về gốc

Mục Lục