In MailMessage.cs when an attachment is saved then subsequently recreated it appears that the original attachment name is lost and a new random string is generated in it's place.
To fix this I changed line 269 as follows:
builder.AppendLine(string.Format("Content-Disposition: attachment; filename="{0}"", ((Attachment)view).Name));