2012-07-19 10 views
5

Sto facendo un'applicazione per accedere a un particolare account di posta elettronica ospitato su un server Exchange 2003 e faccio un po 'di roba alle e-mail non lette trovate. Non so davvero molto su come funziona MAPI, quindi non sarei troppo sorpreso se mi fosse sfuggito qualcosa di molto ovvio! Io sono (sfortunatamente) usando C#, ho letto sui problemi che questo può causare (e sto temendo le ripercussioni, ma il mio capo vuole farlo così ...).Come connettersi a un account Outlook/Exchange specifico?

Non riesco a trovare alcuna informazione su come connettersi a un account specifico! L'applicazione verrà eseguita da qualcuno laptop (diciamo il mio), quindi ci sarà un account predefinito a cui Outlook si connette quando viene aperto. Quindi:

  • E 'possibile connettersi a un altro account da una macchina in cui l'utente ha già lì conto proprio e probabilmente ha aperto Outlook?

  • Se è possibile. Come faccio a fare questo? Quando si inizializzano gli oggetti di interoperabilità di Outlook, l'applicazione ottiene automaticamente l'account dell'utente e imposta l'utente corrente su quello. Avevo sperato che il metodo Logon() ordinasse questo ma no. Anche solo in esecuzione Outlook.Application olApp = new Outlook.Application(); Passa e imposta l'utente corrente sull'account standard.

spero che sto facendo senso (probabilmente non), ma si sentono liberi di porre domande più dettagliate nei commenti e risponderò il più rapidamente possibile. Come ho detto, so molto poco di MAPI e di Exchange, quindi sono alle prese con come esprimere la mia domanda.

risposta

4

Se si desidera connettersi a un account di posta elettronica specifico Exchange 2003 è necessario utilizzare WebDAV, CDOEX o ExOLEDB. Se si utilizza Exchange 2007+, è possibile utilizzare EWS.

Outlook Interop solo consente di collegare l'account desktop interattivo (corrente utente connesso). L'unico modo per connettersi ad altri account è se l'account interattivo corrente ha added the shared mailbox.

+0

(sigh) ... ho sospettato questo può essere il caso, ma ha dovuto andare avanti con l'altro itinerario. Grazie per il consiglio. I collegamenti sono utili punti di partenza. – Jammerz858

1

È inoltre possibile utilizzare Redemption per questo: eseguire il codice come utente di dominio che può accedere alle cassette postali in questione, chiamare RDOSession. LogonExchangeMailbox per quell'utente, quindi aprire le cassette postali degli altri utenti utilizzando RDOSession. GetSharedMailbox/GetSharedDefaultFolder.

Poiché Exchange 2013 non consente più le connessioni RPC di vecchio stile (solo RPC-over-HTTP o MAPI-over-HTTP), è possibile utilizzare RDOSession.LogonHostedExchangeMailbox (funziona sia per Exchange 2013 che per Exchange 2010).

1

Se avete 2 account definiti su una macchina, è possibile utilizzare i seguenti: example

Outlook.Application app = new Outlook.Application(); 
Outlook.NameSpace ns = app.GetNamespace("MAPI"); 

// optional 
//object missing = Type.Missing; 
//ns.Logon(missing, missing, true, false); 

// additional email address 
string recipientName = "[email protected]"; 

Outlook.Recipient recip = ns.CreateRecipient(recipientName); 
recip.Resolve(); 

if (recip.Resolved) 
{ 
Outlook.MAPIFolder inboxFolder = ns.GetSharedDefaultFolder(recip, Outlook.OlDefaultFolders.olFolderInbox); 
} 
Problemi correlati