2013-12-13 138 views
1

我有一個定期解析我的郵件收件箱的軟件。程序的功能性取決於運行的默認郵件程序。Java:打開默認郵件客戶端

如何從java內啓動默認郵件程序?

我知道,你可以通過使用Desktop類達致這:

Desktop.getDesktop().mail() 

但除了啓動它還會打開,我不希望有一個新的電子郵件窗口的默認郵件客戶端。
如何打開默認郵件客戶端而不打開「撰寫新的EMail」窗口?

編輯:我想現在提取信息myselve使用此代碼段:http://support.microsoft.com/kb/180233/en-us但由於此代碼不編譯(像極了微軟的代碼片段,這是非常糟糕的,當你不一個C++開發人員,只需要一些代碼),因爲它缺少對&lpProfileTable的引用。缺失的代碼將如何顯示?

+1

JNI/JNA ..... ... –

+0

我真的不想使用JNI,但我明白了你的觀點。 – Markus

回答

1

這裏是MSDN樣品應該什麼樣子:

#define UNICODE 
#define _UNICODE 
#define STRICT 

#include <windows.h> 
#include <mapix.h> 

#include <iostream> 

int WINAPI WinMain(HINSTANCE hinst, HINSTANCE hinstPrev, 
        LPSTR lpCmdLine, int nShowCmd) { 
    // Get a IProfAdmin Interface. 
    LPPROFADMIN lpProfAdmin; 
    HRESULT hr = MAPIAdminProfiles(0, &lpProfAdmin); 

    // Get the Table of Profiles 
    LPMAPITABLE lpProfileTable; 
    hr = lpProfAdmin->GetProfileTable(0, &lpProfileTable); 

    // Build a restriction where PR_DEFAULT_PROFILE = TRUE 
    SPropValue spvDefaultProfile; 
    spvDefaultProfile.ulPropTag = PR_DEFAULT_PROFILE; 
    spvDefaultProfile.Value.b = TRUE; 

    SRestriction sres; 
    sres.rt = RES_PROPERTY; 
    sres.res.resProperty.relop = RELOP_EQ; 
    sres.res.resProperty.ulPropTag = PR_DEFAULT_PROFILE; 
    sres.res.resProperty.lpProp = &spvDefaultProfile; 

    hr = lpProfileTable->Restrict(&sres, TBL_BATCH); 
    hr = lpProfileTable->FindRow(&sres, BOOKMARK_BEGINNING, 0); 

    LPSRowSet pRow = NULL; 
    hr = lpProfileTable->QueryRows(1, 0, &pRow); 
    // We have a match 
    if (SUCCEEDED(hr)) { 
     LPSTR lpDisplayName = pRow->aRow[0].lpProps[0].Value.lpszA; 
     std::cout << lpDisplayName; 
    } 
} 

它編譯下G ++,但我無法弄清楚如何將可執行鏈接...

+0

非常感謝! lpDisplayName的值是「Default」。當我將此解析爲MAPILogonEx函數的配置文件名時(http://msdn.microsoft.com/en-us/library/office/cc815545.aspx),我收到一個錯誤,該配置文件不存在。我之前已經嘗試過使用字符串「Default」提供功能,但它不起作用。我已經跳轉到從發佈的代碼解析正確的值。我怎麼能這樣做?看到我原來的問題:http://stackoverflow.com/questions/20561415/c-mapi-mapilogonex-how-to-open-default-mail-inbox – Markus

+0

不幸的是,我沒有這個API的任何經驗,我不能讓它運行以測試它,對不起... – mavroprovato

相關問題