期望的方法:
我希望在将文件作为附件发送时保留相同的文件名,而不是将.NET重命名(无论出于何种原因,它都会添加到文件的路径上)。 我不想传递另一个参数来设置文件名。
示例:
- Project (folder)
- Content (folder)
- Files (folder)
- PDF (folder)
- Triumeq (folder)
- sample.pdf (file)
电子邮件附件中的文件名始终重命名为:
DOMAINcontentfilespdftriumeqsample.pdf
DOMAIN =在图片中标出
我尝试过的事情:
// add attachment if applicable
if (!string.IsNullOrEmpty(attachmentFilePath))
{
var fs = new FileStream(string.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, attachmentFilePath), FileMode.Open, FileAccess.Read);
msg.Attachments.Add(new Attachment(fs, fs.Name, MimeTypesHelper.GetContentType(Path.GetExtension(fs.Name))));
// MimeTypeHelper.GetContentType just returns the MimeType of the file listed in the file stream
}
或
if (!string.IsNullOrEmpty(attachmentFilePath))
{
msg.Attachments.Add(new Attachment(string.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, attachmentFilePath)));
}
每种方式始终重命名文件,并且不保留原始文件名
答案 0 :(得分:1)
您使用的附件构造函数需要将Mime ContentType的Name
属性值作为第二个参数。当您使用斜杠传递字符串时,它们将被删除为不允许的字符。
您将无法在文件附件名称中包含某些路径,只允许使用纯文件名。所以你应该从路径中提取文件名,例如:
msg.Attachments.Add(new Attachment(fs, Path.GetFileName(fs.Name), MimeTypesHelper.GetContentType(Path.GetExtension(fs.Name))));
这会使附件名称为' sample.pdf'。