2016-12-10 2 views
1

Желаемая подход:.NET SMTP Mail - Приложение Имя файла переименовывается

Я хочу сохранить то же имя файла при отправке файла в качестве вложения и не имеют .NET переименовать его (по какой причине это добавление на пути к файлу). Мне не нужно передавать другой параметр, чтобы задать имя файла.

Пример:

- Project (folder) 
- Content (folder) 
    - Files (folder) 
    - PDF (folder) 
    - Triumeq (folder) 
    - sample.pdf (file) 

Имя файла в приложении по электронной почте всегда переименован в:

DOMAINcontentfilespdftriumeqsample.pdf

DOMAIN = отмечен в изображении

enter image description here

Что я пробовал:

// 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

Вы пробовали использовать обратную косую черту, т. Е. «Содержимое \ файлы \ pdf \ sample.pdf»? – CodeFuller

+0

@CodeFuller Просто попробовал, не работал. Также используются двойные слэбы '//' и '\\\', но безрезультатно. Но хорошая мысль. –

ответ

1

Attachment конструктор вы используете значение Name свойство Mime ContentType в качестве второго аргумента. Когда вы передаете строку с косой чертой, они просто удаляются как недопустимые символы.

У вас не получится указать путь в имени файла вложений, разрешено только чистое имя файла. Таким образом, вы должны извлечь имя файла из пути, например .:

msg.Attachments.Add(new Attachment(fs, Path.GetFileName(fs.Name), MimeTypesHelper.GetContentType(Path.GetExtension(fs.Name)))); 

Это позволит сделать имя вложения, чтобы быть "sample.pdf.

+0

Ницца! Я даже посмотрел на сообщение об этом, должно быть, пропустил его. Хорошо выглядишь! –

 Смежные вопросы

  • Нет связанных вопросов^_^