2015-09-30 2 views
1

Мне нужно отправить некоторые файлы Pdf в виде вложений электронной почты, хранящихся в базе данных.Приложить несколько файлов к тому же электронному сообщению

Чтобы сделать это, выполните запрос в таблице Выбор поля (где) Coding и DateCoding и Хотя цикл, в котором я создаю список с аллеями, содержащиеся в PdfCoding через запятую:

if (reader.HasRows) 
{         
    while (reader.Read()) 
    { 
     PdfCoding = reader["PdfCoding"].ToString(); 
     string[] itemList = Regex.Split(PdfCoding, @"(?=D:)").Where(x => !string.IsNullOrEmpty(x)).ToArray(); 
     Commaseplist = String.Join(", ", itemList); 
     Response.Write(Commaseplist); 
    } 
} 

теперь Commaseplist содержит эту строку со всеми путями, содержащейся в PdfCoding:

D:\inetpub\wwwroot\app\public\015.pdfD:\inetpub\wwwroot\app\public\016.pdfD:\inetpub\wwwroot\app\public\017.pdfD:\inetpub\wwwroot\app\public\018.pdfD:\inetpub\wwwroot\app\public\019.pdf 

Но когда я пытаюсь приложить все PDF-файлы:

foreach (string value in itemList) 
{ 
    mailMessagePlainText.Attachments.Add(new Attachment(value.ToString())); 
} 

В качестве вложения в сообщении электронной почты я нахожу только файлы 019.pdf, что последнее в списке Commuseplist.

Пожалуйста, помогите мне.

Редактировать # 1

Строка в Commaseplist является:

D:\inetpub\wwwroot\app\public\015.pdf,D:\inetpub\wwwroot\app\public\016.pd‌​f, D:\inetpub\wwwroot\app\public\017.pdf,D:\inetpub\wwwroot\app\public\018.pdf, D:\inetpub\wwwroot\app\public\019.pdf, 

, когда я пытаюсь прикрепить все PDF файлы:

mailMessagePlainText.Attachments.Add(new Attachment(Commaseplist.ToString())); 

У меня есть эта ошибка :

Could not find file 'D:\inetpub\wwwroot\app\public\019.pdf,' 
+1

Где запятые? D: \ Inetpub \ Wwwroot \ приложение \ Public \ 015.pdfD: \ Inetpub \ Wwwroot \ приложение \ Public \ 016.pdfD: \ inetpub \ wwwroot \ app \ public \ 017.pdfD: \ inetpub \ wwwroot \ app \ public \ 018.pdfD: \ inetpub \ wwwroot \ app \ public \ 019.pdf – thewisegod

+0

В чем проблема? Как вставить запятые в строку списка? Что случилось? Недостаточно 'String.Join (", ", itemList);'? –

ответ

0

Я думаю, что жизнь уже трудно, почему сложнее больше? ...

Для вашей проблемы я предлагаю:

  1. в методе SQL запроса вам нужно создать строку в список и добавить каждый отдельный путь для PDF-файл:

    List<string> pdfList = new List<string>(); 
    
        ... 
    
        if (reader.HasRows) 
        { 
         while (reader.Read()) 
         { 
          pdfList.Add(reader["PdfCoding"].ToString());          
         } 
        } 
    
  2. В ваш метод для отправки по электронной почте:

    //Start 
    foreach (string file in pdfList) 
    { 
        mailMessagePlainText.Attachments.Add(new Attachment(file)); 
    } 
    //End 
    

Надеюсь, это поможет!

Счастливое кодирование!

1
string Commaseplist = @"D:\inetpub\wwwroot\app\public\015.pdfD:\inetpub\wwwroot\app\public\016.pdfD:\ine‌​tpub\wwwroot\app\public\017.pdfD:\inetpub\wwwroot\app\public\018.pdfD:\inetpub\ww‌​wroot\app\public\019.pdf"; 
    string[] itemList = Commaseplist.Replace(".pdf", ".pdf,").TrimEnd(',').Split(','); 
    MailMessage mailMessagePlainText = new MailMessage(); 
    foreach (string value in itemList) 
    { 
     mailMessagePlainText.Attachments.Add(new Attachment(value)); 
    } 

enter image description here

+0

Хорошо поймать Джереми. Я просто собирался прокомментировать удаление последней запятой. – thewisegod

+0

'CS1502: лучшее перегруженное соответствие метода для 'string.TrimEnd (params char [])' имеет некоторые недопустимые аргументы –

+0

См. Отредактированный ответ. Нужно заменить TrimEnd (",") на TrimEnd (','). – thewisegod

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