Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> fileUpload и направление почты, при направлении файла ошибка 
V
    Опции темы
Doss
Дата 13.6.2013, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 5.10.2007

Репутация: нет
Всего: нет



В общем проблема в следующем:
Клиент загружает свои файлы через fileUpload и жмет на кнопку чтобы направить вложением по почте.
так вот, вхожу на сайт, (первый раз) все делаю все направляется и правильно.
Не ухожу с этой страницы (ну где этот Upload) заново выбираю файл направляю и он направлен. Вуаля, вроде все ОК!
Но иду на почту куда направил и смотрю. Первое отлично файл есть.
Вторая тоже есть, но его название вот такое: =utf-8B0JRgNC+0YjQvdGD0YDQvtCy0LDQvdC+
и он не открывается нормально.
Но что интересно, ушел с этой страницы, погулял по другим и снова первое ОК остальные как обычно....В чем дело А smile 

Кратно о реализации.
когда клиент прикрепляет файл и жмет на кнопку то я записываю файл на сервер и оттудого уже прикрепляю файл. (ведь в первый раз то работает)
Сервак на W2008 R2 IIS7 - может в этом дело? Но сомневаюсь, ведь первое.....

Тааак, есть подазрения на FileUpload, типа его нужно обнулить и так далее

нужно решение кто что скажет....
PM MAIL   Вверх
Doss
Дата 13.6.2013, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 5.10.2007

Репутация: нет
Всего: нет



В общем решение кажется находиться (это реально портак FW 4)

Цитата

Справка: Microsoft выпустила исправление еще ​​в сентябре 2010 года: E-mail имя привязанности сообщение, которое содержит не-ASCII символов и длиннее 41 UTF-8 закодированных байтов кодируется в два раза до передачи в приложения, скомпилированные для NET Framework 4.

http://social.msdn.microsoft.com/Forums/en...5f-128a24306d55
PM MAIL   Вверх
Doss
  Дата 14.6.2013, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 5.10.2007

Репутация: нет
Всего: нет



В общем вопрос решил применением класс
Код

public class AttachmentHelper
{
 public static Attachment CreateAttachment(string attachmentFile, string displayName, TransferEncoding transferEncoding)
 {
  Attachment attachment = new Attachment(attachmentFile);
  attachment.TransferEncoding = transferEncoding;

  string tranferEncodingMarker = String.Empty;
  string encodingMarker = String.Empty;
  int maxChunkLength = 0;

  switch (transferEncoding)
  {
   case TransferEncoding.Base64:
    tranferEncodingMarker = "B";
    encodingMarker = "UTF-8";
    maxChunkLength = 30;
    break;
   case TransferEncoding.QuotedPrintable:
    tranferEncodingMarker = "Q";
    encodingMarker = "ISO-8859-1";
    maxChunkLength = 76;
    break;
   default:
    throw (new ArgumentException(String.Format("The specified TransferEncoding is not supported: {0}", transferEncoding, "transferEncoding")));
  }

  attachment.NameEncoding = Encoding.GetEncoding(encodingMarker);

  string encodingtoken = String.Format("=?{0}?{1}?", encodingMarker, tranferEncodingMarker);
  string softbreak = "?=";
  string encodedAttachmentName = encodingtoken;

  if (attachment.TransferEncoding == TransferEncoding.QuotedPrintable)
   encodedAttachmentName = HttpUtility.UrlEncode(displayName, Encoding.Default).Replace("+", " ").Replace("%", "=");
  else
   encodedAttachmentName = Convert.ToBase64String(Encoding.UTF8.GetBytes(displayName));

  encodedAttachmentName = SplitEncodedAttachmentName(encodingtoken, softbreak, maxChunkLength, encodedAttachmentName);
  attachment.Name = encodedAttachmentName;

  return attachment;
 }

 private static string SplitEncodedAttachmentName(string encodingtoken, string softbreak, int maxChunkLength, string encoded)
 {
  int splitLength = maxChunkLength - encodingtoken.Length - (softbreak.Length * 2);
  var parts = SplitByLength(encoded, splitLength);

  string encodedAttachmentName = encodingtoken;

  foreach (var part in parts)
   encodedAttachmentName += part + softbreak + encodingtoken;

  encodedAttachmentName = encodedAttachmentName.Remove(encodedAttachmentName.Length - encodingtoken.Length, encodingtoken.Length);
  return encodedAttachmentName;
 }

 private static IEnumerable<string> SplitByLength(string stringToSplit, int length)
 {
  while (stringToSplit.Length > length)
  {
   yield return stringToSplit.Substring(0, length);
   stringToSplit = stringToSplit.Substring(length);
  }

  if (stringToSplit.Length > 0) yield return stringToSplit;
 }
}


и вызовом его

Код

 Attachment attachment = 
    AttachmentHelper.CreateAttachment(attachmentFilePath, displayName, TransferEncoding.Base64);

   msg.Attachments.Add(attachment);

Все работает и проблем пока нет!

Добавлено через 3 минуты и 25 секунд
Да, и большое спасибо Marcel Roma, выручил

Добавлено через 10 минут и 19 секунд
Думаю вопрос временно решен кажется, пока патчи не выйдут. Если выйдут или есть то буду благодарен если скинут подобный пример использования. (Это очень важно, а то большинство скажут два слова типа Да Нет Наверное  - и думай что он имел ввиду, и самомнением типа я умный сам догадался и вы мучайтесь..... ну да ладно....  )

Добавлено через 12 минут и 4 секунды
Всем спасибо за бурное обсуждение....
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0391 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.