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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема c System.Net.Mail.MailAddress, e-mail адрес с ТОЧКОЙ в конце 
:(
    Опции темы
Pankon
Дата 18.5.2006, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



VS 2005

При создании e-mail адреса "name.user.@host.com" (с ТОЧКОЙ в конце) появляется исключение - "Строка не является допустимым е-маил адресом", хотя многие маил сервера поддерживают такие адреса....

Что делать? 


 
PM MAIL   Вверх
ivashkanet
Дата 18.5.2006, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



Pankon, так захотели разработчики фрэймворка  smile 
ИМХО, такой адрес не соответствует стандартам.
Нужно либо искать уже готовый класс (поддерживающий такие адреса), либо писать новый (reflector тебе в руки).  smile  
PM MAIL WWW ICQ   Вверх
Pankon
Дата 18.5.2006, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(ivashkanet @  18.5.2006,  13:40 Найти цитируемый пост)
так захотели разработчики фрэймворка

А что же делать пользователям(с пользователями), которые уже имеют такие адреса smile 



Цитата(ivashkanet @  18.5.2006,  13:40 Найти цитируемый пост)
Нужно либо искать уже готовый класс 

На сколько я понимаю, сообщение генерирует SMTP-сервер....
 
PM MAIL   Вверх
ivashkanet
Дата 18.5.2006, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



Цитата(Pankon @  18.5.2006,  14:15 Найти цитируемый пост)
На сколько я понимаю, сообщение генерирует SMTP-сервер....

Нет, сообщение генерирует сам класс.
У меня не стоит SMTP-сервера, да и студия явно указывает на момент создания класса (запуска конструктора) с неправильными параметрами.
P.S. Поразбирай, на досуге, процесс создания MailAddrss-а:
Код

public MailAddress(string address, string displayName, Encoding displayNameEncoding)
{
      if (address == null)
      {
            throw new ArgumentNullException("address");
      }
      if (address == string.Empty)
      {
            throw new ArgumentException(SR.GetString("net_emptystringcall", new object[] { "address" }), "address");
      }
      this.displayNameEncoding = displayNameEncoding;
      this.displayName = displayName;
      this.ParseValue(address);
      if ((this.displayName != null) && (this.displayName != string.Empty))
      {
            if ((this.displayName[0] == '"') && (this.displayName[this.displayName.Length - 1] == '"'))
            {
                  this.displayName = this.displayName.Substring(1, this.displayName.Length - 2);
            }
            this.displayName = this.displayName.Trim();
      }
      if ((this.displayName != null) && (this.displayName.Length > 0))
      {
            if (!MimeBasePart.IsAscii(this.displayName, false) || (this.displayNameEncoding != null))
            {
                  if (this.displayNameEncoding == null)
                  {
                        this.displayNameEncoding = Encoding.GetEncoding("utf-8");
                  }
                  this.encodedDisplayName = MimeBasePart.EncodeHeaderValue(this.displayName, this.displayNameEncoding, MimeBasePart.ShouldUseBase64Encoding(displayNameEncoding));
                  StringBuilder builder1 = new StringBuilder();
                  int num1 = 0;
                  MailBnfHelper.ReadQuotedString(this.encodedDisplayName, ref num1, builder1, true);
                  this.encodedDisplayName = builder1.ToString();
            }
            else
            {
                  this.encodedDisplayName = this.displayName;
            }
      }
}

Код

private void ParseValue(string address)
{
      string text1 = null;
      int num1 = address.IndexOf('"');
      if (num1 > 0)
      {
            throw new FormatException(SR.GetString("MailAddressInvalidFormat"));
      }
      if (num1 == 0)
      {
            num1 = address.IndexOf('"', 1);
            if (num1 < 0)
            {
                  throw new FormatException(SR.GetString("MailAddressInvalidFormat"));
            }
            text1 = address.Substring(1, num1 - 1);
            if (address.Length == (num1 + 1))
            {
                  throw new FormatException(SR.GetString("MailAddressInvalidFormat"));
            }
            address = address.Substring(num1 + 1);
      }
      if (text1 == null)
      {
            num1 = address.IndexOf('<');
            if (num1 > 0)
            {
                  text1 = address.Substring(0, num1);
                  address = address.Substring(num1);
            }
      }
      if (this.displayName == null)
      {
            this.displayName = text1;
      }
      num1 = 0;
      address = MailBnfHelper.ReadMailAddress(address, ref num1, out this.encodedDisplayName);
      this.GetParts(address);
}

Код

private void GetParts(string address)
{
      if (address != null)
      {
            int num1 = address.IndexOf('@');
            if (num1 < 0)
            {
                  throw new FormatException(SR.GetString("MailAddressInvalidFormat"));
            }
            this.userName = address.Substring(0, num1);
            this.host = address.Substring(num1 + 1);
      }
}

..... 
 
PM MAIL WWW ICQ   Вверх
Pankon
Дата 18.5.2006, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Pankon @  18.5.2006,  14:15 Найти цитируемый пост)
сообщение генерирует SMTP-сервер


действительно это не так ...

Добавлено @ 15:04 
Цитата(ivashkanet @  18.5.2006,  14:24 Найти цитируемый пост)
Поразбирай, на досуге, 
 что это даст?
Фирма переходит на .NET и постоянно сталкивается с проблемами. 
И проблема c System.Net.Mail.MailAddress опять показывает скорополительность решения..., 
что же делать если клиенты имеют такие адреса?...  Материть  MS?












 smile 
 
PM MAIL   Вверх
Ch0bits
Дата 18.5.2006, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Python Dev.
****


Профиль
Группа: Завсегдатай
Сообщений: 2124
Регистрация: 21.2.2005
Где: Казань

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



На крайний случай можно написать свою реализацию SMTP, для хорошего программиста это не проблема.
Припоминаю что даже видел такие решения на codeproject.com 
PM WWW   Вверх
Pankon
Дата 18.5.2006, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Тогда и всю студию...

...и Framework в придачу...





 
PM MAIL   Вверх
Ch0bits
Дата 18.5.2006, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Python Dev.
****


Профиль
Группа: Завсегдатай
Сообщений: 2124
Регистрация: 21.2.2005
Где: Казань

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



Pankon
Не надо, их уже переписали. dotNET -> Mono; VS -> #Develop  smile  
PM WWW   Вверх
Pankon
Дата 19.5.2006, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Попробывал старые:
CDONTS.NewMail
и
CDO.Message

Ошибки при исполнении нет, но получатель все равно ничего не получает, 
а вот на адрес отправителя приходит сообщение, что произошло неудачное отправление. smile 
   

Это сообщение отредактировал(а) Pankon - 19.5.2006, 17:17
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


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

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


 




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


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

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