Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Отправка почты [XP]


MTK ©   (2012-07-11 12:54:00) 

Добрый день!


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

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


Anatoly Podgoretsky   (2012-07-13 07:38:00) [2]

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

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


Dennis I. Komarov   (2012-07-12 22:06:00) [3]

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

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


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

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';


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

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


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

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

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/popsmtpfor details"

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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо