Làm thế nào để tạo MAPI hồ sơ mà không cài đặt Outlook

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch máy của Microsoft chứ không phải do con người dịch. Microsoft cung cấp các bài viết do con người dịch và cả các bài viết do máy dịch để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng ngôn ngữ của bạn. Tuy nhiên, bài viết do máy dịch không phải lúc nào cũng hoàn hảo. Loại bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, giống như một người nước ngoài có thể mắc sai sót khi nói ngôn ngữ của bạn. Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra. Microsoft cũng thường xuyên cập nhật phần mềm dịch máy này.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này:306962
TÓM TẮT
Một quan niệm sai lầm phổ biến là một ứng dụng khách MAPI, chẳng hạn như Microsoft Outlook hoặc các khách hàng trao đổi, phải được cài đặt trên một máy chủ Microsoft Exchange để tạo hồ sơ MAPI. Cài đặt một máy khách MAPI vì lý do này là không cần thiết. Outlook, chúng tôi không khuyến khích bạn cài đặt một máy khách MAPI cho máy chủ sản xuất. Khi một hệ thống phụ MAPI được cài đặt, một số cách khác tồn tại để tạo hồ sơ MAPI. Đổi lại, một hệ thống phụ MAPI được cài đặt.
THÔNG TIN THÊM

Phương pháp của việc tạo ra các cấu hình MAPI

Microsoft cung cấp lập trình ví dụ để minh hoạ chỉ, không có bảo hành hoặc thể hiện hay ngụ ý. Điều này bao gồm, nhưng không giới hạn, bảo đảm ngụ ý khả năng bán hàng hoặc cho một mục đích cụ thể. Bài viết này giả định rằng bạn đã quen thuộc với ngôn ngữ lập trình mà đang được chứng minh và với những công cụ được sử dụng để tạo ra và gỡ lỗi thủ tục. Microsoft hỗ trợ các kỹ sư có thể giúp giải thích các chức năng của một thủ tục cụ thể, nhưng họ sẽ không sửa đổi những ví dụ để cung cấp thêm chức năng hoặc xây dựng quy trình để đáp ứng các yêu cầu cụ thể của bạn.

Trước khi bạn thử một trong những phương pháp này, bạn sẽ phải đảm bảo rằng các mục nhập chính xác được thực hiện ở các tập tin Mapisvc.inf trên máy chủ.Để biết thêm chi tiết về làm thế nào để sửa đổi các tập tin này, nhấp vào số bài viết sau đây để xem bài viết trong cơ sở kiến thức Microsoft:
294470Làm thế nào để thêm các mục cho các dịch vụ trao đổi để Mapisvc.inf

Sử dụng NewProf.exe

Các tiện ích NewProf.exe được bao gồm với Outlook. Để biết thêm chi tiết về làm thế nào để sử dụng tiện ích này, ghé thăm Web site sau của Microsoft Developer Network (MSDN): Để biết thêm chi tiết, nhấp vào số bài viết sau để xem các bài viết trong cơ sở kiến thức Microsoft:
145905Tùy chọn dòng lệnh Newprof.exe
148664 Mô tả của tập tin mô tả cấu hình

Sử dụng mẫu ProfMan2

Mẫu này sử dụng giao diện MAPI IProfAdmin được đề cập trong phần "Sử dụng giao diện MAPI IProfAdmin". Để có được mẫu này, nhấp vào số bài viết sau đây để xem bài viết trong cơ sở kiến thức Microsoft:
228736 Profman2.exe - MAPI Quản lí Hồ sơ v2.0

Sử dụng chức năng MAPILogonEx

Khi bạn gọi các MAPILogonEx chức năng mà không có chỉ định cấu hình và bằng cách đặt cờ MAPI_LOGON_UI, MAPI hiện thuật sĩ sáng tạo hồ sơ nếu không có hồ sơ không trên máy tính. Nếu hồ sơ tồn tại, MAPI sẽ hiển thị các Chọn hồ sơ hộp thoại. Nhấp vào Mới để chạy thuật sĩ sáng tạo hồ sơ.
Mã mẫu
// CreateProfileWithMAPILogonEx function: This takes advantage of the // profile prompt dialog's "New" button.bool CreateProfileWithMAPILogonEx(){    HRESULT         hRes = S_OK;        // Return code from MAPI calls.    LPMAPISESSION   lpSession = NULL;   // MAPI Session pointer.    // Initialize MAPI.    if (FAILED(hRes = MAPIInitialize(NULL)))    {        cout<<"Error initializing MAPI. hRes = 0x"<<hex<<hRes<<dec<<endl;        return FALSE;    }    // Instruct user to click the "New" button.    cout<<"When the \"Choose Profile\" dialog appears, click the \"New\" button"        <<"to configure a new profile."<<endl;    // Call MAPILogonEx to display the profile chooser dialog box.    if (FAILED(hRes = MAPILogonEx(NULL,                                  NULL,                                  NULL,                                  MAPI_LOGON_UI,                                  &lpSession)))    {        cout<<"Error logging on. hRes = 0x"<<hex<<hRes<<dec<<endl;        return FALSE;    }    // Log off the session.    if (FAILED(hRes = lpSession->Logoff(0,0,0)))    {        cout<<"Error logging off. hRes = 0x"<<hex<<hRes<<dec<<endl;    }    // Release the session.    lpSession->Release();    // Uninitialize MAPI.    MAPIUninitialize();    // true, which indicates success.    return TRUE;}				

Sử dụng chức năng LAUNCHWIZARDENTRY

Chức năng này trực tiếp cuộc gọi thuật sĩ sáng tạo hồ sơ.
Mã mẫu
// CreateProfileWithLAUNCHWIZARD function: This uses the LAUNCHWIZARDENTRY API// to display the profile configuration UI.bool CreateProfileWithLAUNCHWIZARD(){    HRESULT     hRes = S_OK;                    // Return code from MAPI calls.    TCHAR       szProfName[80] = {0};           // String to hold profile name.    LPTSTR      szServices[] = {"MSEMS", NULL}; // String to hold message service names.    // Call LaunchWizard to add the MSEMS service.    if (FAILED(hRes = LaunchWizard(NULL,                                   NULL,                                   (LPCTSTR *)szServices,                                   80,                                   szProfName)))    {        cout<<"Error launching wizard. hRes = 0x"<<hex<<hRes<<dec<<endl;        return FALSE;    }    // Return true indicating success.    return TRUE;}				

Sử dụng giao diện MAPI IProfAdmin

Giao diện MAPI này cho phép bạn lập trình tạo một hồ sơ mà không có sự tương tác người dùng.
Mã mẫu
// CreateProfileWithIProfAdmin function: This uses the MAPI IProfAdmin to // programmatically create a profile. No UI is displayed.bool CreateProfileWithIProfAdmin(){    HRESULT         hRes = S_OK;            // Result from MAPI calls.    LPPROFADMIN     lpProfAdmin = NULL;     // Profile Admin object.    LPSERVICEADMIN  lpSvcAdmin = NULL;      // Service Admin object.    LPMAPITABLE     lpMsgSvcTable = NULL;   // Table to hold services.    LPSRowSet       lpSvcRows = NULL;       // Rowset to hold results of table query.    SPropValue      rgval[2];               // Property structure to hold values we want to set.    SRestriction    sres;                   // Restriction structure.    SPropValue      SvcProps;               // Property structure for restriction.    char            szProfile[80] = {0};    // String for profile name.    char            szMailbox[80] = {0};    // String for mailbox name.    char            szServer[80] = {0};     // String for server name.    // This indicates columns we want returned from HrQueryAllRows.    enum {iSvcName, iSvcUID, cptaSvc};    SizedSPropTagArray(cptaSvc,sptCols) = { cptaSvc, PR_SERVICE_NAME, PR_SERVICE_UID };    // Get configuration info from user.    cout<<"Enter name for profile: ";    cin>>szProfile;    cout<<"Enter Exchange mailbox name: ";    cin>>szMailbox;    cout<<"Enter Exchange server name: ";    cin>>szServer;    // Initialize MAPI.    if (FAILED(hRes = MAPIInitialize(NULL)))    {        cout<<"Error initializing MAPI.";        goto error;    }    // Get an IProfAdmin interface.    if (FAILED(hRes = MAPIAdminProfiles(0,              // Flags.                                        &lpProfAdmin))) // Pointer to new IProfAdmin.    {        cout<<"Error getting IProfAdmin interface.";        goto error;    }    // Create a new profile.    if (FAILED(hRes = lpProfAdmin->CreateProfile(szProfile,     // Name of new profile.                                                 NULL,          // Password for profile.                                                 NULL,          // Handle to parent window.                                                 NULL)))        // Flags.    {        cout<<"Error creating profile.";        goto error;    }    // Get an IMsgServiceAdmin interface off of the IProfAdmin interface.    if (FAILED(hRes = lpProfAdmin->AdminServices(szProfile,     // Profile that we want to modify.                                                 NULL,          // Password for that profile.                                                 NULL,          // Handle to parent window.                                                 0,             // Flags.                                                 &lpSvcAdmin))) // Pointer to new IMsgServiceAdmin.    {        cout<<"Error getting IMsgServiceAdmin interface.";        goto error;    }    // Create the new message service for Exchange.    if (FAILED(hRes = lpSvcAdmin->CreateMsgService("MSEMS",     // Name of service from MAPISVC.INF.                                                   NULL,        // Display name of service.                                                   NULL,        // Handle to parent window.                                                   NULL)))      // Flags.    {        cout<<"Error creating Exchange message service.";        goto error;    }            // You now have to obtain the entry id for the new service.    // You can do this by getting the message service table    // and getting the entry that corresponds to the new service.    if (FAILED(hRes = lpSvcAdmin->GetMsgServiceTable(0,                 // Flags.                                                     &lpMsgSvcTable)))  // Pointer to table.    {        cout<<"Error getting Message Service Table.";        goto error;    }    // Set up restriction to query table.    sres.rt = RES_CONTENT;    sres.res.resContent.ulFuzzyLevel = FL_FULLSTRING;    sres.res.resContent.ulPropTag = PR_SERVICE_NAME;    sres.res.resContent.lpProp = &SvcProps;    SvcProps.ulPropTag = PR_SERVICE_NAME;    SvcProps.Value.lpszA = "MSEMS";    // Query the table to obtain the entry for the newly created message service.    if (FAILED(hRes = HrQueryAllRows(lpMsgSvcTable,                                     (LPSPropTagArray)&sptCols,                                     &sres,                                     NULL,                                     0,                                     &lpSvcRows)))    {        cout<<"Error querying table for new message service.";        goto error;    }    // Set up a SPropValue array for the properties that you have to configure.    // First, the server name.    ZeroMemory(&rgval[1], sizeof(SPropValue) );    rgval[1].ulPropTag = PR_PROFILE_UNRESOLVED_SERVER;    rgval[1].Value.lpszA = szServer;    // Next, the mailbox name.    ZeroMemory(&rgval[0], sizeof(SPropValue) );    rgval[0].ulPropTag = PR_PROFILE_UNRESOLVED_NAME;     rgval[0].Value.lpszA = szMailbox;    // Configure the message service by using the previous properties.        if (FAILED(hRes = lpSvcAdmin->ConfigureMsgService(        (LPMAPIUID)lpSvcRows->aRow->lpProps[iSvcUID].Value.bin.lpb, // Entry ID of service to configure.        NULL,                                                       // Handle to parent window.        0,                                                          // Flags.        2,                                                          // Number of properties we are setting.        rgval)))                                                    // Pointer to SPropValue array.    {        cout<<"Error configuring message service.";        goto error;    }    goto cleanup;error:    cout<<" hRes = 0x"<<hex<<hRes<<dec<<endl;    return FALSE;cleanup:    // Clean up.    if (lpSvcRows) FreeProws(lpSvcRows);    if (lpMsgSvcTable) lpMsgSvcTable->Release();    if (lpSvcAdmin) lpSvcAdmin->Release();    if (lpProfAdmin) lpProfAdmin->Release();    MAPIUninitialize();    return TRUE;}				

Mẫu

Sau đây tập tin có sẵn để tải về từ Microsoft Download Trung tâm:
Ngày phát hành: Ngày 22 tháng 10 năm 2001

Để biết thêm thông tin về cách tải xuống các tệp hỗ trợ Microsoft, hãy bấm số bài viết sau để xem bài viết trong Cơ sở Kiến thức Microsoft:
119591 Cách tải xuống các tệp hỗ trợ của Microsoft từ dịch vụ trực tuyến
Microsoft đã quét vi-rút cho tệp này. Microsoft đã sử dụng phần mềm dò tìm vi-rút mới nhất hiện có vào ngày tệp được đăng. Tệp này lưu trên máy chủ được tăng cường bảo mật giúp ngăn chặn mọi thay đổi trái phép đối với tệp. Profiler.exe là một mẫu đơn giản Microsoft Visual C++ mà minh hoạ phương pháp 3 thông qua 10 below. Các tập tin Profiler.exe chứa các tập tin theo đây:

Tên tệpKích thước
Profiler.DSW1 KB
Profiler.DSP5 KB
Profiler.CPP12 KB

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 306962 - Xem lại Lần cuối: 08/27/2011 20:04:00 - Bản sửa đổi: 2.0

Microsoft Exchange Server 2003 Enterprise Edition, Microsoft Exchange Server 2003 Standard Edition, Microsoft Exchange 2000 Server Standard Edition, Microsoft Exchange Server 5.5 Standard Edition, Microsoft Messaging Application Programming Interface

  • kbdownload kbhowto kbmsg kbmt KB306962 KbMtvi
Phản hồi