Σε αυτό το βήμα προς βήμα σεμινάριο, θα εξηγήσουμε πώς να αποθηκεύσετε το μήνυμα ηλεκτρονικού ταχυδρομείου στο δίσκο σε C#. Το μήνυμα email μπορεί να αποθηκευτεί ως μορφές αρχείου EML or MSG στο δίσκο. Θα λαμβάνουμε μηνύματα από το πλαίσιο ηλεκτρονικού ταχυδρομείου του Exchange, ωστόσο μπορείτε να λαμβάνετε μηνύματα και από άλλα γραμματοκιβώτια και να τα αποθηκεύετε στο δίσκο.
Βήματα για την αποθήκευση μηνύματος email στο δίσκο σε C#
- Λάβετε πακέτο Aspose.Email for .NET από το NuGet.org
- Συμπεριλάβετε τους χώρους ονομάτων Aspose.Email.Clients.Exchange και Aspose.Email.Clients.Exchange.WebService
- Ορισμός άδειας χρήσης με τη βοήθεια της μεθόδου SetLicense
- Δώστε πληροφορίες λογαριασμού Exchange Server
- Δημιουργήστε ένα αντικείμενο κλάσης NetworkCredential
- Δημιουργήστε ένα νέο αντικείμενο προγράμματος-πελάτη Exchange της κλάσης EWSClient
- Περιηγηθείτε σε όλα τα μηνύματα email που διαβάσατε από το γραμματοκιβώτιο
- Αποθηκεύστε κάθε μεμονωμένο μήνυμα ηλεκτρονικού ταχυδρομείου στο EML or MSG file formats
Ακολουθώντας τα παραπάνω απλά βήματα, μπορείτε να αποθηκεύσετε το μήνυμα email στο EML σε κώδικα C# στο δίσκο. Στο προηγούμενο θέμα μας, εξηγήσαμε το πώς να στείλετε email σε C# χρησιμοποιώντας τον διακομιστή SMTP Gmail. Ωστόσο, σε αυτό το θέμα, χρησιμοποιούμε τον διακομιστή Exchange για να ανακτήσουμε τα μηνύματα ηλεκτρονικού ταχυδρομείου και στη συνέχεια να τα αποθηκεύσουμε στο δίσκο.
Κώδικας για αποθήκευση μηνύματος email στο δίσκο σε C#
using System; | |
using System.Net; | |
//Add reference to Aspose.Email for .NET API | |
//Use following namespaces to save email message to disk | |
using Aspose.Email.Clients.Exchange; | |
using Aspose.Email.Clients.Exchange.WebService; | |
namespace SaveEmailMessageToDisk | |
{ | |
class Program | |
{ | |
static void Main(string[] args) | |
{ | |
//Set license before saving email message to disk | |
Aspose.Email.License AsposeEmailLicense = new Aspose.Email.License(); | |
AsposeEmailLicense.SetLicense(@"c:\asposelicense\license.lic"); | |
//setup account information | |
const string MailBoxUri = "https://outlook.office365.com/ews/exchange.asmx"; | |
const string Domain = @""; | |
const string Username = @"username@outlook.com"; | |
const string Password = @"userpassword"; | |
NetworkCredential CredentiaDetails = | |
new NetworkCredential(Username, Password, Domain); | |
//create email client | |
IEWSClient EmailClient = EWSClient.GetEWSClient(MailBoxUri, CredentiaDetails); | |
try | |
{ | |
//get mail box | |
ExchangeMailboxInfo MailBoxInfo = EmailClient.GetMailboxInfo(); | |
//get list of all messages from the mail box | |
ExchangeMessageInfoCollection MessagesCollection = | |
EmailClient.ListMessages(EmailClient.MailboxInfo.InboxUri); | |
//Loop through email messages | |
int MessageCount = 1; | |
foreach (ExchangeMessageInfo MessageInfo in MessagesCollection) | |
{ | |
string strMessageURI = MessageInfo.UniqueUri; | |
//get message details | |
Console.WriteLine("Subject: " + MessageInfo.Subject); | |
Console.WriteLine("From: " + MessageInfo.From.ToString()); | |
Console.WriteLine("To: " + MessageInfo.To.ToString()); | |
Console.WriteLine("Message ID: " + MessageInfo.MessageId); | |
Console.WriteLine("Unique URI: " + MessageInfo.UniqueUri); | |
//save each message to disk | |
EmailClient.SaveMessage(strMessageURI, "Messsage_" + MessageCount + ".eml"); | |
EmailClient.SaveMessage(strMessageURI, "Messsage_" + MessageCount + ".msg"); | |
MessageCount++; | |
} | |
} | |
catch (Exception ex) | |
{ | |
Console.WriteLine("Error: {0}", ex.Message); | |
} | |
} | |
} | |
} |
Στον παραπάνω κώδικα, αποθηκεύουμε τα μηνύματα ηλεκτρονικού ταχυδρομείου σε μορφές .eml και .msg. Λάβετε υπόψη ότι σε αυτόν τον κώδικα, λαμβάνουμε όλα τα μηνύματα και τα αποθηκεύουμε ένα προς ένα σε ξεχωριστά αρχεία. Ωστόσο, εάν τα εισερχόμενά σας έχουν πολλά μηνύματα, τότε πρέπει να τροποποιήσετε την προσέγγιση ανάλογα.