Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.072 c
2-1328770345
Gu
2012-02-09 10:52
2013.03.22
Cmd


6-1263641367
RokWeb
2010-01-16 14:29
2013.03.22
Отправка пакета по сети(Winsock2).


4-1259040937
Alex_C
2009-11-24 08:35
2013.03.22
"Принудительная" запись в COM-порт


15-1329646997
Чайник
2012-02-19 14:23
2013.03.22
Direct 3D и Delphi 2010


2-1334682069
SiDimka
2012-04-17 21:01
2013.03.22
DBGrid > TreeView > DBGrid