2016-04-20 15 views
1

Ich versuche, eine Datei mit dem SMTP aus Gmail zu senden, aber ich bin auf ein Problem gestoßen.C# Targeting eines Verzeichnisses, von dem ein Mapname teilweise bekannt ist

Die Datei wird im Windows appdata-Ordner gespeichert. Um die Datei an die E-Mail hinzufügen, ich bin mit:

attachment = new System.Net.Mail.Attachment((Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/Folder1/Folder2/Folder3/result.txt")); 

Der Code wie oben funktioniert, aber:

Das Problem, das ich derzeit haben, ist, dass Folder2 wie oben zu sehen ist, wird ein zufälliger Name mit Zahlen, Buchstaben und dem Wort TEMP.

Zum Beispiel a12TEMP34b

Ich habe versucht und gesucht, wenn ich in der Lage bin * irgendwie zu verwenden, aber kann nicht scheinen, um es zu arbeiten.

Irgendwelche Ideen?

Antwort

0

können Sie Directory.EnumerateDirectories verwenden für einen bestimmten Ordner zu suchen:

var folder1 = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Folder1"); 
var folder2 = Directory.EnumerateDirectories(folder1, "*TEMP*").Single(); 
var path = Path.Combine(folder2, "Folder3/result.txt"); 
attachment = new System.Net.Mail.Attachment(path) 
+0

Vielen Dank! Das ist in der Tat, was ich gesucht habe! – japoo

0

Sie könnten Directory.GetDirectory in einem String-Array analysieren und das erste Element dieses Arrays abrufen, wenn Sie sicher sind, dass es immer dieser Pfad sein wird.

So:

string staticPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/Folder1/"; 

string dynamicFolder = Directory.GetDirectory(staticPath, "*TEMP*")[0]; 

string finalPath = dynamicFolder + "/Folder3/result.txt"