Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

Отправка почты   Найти похожие ветки 

 
MTK   (2012-07-11 12:54) [0]

Добрый день!


 
MTK   (2012-07-11 12:57) [1]

Отправляю почту с помощью такой процедуры:

procedure TfrmMain.SendSMTPMessage(Const ASMTPServer: WideString; SMTPServerPort: Integer;
                                   Const AFrom, ATo, ASubject, ATextBody: WideString;
                                   FileList: TStrings;
                                   AUserName, APassword: String;
                                   ASSL: Boolean;
                                   Const ACharSet: WideString  = "utf-8");

Var
 I: Integer;
 pMessage,
 pAttachment,
 pConfiguration,
 pFields,
 pField: OleVariant;
Begin
 pMessage:=CreateComObject(CLASS_Message) as IDispatch;

 pMessage.BodyPart.Charset:=ACharSet;
 pMessage.To:=ATo;
 pMessage.From:=AFrom;
 pMessage.Subject:=ASubject;
 pMessage.TextBody:=ATextBody;
 pMessage.AutoGenerateTextBody:=True;
 pMessage.MimeFormatted:=True;

 for I:=0 to FileList.Count - 1 do
     begin
       pAttachment:=pMessage.AddAttachment(FileList[I], "", "");
       mLog.Lines.Add("     файл к отправке: " + FileList[I]);
     end;

 pAttachment.Charset:=ACharSet;

 pConfiguration:=CreateComObject(CLASS_Configuration) as IDispatch;

 pFields:=pConfiguration.Fields;
 pField:=pFields.Item(WideString(cdoSendUsingMethod));
 pField.Value:=Integer(cdoSendUsingPort);
 pField:=pFields.Item(cdoSMTPServer);
 pField.Value:=ASMTPServer;
 pField:=pFields.Item(WideString(cdoSMTPServerPort));
 pField.Value:=SMTPServerPort;
 pField:=pFields.Item(WideString(cdoSMTPAuthenticate));

 if APassword = "" then
    pField.Value:=cdoAnonymous
 else
    pField.Value:=cdoBasic;

 pField:=pFields.Item(WideString(cdoSendUserName));
 pField.Value:=AUserName;
 pField:=pFields.Item(WideString(cdoSendPassword));
 pField.Value:=APassword;

 if APassword <> "" then
    begin
      pField:=pFields.Item(WideString(cdoSMTPUseSSL));
      pField.Value:=ASSL;

      if ASSL then
         mLog.Lines.Add("     подключение через безопасное соединение (SSL)");
    end;

 pFields.Update;
 pMessage.Configuration:=pConfiguration;

pMessage.Send;
End;


Задаю такие параметры:

ASMTPServer = smtp.mail.ru
SMTPServerPort = 25
AFrom = email
ATo = email
ASubject = subject
ATextBody = textbody
FileList = список файлов
AUserName = логин (почтовый ящик)
АPassword = пароль от ящика
ASSL = FALSE

Пробую с двумя почтовыми ящиками на маил.ру.

Если параметр авторизации = cdoAnonymous, то первый ящик отправляет письмо.
А второй выдает ошибку:
"Код ошибки транспорта: 0x800ccc65. Отклик сервера: 503 Administrative prohibition -- authorization required.  Users in your domain are not allowed to send email without authorization.  See http://help.mail.ru/mail-help/mailer/popsmtp for details"

Если параметр авторизации = cdoBasic и заполняю АPassword, то первый и второй ящик выдает ошибку.
"Не удалось отправить сообщение на SMTP-сервер. Код ошибки транспорта: 0x80040217. Отклик сервера: not available"

Подскажите, пожалуйста, где может быть ошибка.


 
MTK   (2012-07-11 13:51) [2]

хм... список cdo констант на форум не добавляются


 
MTK   (2012-07-11 13:53) [3]

Const
 CLASS_Message: TGUID = "{CD000001-8B95-11D1-82DB-00C04FB1625D}";
 CLASS_Configuration: TGUID = "{CD000002-8B95-11D1-82DB-00C04FB1625D}";
 cdoSendUsingMethod = "schemas.microsoft.com/cdo/configuration/sendusing";
 cdoSMTPServer = "schemas.microsoft.com/cdo/configuration/smtpserver";
 cdoSMTPServerPort = "schemas.microsoft.com/cdo/configuration/smtpserverport";
 cdoSMTPAuthenticate = "schemas.microsoft.com/cdo/configuration/smtpauthenticate";
 cdoSendUsingPort = $00000002;
 cdoAnonymous = $00000000;
 cdoBasic = $00000001;
 cdoSendUserName ="schemas.microsoft.com/cdo/configuration/cdoSendUserName";
 cdoSendPassword="schemas.microsoft.com/cdo/configuration/cdoSendPassword";
 cdoSMTPUseSSL="schemas.microsoft.com/cdo/configuration/smtpusessl";


 
Dennis I. Komarov ©   (2012-07-12 22:06) [4]

И что? Сорсы компонента закрыты? Ну тогда ССЗБ... Курить RFC по SMTP в последних редакциях (версиях)...

P.S. SMTP не сложный протокол. TTcpClient :)


 
Anatoly Podgoretsky ©   (2012-07-13 07:38) [5]

> Dennis I. Komarov  (12.07.2012 22:06:04)  [4]

Зато расширения сложные, относительно


 
MTK   (2012-07-13 14:08) [6]

Скачал Synapse. За пару минут переделал. Теперь всё работает ))



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.091 c
15-1340919817
guest
2012-06-29 01:43
2013.03.22
Сбой при подключении к прокси-серверу...


2-1332009690
теркин
2012-03-17 22:41
2013.03.22
Использование полиморфных объектов


2-1332848600
Zheksonz
2012-03-27 15:43
2013.03.22
Приоритет выполнения программы.


15-1344972507
guest
2012-08-14 23:28
2013.03.22
conhost.exe...


15-1339965003
Юрий
2012-06-18 00:30
2013.03.22
С днем рождения ! 18 июня 2012 понедельник





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский