![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Отправка почты [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"
Подскажите, пожалуйста, где может быть ошибка.