summary refs log tree commit diff stats
path: root/commands
diff options
context:
space:
mode:
Diffstat (limited to 'commands')
-rw-r--r--commands/msgview/save.go10
1 files changed, 9 insertions, 1 deletions
diff --git a/commands/msgview/save.go b/commands/msgview/save.go
index ef6bba8..5d01e4d 100644
--- a/commands/msgview/save.go
+++ b/commands/msgview/save.go
@@ -182,9 +182,17 @@ func generateFilename(part *models.BodyStructure) string {
 		filename = fn
 	} else if fn, ok := part.Params["name"]; ok {
 		filename = fn
-	} else {
+	}
+	// Some MUAs send attachments with names like /some/stupid/idea/happy.jpeg
+	// Assuming non hostile intent it does make sense to use just the last
+	// portion of the pathname as the filename for saving it.
+	filename = filename[strings.LastIndex(filename, "/")+1:]
+	switch filename {
+	case "", ".", "..":
 		timestamp := time.Now().Format("2006-01-02-150405")
 		filename = fmt.Sprintf("aerc_%v", timestamp)
+	default:
+		// already have a valid name
 	}
 	return filename
 }