मेरे पास C# में लिखा गया एक आउटलुक जोड़ें।Outlook 2007 में वर्तमान उपयोगकर्ता का ईमेल पता प्राप्त करें
मैं सोच रहा था कि वर्तमान उपयोगकर्ता का ईमेल पता कैसे प्राप्त किया जा सकता है या नहीं?
धन्यवाद
मेरे पास C# में लिखा गया एक आउटलुक जोड़ें।Outlook 2007 में वर्तमान उपयोगकर्ता का ईमेल पता प्राप्त करें
मैं सोच रहा था कि वर्तमान उपयोगकर्ता का ईमेल पता कैसे प्राप्त किया जा सकता है या नहीं?
धन्यवाद
उपयोग Namespace.CurrentUser
: http://msdn.microsoft.com/en-us/library/bb220041(v=office.12).aspx
वी.एस. 2010 में परीक्षण किया गया, .NET 4.0, आउटलुक 2010:
var emailAddress = this.Application.ActiveExplorer().Session.CurrentUser.AddressEntry.GetExchangeUser().PrimarySmtpAddress;
इसे विभिन्न ईमेल को छोटा क्यों नहीं करें एड्रेस = this.Aplication.Session.CurrentUser.AddressEntry.Address? आपको यह भी जांचना होगा कि पताEntry.GetExchangeUser मान्य है - प्रोफ़ाइल में कोई एक्सचेंज वाले उपयोगकर्ता के लिए, GetExchangeUser शून्य वापस आ जाएगा। –
@DmitryStreblechenko, मैंने जानबूझकर इसे लंबे रूप में लिखा ताकि यह स्पष्ट होगा कि यह कहां से आता है। साथ ही, मैंने जानबूझकर कोड की लाइनों की न्यूनतम संख्या के साथ उत्तर दिया। मैं इसे ओपी में अपने आवेदन के संदर्भ में रक्षात्मक कोड लिखने के लिए छोड़ देता हूं। –
सही काम किया;) –
outlookObject.ActiveExplorer().Session.CurrentUser.Address
की कोशिश करो। VS10, Outlook 2007 पर मेरे लिए काम किया, .NET 4.0
किसी से गुजर रहा है, मैं दृढ़ता से Application.ActiveExplorer().Session
, ActiveExplorer()
के रूप में उपयोग करते हुए एक NullReferenceException
वापस कर सकती है Application.Session.CurrentUser.AddressEntry.Address
का उपयोग कर था सलाह कुछ भी करने के बजाय, उदाहरण के लिए जब माध्यम से एक ईमेल खोलने आउटलुक।
यदि आप सामान्य पीओपी/आईएमएपी सर्वर का उपयोग कर रहे हैं, तो आपको ई-मेल पता मिलता है: आवेदन। सत्र। CurrentUser.AddressEntry.Address;
एक्सचेंज सर्वर के साथ, आपको ई-मेल पता मिलता है: आवेदन। सत्र। CurrentUser.AddressEntry.GetExchangeUser()। PrimarySmtpAddress;
"वर्तमान उपयोगकर्ता पता" की परिभाषा पर निर्भर करता है।
Appication.Session.CurrentUser
(रिटर्न Recipient
वस्तु) से प्राप्त किया जा सकता है। Recipient.Address
संपत्ति का उपयोग करें। ध्यान दें कि एक एक्सचेंज खाते (Recipient.AddressEntry.Type == "EX"
) के लिए आपको एक EX टाइप पता प्राप्त होगा। एसएमटीपी पता पुनर्प्राप्त करने के लिए, Recipient.AddressEntry.GetExchangeUser().PrimarySmtpAddress
का उपयोग करें। त्रुटियों के मामले में नल/अपवादों को संभालने के लिए तैयार रहें।विस्तारित MAPI स्तर (सी ++ या डेल्फी) पर, का उपयोग IMAPISession::QueryIdentity
(आप इसे OutlookSpy में परीक्षण कर सकते हैं - IMAPISession बटन पर क्लिक करके QueryIdentity)। इसके बाद आप PR_ADDRTYPE
संपत्ति ("EX" बनाम "एसएमटीपी") और PR_EMAIL_ADDRESS
(जब PR_ADDRTYPE
= "एसएमटीपी") या (एक्सचेंज के मामले में) PR_SMTP_ADDRESS
(उपस्थित होने की गारंटी नहीं है) और PR_EMS_AB_PROXY_ADDRESSES
(बहुविकल्पीय संपत्ति एक्सचेंज पते, सभी प्रॉक्सी (उपनाम) पते सहित)।
प्रोफ़ाइल में एकाधिक खातों के मामले में, एकाधिक खातों के माध्यम से एक ईमेल भेजा या प्राप्त किया जा सकता है। उस मामले में MailItem.SendUsingAccount
का उपयोग करें (Account
ऑब्जेक्ट देता है, शून्य हो सकता है - उस मामले में Application.Session.CurentUser
का उपयोग करें)। यह प्राप्त, भेजे गए या ईमेल के लिए दोनों मान्य है (Application.ActiveInspector.CurrentItem
या Application.ActiveExplorer.ActiveInlineResponse
)।
किसी दिए गए प्रोफ़ाइल में सभी खातों को Namespace.Accounts
संग्रह (Application.Session.Accounts
का उपयोग करके एक्सेस किया जा सकता है)। Account.SmtpAddress
संपत्ति का उपयोग कर खाते का पता एक्सेस किया जा सकता है। ध्यान दें कि Outlook ऑब्जेक्ट मॉडल केवल मेल खाते का खुलासा करता है। कुछ स्टोर खाते (जैसे पीएसटी) संग्रह में नहीं हैं क्योंकि उनके पास आंतरिक उपयोगकर्ता पहचान नहीं है, भले ही कुछ अन्य खाते (जैसे कि पीओपी 3/एसएमटीपी) उस स्टोर को डिलीवर कर सकें। यदि आप सभी खातों तक पहुंचना चाहते हैं, तो आप Redemption और इसके RDOSession का उपयोग कर सकते हैं।लेखा संग्रह (RDOAccounts ऑब्जेक्ट)।
विस्तारित एमएपीआई स्तर पर, खातों को IOlkAccountManager इंटरफेस के माध्यम से उजागर किया जाता है। यदि आप IOlkAccountManager बटन पर क्लिक करते हैं तो आप OutlookSpy में इसके साथ खेल सकते हैं।
Owner
संपत्ति का उपयोग कर स्टोर स्वामी तक पहुंच सकते हैं।यदि कैलेंडर में कोई अपॉइंटमेंट बनाया जा रहा है, तो क्या यह जानने के लिए ओओएम का उपयोग करने का कोई तरीका है कि कौन सा ईमेल खाता इसके साथ जुड़ा होगा? अर्थात। जब हमारे पास प्रोफाइल में एकाधिक खाते होते हैं तो कैलेंडर को खाते में मैप करने के लिए। – Alex
निश्चित रूप से नहीं, नियुक्ति अभिभावक संपत्ति पढ़ें, इसे फ़ोल्डर ऑब्जेक्ट पर डालें, फ़ोल्डर पढ़ें। स्टोर संपत्ति। नेमस्पेस के माध्यम से लूप। खाता संग्रह और नियुक्ति के मूल स्टोर एंट्री आईडी की प्रविष्टि आईडी के साथ खाता.DeliveryStore.EntryID संपत्ति के मूल्य की तुलना करें। –
धन्यवाद! इस बीच, मैंने पाया कि अभी तक बनाए गए अपॉइंटमेंटइटम ने अपने प्राप्तकर्ता संग्रह में एक प्राप्तकर्ता शामिल किया है और इस प्राप्तकर्ता के पास मुझे आवश्यक ईमेल है (ताकि आयोजक पहले ही प्रारंभ हो चुका हो)। एक आसान तरीका की तरह दिखता है (इस विशेष कार्य के लिए)। या क्या इस दृष्टिकोण की कोई कमी है? यह मुहैया कराया गया है कि प्रश्न में नियुक्तियां मेरे स्वयं के कोड द्वारा बनाई गई हैं, इसलिए जब नियुक्ति पहले से मौजूद हो तो मुझे इस मामले से निपटने की ज़रूरत नहीं है और इसकी प्राप्तकर्ता सूची गैर-डिफ़ॉल्ट हो सकती है और इस पर भरोसा नहीं किया जा सकता है। – Alex
हालांकि वीबीए था, सी # नहीं। मुझे लगता है कि सी # – electricsheep
में आप 'myEmailAddress = this.ActiveExplorer()। सत्र .CurrentUser.EmailAddress;' या अन्य समाधानों को आजमाएं: http://social.msdn.microsoft.com/forums/en- यूएस/vsto/thread/d2d9bf23-e27f-4f30-9199-42833d6919a4/ – acconrad