Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / CDO / 10 сообщений из 10, страница 1 из 1
21.01.2004, 17:31
    #32383616
kxmep
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDO
Вот такая проблемка возникла...

Отсылаю письма с с вложением использую CDO - все работает
Если без вложения пишет следующее:
Код: plaintext
1.
Не удалось отправить сообщение на SMTP-сервер. Код ошибки транспорта: 0x800ccc6a. Отклик сервера:  451  See http://pobox.com/~djb/docs/smtplf.html.


Все это происходит на серваке с вин2003.


На моем локальном серваке (вин2000сервер) письма успешно отправляются и с аттачем и без него.

Вот как я это делаю:
1. есть класс:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
using System;

namespace Util.Email
{
	public class tEmail
	{
		int cdoSendUsing =  2 ;
		string cdoSendUsingMethod =  "http://schemas.microsoft.com/cdo/configuration/sendusing" ;
		string cdoSMTPServer =  "http://schemas.microsoft.com/cdo/configuration/smtpserver" ;
		string cdoSMTPServerPort =  "http://schemas.microsoft.com/cdo/configuration/smtpserverport" ;
		CDO.Message fMessage; 
		ADODB.Fields fFields;

		public tEmail(string Server)
		{
			fMessage = new CDO.Message();
			fFields = null;
			fFields = fMessage.Configuration.Fields;
			fFields[cdoSendUsingMethod].Value = cdoSendUsing;
			fFields[cdoSMTPServer].Value = Server;
			fFields[cdoSMTPServerPort].Value =  25 ;
			fFields.Update();
		}

		public tEmail(string Server, int Port)
		{
			fMessage = new CDO.Message();
			fFields = null;
			fFields = fMessage.Configuration.Fields;
			fFields[cdoSendUsingMethod].Value = cdoSendUsing;
			fFields[cdoSMTPServer].Value = Server;
			fFields[cdoSMTPServerPort].Value = Port;
			fFields.Update();
		}

		public void Send(string To, string From, string Subject, string Body)
		{
				fMessage.To = To;
				fMessage.From = From;
				fMessage.Subject = Subject;
				fMessage.TextBody = Body;
				
				fMessage.Send();
		}
	
		public void Attachment(string Filename)
		{
			fMessage.AddAttachment(Filename,  "", " ");
		}

	}
}


2. есть код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
			tEmail NewEmail = new tEmail( "172 . 16 . 6 . 1 ");

			//Если это раскоментарить, то ошибка не вылетает 
			//NewEmail.Attachment( "");

			NewEmail.Send(" inbox@inbox.ru ", " mail@mail.ru ", " Сообщение! ", " Вот оно сообщение!!!");




Кто-нибудь сталкивался с этим?

_____
kxmep
...
Рейтинг: 0 / 0
22.01.2004, 09:56
    #32384074
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDO
авторВсе это происходит на серваке с вин2003.


На моем локальном серваке (вин2000сервер) письма успешно отправляются и с аттачем и без него.

может быть это баг в2003? уж больно ситуация корявая...

а какая версия студии/фреймворка используется?
...
Рейтинг: 0 / 0
22.01.2004, 10:01
    #32384088
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDO
похоже что это проблемы почтового сервера - поищите в гугле в группах темы на номер ошибки 0x800ccc6a
...
Рейтинг: 0 / 0
22.01.2004, 10:02
    #32384092
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDO
есть такие предложения


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
0x800CCC6A   SMTP  451  ERROR PROCESSING       Error processing request.

You might try removing the affected account under OE's 
Tools/Accounts/Mail for the particular account.  Then close Outlook 
Express, reopen it and recreate the account exactly as instructed by the 
ISP involved.  It's possible that the account information has become 
corrupted.
 -- 
 
Jim Pickering, MVP/OE



есть и другие
...
Рейтинг: 0 / 0
23.01.2004, 08:28
    #32385544
kxmep
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDO
hDrummerа какая версия студии/фреймворка используется?
Microsoft Visual Studio .NET 2003
На моей машине вин2000сервер, Microsoft .NET Framework Version:1.1.4322.573; ASP.NET Version:1.1.4322.573 (тут все работает)

На сервере вин2003, Microsoft .NET Framework Version:1.1.4322.573; ASP.NET Version:1.1.4322.573
_____
kxmep
...
Рейтинг: 0 / 0
23.01.2004, 12:33
    #32385994
kxmep
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDO
Большое спасибо тем, кто пытался помочь!

...и не менее большое сорри, за то, что немного не тот кусок кода написал.

И так решение...

На самом деле в коде написано:
Код: plaintext
1.
2.
3.
4.
...
string vBody =  "\nВот оно сообщение!!!\n" ;
NewEmail.Send( "inbox@inbox.ru" ,  "mail@mail.ru" ,  "Сообщение!" , vBody);
...


В сообщении об ошибке ясно сказано:
Код: plaintext
1.
2.
3.
...
See http://pobox.com/~djb/docs/smtplf.html
...


Там в свою очередь написано:

...
What is a bare LF, anyway?
It is an ASCII linefeed (LF) character not preceded by an ASCII carriage-return (CR) character.
Every line in an Internet mail message is required to end with CR LF. The entire message ends with CR LF dot CR LF. 822bis specifically prohibits other uses of LF.

The mail clients discussed above are incorrectly ending lines with LF and, in most cases, ending the entire message with LF dot LF. That's not CR LF dot CR LF, so a server such as msn.com will sit there waiting for the rest of the message. After a while it'll give up and drop the connection. Your mail doesn't get through.

Some mail servers convert a bare LF into CR LF, and accept LF dot LF as the end of a mail message. This behavior is specifically prohibited by 821bis.
...


А это значит, что писать надо так:
Код: plaintext
1.
2.
3.
4.
...
string vBody =  "\r\nВот оно сообщение!!!\r\n" ;
NewEmail.Send( "inbox@inbox.ru" ,  "mail@mail.ru" ,  "Сообщение!" , vBody);
...


Всем спасибо!
_____
kxmep
...
Рейтинг: 0 / 0
23.01.2004, 12:39
    #32386012
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDO
уже второй раз вижу эту ошибку в форуме и второй раз не обращаю на неё внимания :(

сам пишу обычно так: @"c:\example\"

может быть поэтому?
...
Рейтинг: 0 / 0
23.01.2004, 13:47
    #32386154
snake
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDO
по моему ты что-то напутал, h?
\r\n , \n и @"c:\temp" разные вещи.
...
Рейтинг: 0 / 0
23.01.2004, 14:35
    #32386253
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDO
авторпо моему ты что-то напутал, h?

ага - по диагонали посмотрел :)

имел ввиду ошибку с двойными слэшами string s = "c:\directory\"

(надо или @"c:\directory\" или "c:\\directory\\")
...
Рейтинг: 0 / 0
24.01.2004, 13:59
    #32386884
kxmep
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDO
В продолжение...

Выяснилось, что письма с аттачем отправлялись потому, что и файл и тело письма кодировалось Base64. Т.е. символ "\n" был перекодирован и теле письма не встречался.

Остается не понятным, почему же на моем серваке все работет даже если в теле письма есть символ "\n" без предшествующего символа "\r"?

kxmep
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / CDO / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]