Was kann ich verstehen, dass Sie irgendwo auf einem Archivierungsserver bestehende E-Mails haben, und Sie mögen, dass sie zu Ihrem Outlook Online oder Outlook Office 365
importieren Was Sie tun können, dass Sie den Exchange-Web-Service nutzen können, und Importieren Sie Ihre exportierten E-Mails. Meistens können die E-Mails im .eml oder .msg Format importiert werden. Ich kann Ihnen die Anleitung für .eml-Dateien zur Verfügung stellen.
Auf Ihrem Archivierungsserver können Sie die EML-Dateisicherungen von E-Mails erhalten oder Sie können eine E-Mail generieren, indem Sie eine E-Mail aus Outlook Desktop/Mozilla Thunderbird zu Testzwecken exportieren.
Jetzt können Sie die Nuget Package Microsoft.Exchange.WebServices verwenden, die eigentlich API für Microsoft Exchange Web Services verwaltet wird
Sie können den folgenden Code
void main()
{
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
// Get the information of the account
service.Credentials = new WebCredentials("account email here", "account password here");
service.AutodiscoverUrl("account email here", RedirectionUrlValidationCallback);
UploadMIMEEmail(service);
}
public static bool RedirectionUrlValidationCallback(string redirectionUrl)
{
// The default for the validation callback is to reject the URL.
bool result = false;
Uri redirectionUri = new Uri(redirectionUrl);
// Validate the contents of the redirection URL. In this simple validation
// callback, the redirection URL is considered valid if it is using HTTPS
// to encrypt the authentication credentials.
if (redirectionUri.Scheme == "https")
{
result = true;
}
return result;
}
private static void UploadMIMEEmail(ExchangeService service)
{
EmailMessage email = new EmailMessage(service);
string emlFileName = @"E:\asad.eml";
using (FileStream fs = new FileStream(emlFileName, FileMode.Open, FileAccess.Read))
{
byte[] bytes = new byte[fs.Length];
int numBytesToRead = (int)fs.Length;
int numBytesRead = 0;
while (numBytesToRead > 0)
{
int n = fs.Read(bytes, numBytesRead, numBytesToRead);
if (n == 0)
break;
numBytesRead += n;
numBytesToRead -= n;
}
// Set the contents of the .eml file to the MimeContent property.
email.MimeContent = new MimeContent("UTF-8", bytes);
}
// Indicate that this email is not a draft. Otherwise, the email will appear as a
// draft to clients.
ExtendedPropertyDefinition PR_MESSAGE_FLAGS_msgflag_read = new ExtendedPropertyDefinition(3591, MapiPropertyType.Integer);
email.SetExtendedProperty(PR_MESSAGE_FLAGS_msgflag_read, 1);
// This results in a CreateItem call to EWS. The email will be saved in the Inbox folder.
email.Save(WellKnownFolderName.Inbox);
}
diese Methode Was nutzen tut, ist, dass die Uploads Senden Sie eine E-Mail an den Exchange-Server als importierte E-Mail mit allen E-Mail-Daten, die genau in der exportierten .eml gefunden wurden.
Wenn Sie Server austauschen läuft lokal/innerhalb von Domäne, dann können Sie auch den Austausch URL angeben, indem
service.Url = new Uri("https://computername.domain.contoso.com/EWS/Exchange.asmx");
Auch wenn Sie den Standard-Anmeldeinformationen anmelden möchten, dann können Sie angeben
service.UseDefaultCredentials = true;
für weitere Informationen können Sie folgen
https://msdn.microsoft.com/en-us/library/office/dn672319(v=exchg.150).aspx#bk_importproperties
https://code.msdn.microsoft.com/how-to-import-vcard-files-ffa0ff50
Ah, werde ich tun. Was ist die nächste API, die diese Fähigkeit bietet? Wird die EWS Managed API den Zweck erfüllen? – lolski
EWS kann das tun, besonders wenn Sie einen MIME-Stream zum Importieren haben: https://msdn.microsoft.com/en-us/library/office/dn672319(v=exchg.150).aspx –