ich eine C# Console App erstellen möchten (oder eine Dienstleistung - nicht sicher, wie ein Dienst noch zu entwickeln), dass: KenntOutlook neue E-Mail Excel Reihe
1), wenn eine neue E-Mail wird im Posteingang empfangen> LOTALogs Mappe. Diese E-Mail wird von einer mobilen Anwendung gesendet und enthält einen Anhang und einige Probleme, die der Kunde erfahren hat.
2) Nimmt den neuen E-Mail-Inhalt, der durch Kommas getrennt ist, analysiert und fügt den Inhalt in ein Excel-Arbeitsblatt ein, in dem die Spalten bereits eingerichtet sind.
verwaltet I zu erzeugen:
1) Der Parser:
public static string[] emailContentsArray()
{
string content = "Username = Customer1,User ID = 362592,Unit ID = 805618,Date = Mar 12, 2017,Device = Android LGE LG-H990,OS version = 7.0 (API 24),App version = 1.0.0.56,Description = some description,Message = some message";
string[] contentArray = content.Split(',');
// Case where date format includes another comma
if (contentArray.Length > 10)
{
// Parsing headers
contentArray[0] = contentArray[0].Substring(11);
contentArray[1] = contentArray[1].Substring(10);
contentArray[2] = contentArray[2].Substring(10);
contentArray[3] = contentArray[3].Substring(7) + ", " + contentArray[4].Substring(1);
contentArray[4] = contentArray[5].Substring(9);
contentArray[5] = contentArray[6].Substring(13);
contentArray[6] = contentArray[7].Substring(14);
contentArray[7] = contentArray[8].Substring(14);
contentArray[8] = contentArray[9].Substring(10);
contentArray[9] = null;
for (int i = 0; i < contentArray.Length; i++)
{
Console.Write(contentArray[i] + ",");
}
}
//else
//{
//}
return contentArray;
}
2) zugegriffen, um den Ordner und gezählt, um die Anzahl der Elemente:
public static string[] emailContent()
{
string[] content = null;
Microsoft.Office.Interop.Outlook.Application app = null;
Microsoft.Office.Interop.Outlook.NameSpace ns = null;
Microsoft.Office.Interop.Outlook.MAPIFolder inboxFolder = null;
Microsoft.Office.Interop.Outlook.MAPIFolder logFolder = null;
app = new Microsoft.Office.Interop.Outlook.Application();
ns = app.GetNamespace("MAPI");
inboxFolder = ns.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox);
logFolder = app.ActiveExplorer().CurrentFolder = inboxFolder.Folders["LOTALogs"];
int itemCount = logFolder.Items.Count;
Console.WriteLine("\n\nFolder Name: {0}, Num Items: {1}\n", logFolder.Name, itemCount);
return content;
}
3) geöffnet und gedruckt die Inhalt der Tabelle:
Excel.Application xlApp = new Excel.Application();
string path = "C:\\SomeUser\\BugReports";
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@path);
Excel.Worksheet xlWorksheet = xlWorkbook.Sheets[1];
Excel.Range xlRange = xlWorksheet.UsedRange;
for (int i = 1; i <= xlRange.Row + xlRange.Rows.Count - 1; i++)
{
for (int j = 1; j <= xlRange.Column + xlRange.Columns.Count - 1; j++)
{
if (j == 1)
Console.Write("\r\n");
if (xlRange.Cells[i, j] != null && xlRange.Cells[i, j].Value2 != null)
Console.Write(xlRange.Cells[i, j].Value2.ToString() + "\t");
}
}
xlWorkbook.Save();
xlWorkbook.Close();
xlApp.Quit();
Console.ReadLine();
Ich bin jetzt ein wenig verloren :)
Ich brauche noch:
1) Erstellen Sie ein Ereignis-Listener (ich glaube, das ist, was es heißt) so kann ich die E-Mail-Körper-Parser sagen, um die E-Mail gehen holen Inhalt.
2) Extrahieren Sie den E-Mail-Text aus der E-Mail.
erhielt diese
Console.WriteLine(logFolder.Items[1].Body);
3) Nehmen Sie die E-Mail-Inhalte mit und an die Tabelle anhängen.
4) Sollte ich dies als Windows Service erstellen?
PS - Ich bin kein Entwickler, nur mit Code herumspielen und versuchen, so effizient wie möglich zu sein. Ich möchte diese Tabelle nicht manuell ausfüllen, wenn eine technologische Lösung in Sicht ist. Bitte kommentieren Sie, wenn Sie Vorschläge haben, mit dem Code effizienter zu arbeiten und ihn anders zu modellieren.