.NET के लिए Aspose.Email में उपयोगी विशेषताएँ
एकीकृत मैसेजिंग के साथ कार्य करना
Aspose.Email Exchange Server 2010 से एकीकृत मैसेजिंग जानकारी प्राप्त कर सकता है। वर्तमान में एकीकृत मैसेजिंग जैसे कॉन्फ़िगरेशन जानकारी प्राप्त करना, आउटबाउंड कॉल शुरू करना, कॉल ID द्वारा फ़ोन कॉल जानकारी प्राप्त करना और ID द्वारा फ़ोन कॉल डिस्कनेक्ट करना समर्थित है। निम्नलिखित कोड उदाहरण दिखाता है कि Microsoft Exchange Server 2010 से एकीकृत मैसेजिंग कॉन्फ़िगरेशन जानकारी कैसे प्राप्त की जाए।
IEWSClient client = EWSClient.GetEWSClient(mailboxUri, credential);
UnifiedMessagingConfiguration umConf = client.GetUMConfiguration();
मेल टिप्स प्राप्त करना
Microsoft Exchange Server ने Exchange Server 2010 और 2013 में कई नई सुविधाएँ जोड़ी। इन में से एक उपयोगकर्ताओं को ईमेल संदेश रचना के समय मेल टिप्स प्राप्त करने की अनुमति देती है। ये टिप्स बहुत उपयोगी हैं क्योंकि वे ईमेल भेजे जाने से पहले जानकारी प्रदान करती हैं। उदाहरण के लिए, यदि प्राप्तकर्ता सूची में कोई ईमेल पता गलत है, तो एक टिप प्रदर्शित होती है जो बताती है कि ईमेल पता अमान्य है। मेल टिप्स आपको ईमेल भेजने से पहले आउट ऑफ ऑफिस उत्तर देखना भी संभव बनाती हैं: Exchange Server (2010 एवं 2013) ईमेल रचना के दौरान मेल टिप भेजता है यदि एक या अधिक प्राप्तकर्ताओं ने आउट ऑफ ऑफिस उत्तर सेट किया हो। इस लेख में दिखाए गए सभी फीचर्स के लिए Microsoft Exchange Server 2010 Service Pack 1 आवश्यक है। निम्न कोड स्निपेट आपको दिखाता है कि इस फीचर को कैसे उपयोग किया जाए, EWSClient क्लास जो Exchange Web Services का उपयोग करता है, जो Microsoft Exchange Server 2007 एवं बाद के संस्करणों में उपलब्ध है।
// Create instance of EWSClient class by giving credentials
IEWSClient client = EWSClient.GetEWSClient("https://outlook.office365.com/ews/exchange.asmx", "testUser", "pwd", "domain");
Console.WriteLine("Connected to Exchange server...");
// Provide mail tips options
MailAddressCollection addrColl = new MailAddressCollection();
addrColl.Add(new MailAddress("test.exchange@ex2010.local", true));
addrColl.Add(new MailAddress("invalid.recipient@ex2010.local", true));
GetMailTipsOptions options = new GetMailTipsOptions("administrator@ex2010.local", addrColl, MailTipsType.All);
// Get Mail Tips
MailTips[] tips = client.GetMailTips(options);
// Display information about each Mail Tip
foreach (MailTips tip in tips)
{
// Display Out of office message, if present
if (tip.OutOfOffice != null)
{
Console.WriteLine("Out of office: " + tip.OutOfOffice.ReplyBody.Message);
}
// Display the invalid email address in recipient, if present
if (tip.InvalidRecipient == true)
{
Console.WriteLine("The recipient address is invalid: " + tip.RecipientAddress);
}
}
एक्सचेंज इम्पर्सोनेशन
Exchange इम्पर्सोनेशन किसी को दूसरे खाते की नकल करने और इम्पर्सोनेटेड खाते की अनुमतियों का उपयोग करके कार्य करने की अनुमति देता है, न कि अपनी स्वयं की। जहाँ देलेगेशन उपयोगकर्ताओं को अन्य उपयोगकर्ताओं के पक्ष में कार्य करने देता है, इम्पर्सोनेशन उन्हें अन्य उपयोगकर्ताओं की तरह कार्य करने देता है। Aspose.Email Exchange इम्पर्सोनेशन का समर्थन करता है। The EWSClient class प्रदान करता है ImpersonateUser और ResetImpersonation इस सुविधा को आसान बनाने के लिए मेथड्स।
इस कार्य को करने के लिए:
- उपयोगकर्ता 1 के लिए ExchangeWebServiceClient को प्रारंभ करें।
- उपयोगकर्ता 2 के लिए ExchangeWebServiceClient को प्रारंभ करें।
- परीक्षण संदेश खातों में जोड़ें।
- इम्पर्सोनेशन सक्षम करें।
- इम्पर्सोनेशन रीसेट करें।
निम्न कोड स्निपेट दिखाता है कि आप कैसे उपयोग करें EWSClient इम्पर्सोनेशन सुविधा लागू करने के लिए क्लास।
// Create instance's of EWSClient class by giving credentials
IEWSClient client1 = EWSClient.GetEWSClient("https://outlook.office365.com/ews/exchange.asmx", "testUser1", "pwd", "domain");
IEWSClient client2 = EWSClient.GetEWSClient("https://outlook.office365.com/ews/exchange.asmx", "testUser2", "pwd", "domain");
{
string folder = "Drafts";
try
{
foreach (ExchangeMessageInfo messageInfo in client1.ListMessages(folder))
client1.DeleteItem(messageInfo.UniqueUri, DeletionOptions.DeletePermanently);
string subj1 = string.Format("NETWORKNET_33354 {0} {1}", "User", "User1");
client1.AppendMessage(folder, new MailMessage("User1@exchange.conholdate.local", "To@aspsoe.com", subj1, ""));
foreach (ExchangeMessageInfo messageInfo in client2.ListMessages(folder))
client2.DeleteItem(messageInfo.UniqueUri, DeletionOptions.DeletePermanently);
string subj2 = string.Format("NETWORKNET_33354 {0} {1}", "User", "User2");
client2.AppendMessage(folder, new MailMessage("User2@exchange.conholdate.local", "To@aspose.com", subj2, ""));
ExchangeMessageInfoCollection messInfoColl = client1.ListMessages(folder);
//Assert.AreEqual(1, messInfoColl.Count);
//Assert.AreEqual(subj1, messInfoColl[0].Subject);
client1.ImpersonateUser(ItemChoice.PrimarySmtpAddress, "User2@exchange.conholdate.local");
ExchangeMessageInfoCollection messInfoColl1 = client1.ListMessages(folder);
//Assert.AreEqual(1, messInfoColl1.Count);
//Assert.AreEqual(subj2, messInfoColl1[0].Subject);
client1.ResetImpersonation();
ExchangeMessageInfoCollection messInfoColl2 = client1.ListMessages(folder);
//Assert.AreEqual(1, messInfoColl2.Count);
//Assert.AreEqual(subj1, messInfoColl2[0].Subject);
}
finally
{
try
{
foreach (ExchangeMessageInfo messageInfo in client1.ListMessages(folder))
client1.DeleteItem(messageInfo.UniqueUri, DeletionOptions.DeletePermanently);
foreach (ExchangeMessageInfo messageInfo in client2.ListMessages(folder))
client2.DeleteItem(messageInfo.UniqueUri, DeletionOptions.DeletePermanently);
}
catch { }
}
}
EWS का उपयोग कर ऑटो डिस्कवर्स सुविधा
Aspose.Email API आपको EWS क्लाइंट का उपयोग करके एक्सचेंज सर्वर सेटिंग्स की खोज करने देता है।
string email = "asposeemail.test3@aspose.com";
string password = "Aspose@2017";
AutodiscoverService svc = new AutodiscoverService();
svc.Credentials = new NetworkCredential(email, password);
IDictionary<UserSettingName, object> userSettings = svc.GetUserSettings(email, UserSettingName.ExternalEwsUrl).Settings;
string ewsUrl = (string)userSettings[UserSettingName.ExternalEwsUrl];
Console.WriteLine("Auto discovered EWS Url: " + ewsUrl);
एक्सचेंज सर्वर पर PST पुनर्स्थापना ऑपरेशन को रोकें
Aspose.Email API आपको एक PST फ़ाइल को एक्सचेंज सर्वर में पुनर्स्थापित करने की अनुमति देता है। हालांकि, यदि ऑपरेशन बड़े आकार की PST फ़ाइल के कारण अधिक समय ले रहा है, तो ऑपरेशन को रोकने के मानदंड निर्धारित करना आवश्यक हो सकता है। यह निम्नलिखित नमूना कोड में दिखाए गए अनुसार API का उपयोग करके हासिल किया जा सकता है।
Note: उदाहरण में निम्न वर्ग को भी जोड़ने की आवश्यकता होती है।
public class CustomAbortRestoreException : Exception { }
using (IEWSClient client = EWSClient.GetEWSClient("https://exchange.office365.com/ews/exchange.asmx", "username", "password"))
{
DateTime startTime = DateTime.Now;
TimeSpan maxRestoreTime = TimeSpan.FromSeconds(15);
int processedItems = 0;
BeforeItemCallback callback = delegate
{
if (DateTime.Now >= startTime.Add(maxRestoreTime))
{
throw new CustomAbortRestoreException();
}
processedItems++;
};
try
{
//create a test pst and add some test messages to it
var pst = PersonalStorage.Create(new MemoryStream(), FileFormatVersion.Unicode);
var folder = pst.RootFolder.AddSubFolder("My test folder");
for (int i = 0; i < 20; i++)
{
var message = new MapiMessage("from@gmail.com", "to@gmail.com", "subj", new string('a', 10000));
folder.AddMessage(message);
}
//now restore the PST with callback
client.Restore(pst, new Aspose.Email.Clients.Exchange.WebService.RestoreSettings
{
BeforeItemCallback = callback
});
Console.WriteLine("Success!");
}
catch (CustomAbortRestoreException)
{
Console.WriteLine($"Timeout! {processedItems}");
}