Java:打开默认邮件客户端
我有一个软件,定期解析我的邮件收件箱。程序的功能取决于运行的默认邮件程序 如何从java中启动默认邮件程序 我知道您可以通过使用Java:打开默认邮件客户端,java,email,Java,Email,我有一个软件,定期解析我的邮件收件箱。程序的功能取决于运行的默认邮件程序 如何从java中启动默认邮件程序 我知道您可以通过使用桌面类来实现这一点: Desktop.getDesktop().mail() 但是除了启动默认的邮件客户端之外,它还会打开一个我不想要的新电子邮件窗口。 如何在不打开“撰写新电子邮件”窗口的情况下打开默认邮件客户端 < >编辑:我现在试图使用这个代码片段来提取信息,但因为这个代码不编译(像大多数微软代码片段,当你不是C++开发人员时,它非常糟糕,只需要一些代码),因
桌面
类来实现这一点:
Desktop.getDesktop().mail()
但是除了启动默认的邮件客户端之外,它还会打开一个我不想要的新电子邮件窗口。如何在不打开“撰写新电子邮件”窗口的情况下打开默认邮件客户端
< >编辑:我现在试图使用这个代码片段来提取信息,但因为这个代码不编译(像大多数微软代码片段,当你不是C++开发人员时,它非常糟糕,只需要一些代码),因为它缺少对<代码>和LPrPrimeLtabe<代码>的引用。缺少的代码会是什么样子?
以下是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;
}
}
#定义UNICODE
#定义UNICODE
#定义严格
#包括
#包括
#包括
int WINAPI WinMain(HINSTANCE hinst、HINSTANCE hinstPrev、,
LPSTR lpCmdLine,int nShowCmd){
//获取IProfAdmin接口。
LPPROFADMIN LPPROFADMIN;
HRESULT hr=MAPIAdminProfiles(0,&lpProfAdmin);
//获取配置文件表
LPMAPITABLE lpProfileTable;
hr=lpProfAdmin->GetProfileTable(0,&lpProfileTable);
//建立一个PR_DEFAULT_PROFILE=TRUE的限制
SPropValue spvDefaultProfile;
spvDefaultProfile.ulPropTag=PR_DEFAULT_PROFILE;
spvDefaultProfile.Value.b=TRUE;
限制;
sres.rt=RES_属性;
sres.res.resProperty.relop=relop_EQ;
sres.res.resProperty.ulPropTag=PR_DEFAULT_PROFILE;
sres.res.resProperty.lpProp=&spvDefaultProfile;
hr=lpProfileTable->Restrict(&sres,待处理批次);
hr=lpProfileTable->FindRow(&sres,书签\u开头,0);
LPSRowSet pRow=NULL;
hr=lpProfileTable->QueryRows(1、0和船头);
//我们有一场比赛
如果(成功(hr)){
LPSTR lpDisplayName=pRow->aRow[0]。lpProps[0]。Value.lpszA;
std::cout以下是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;
}
}
#定义UNICODE
#定义UNICODE
#定义严格
#包括
#包括
#包括
int WINAPI WinMain(HINSTANCE hinst、HINSTANCE hinstPrev、,
LPSTR lpCmdLine,int nShowCmd){
//获取IProfAdmin接口。
LPPROFADMIN LPPROFADMIN;
HRESULT hr=MAPIAdminProfiles(0,&lpProfAdmin);
//获取配置文件表
LPMAPITABLE lpProfileTable;
hr=lpProfAdmin->GetProfileTable(0,&lpProfileTable);
//建立一个PR_DEFAULT_PROFILE=TRUE的限制
SPropValue spvDefaultProfile;
spvDefaultProfile.ulPropTag=PR_DEFAULT_PROFILE;
spvDefaultProfile.Value.b=TRUE;
限制;
sres.rt=RES_属性;
sres.res.resProperty.relop=relop_EQ;
sres.res.resProperty.ulPropTag=PR_DEFAULT_PROFILE;
sres.res.resProperty.lpProp=&spvDefaultProfile;
hr=lpProfileTable->Restrict(&sres,待处理批次);
hr=lpProfileTable->FindRow(&sres,书签\u开头,0);
LPSRowSet pRow=NULL;
hr=lpProfileTable->QueryRows(1、0和船头);
//我们有一场比赛
如果(成功(hr)){
LPSTR lpDisplayName=pRow->aRow[0]。lpProps[0]。Value.lpszA;
std::我真的不想使用JNI,但我明白你的意思。我真的不想使用JNI,但我明白你的意思。非常感谢!lpDisplayName的值是“Default”。当我将其解析为MAPILogonEx函数()的profilename时,我得到一个错误,即该配置文件不存在。我以前已经尝试过用字符串提供该函数“Default”不起作用。我从发布的代码中跳到了要解析的正确值。我该怎么做?请看我的原始问题:不幸的是,我没有使用此API的任何经验,我无法让它运行以测试它,对不起…非常感谢!lpDisplayName的值是“Default”“。当我将其作为profilename解析为MAPILogonEx函数()时,我得到一个错误,即该配置文件不存在。我以前已尝试使用字符串“Default”提供该函数”但它不起作用。我跳了起来,从发布的代码中获取正确的值进行解析。我该怎么做?请看我最初的问题:不幸的是,我没有使用此API的任何经验,我无法让它运行以测试它,抱歉。。。