Главная страница
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.232 c
15-1337747844
Медвежонок Пятачок
2012-05-23 08:37
2013.03.22
Многое здесь было, а этого еще не припомню


4-1261045077
Гном11
2009-12-17 13:17
2013.03.22
Что вместо WinSingt в Delphi 2006


6-1263679694
zSvetik
2010-01-17 01:08
2013.03.22
Открыл, нарезал, передал, склеил, показал видео


2-1339488057
guest
2012-06-12 12:00
2013.03.22
конвертация ad path...?


2-1338107276
rikitiki2012
2012-05-27 12:27
2013.03.22
Автоматически прерывает выполнение (BreakPoint в настройках )