Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отправить email с аттачем, через дефолтный клиент 
:(
    Опции темы
Guest
Дата 25.11.2005, 16:39 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Надо сабж
smile
  Вверх
Snowy
Дата 25.11.2005, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



mailto не поддерживает отправку аттачей.
Нужно использовать MAPI.
Код

unit Email;

interface

uses Windows, SysUtils, Classes;

function SendEMail(Handle: THandle; Mail: TStrings): Cardinal;

implementation

uses Mapi;

function SendEMail(Handle: THandle; Mail: TStrings): Cardinal;
type
  TAttachAccessArray = array [0..0] of TMapiFileDesc;
  PAttachAccessArray = ^TAttachAccessArray;
var
  MapiMessage: TMapiMessage;
  Receip: TMapiRecipDesc;
  Attachments: PAttachAccessArray;
  AttachCount: Integer;
  i1: integer;
  FileName: string;
  dwRet: Cardinal;
  MAPI_Session: Cardinal;
  WndList: Pointer;
begin
  dwRet := MapiLogon(Handle,'', '', MAPI_LOGON_UI or MAPI_NEW_SESSION,0,@MAPI_Session);
  if (dwRet <> SUCCESS_SUCCESS) then
  begin
    MessageBox(Handle,'Error while trying to send email','Error', MB_ICONERROR or MB_OK);
  end else begin
    FillChar(MapiMessage, SizeOf(MapiMessage), 0);
    Attachments := nil;
    FillChar(Receip, SizeOf(Receip), 0);
    if Mail.Values['to'] <> '' then
    begin
      Receip.ulReserved := 0;
      Receip.ulRecipClass := MAPI_TO;
      Receip.lpszName := PChar(Mail.Values['to']);
      Receip.lpszAddress := PChar('SMTP:' + Mail.Values['to']);
      Receip.ulEIDSize := 0;
      MapiMessage.nRecipCount := 1;
      MapiMessage.lpRecips := @Receip;
    end;
    AttachCount := 0;
    for i1 := 0 to MaxInt do
    begin
      if Mail.Values['attachment' + IntToStr(i1)] = '' then break;
      Inc(AttachCount);
    end;
    if AttachCount > 0 then
    begin
      GetMem(Attachments, SizeOf(TMapiFileDesc) * AttachCount);
      for i1 := 0 to AttachCount - 1 do
      begin
        FileName := Mail.Values['attachment' + IntToStr(i1)];
        Attachments[i1].ulReserved := 0;
        Attachments[i1].flFlags := 0;
        Attachments[i1].nPosition := ULONG($FFFFFFFF);
        Attachments[i1].lpszPathName := StrNew(PChar(FileName));
        Attachments[i1].lpszFileName :=
        StrNew(PChar(ExtractFileName(FileName)));
        Attachments[i1].lpFileType := nil;
      end;
      MapiMessage.nFileCount := AttachCount;
      MapiMessage.lpFiles := @Attachments^;
    end;
    if Mail.Values['subject'] <> '' then
    MapiMessage.lpszSubject := PChar(Mail.Values['subject']);
    if Mail.Values['body'] <> '' then
    MapiMessage.lpszNoteText := PChar(Mail.Values['body']);
    try
      Result := MapiSendMail(MAPI_Session,Handle,MapiMessage, MAPI_DIALOG, 0);
    except end;
    for i1 := 0 to AttachCount - 1 do
    begin
      StrDispose(Attachments[i1].lpszPathName);
      StrDispose(Attachments[i1].lpszFileName);
    end;
    if Assigned(MapiMessage.lpszSubject) then
      StrDispose(MapiMessage.lpszSubject);
    if Assigned(MapiMessage.lpszNoteText) then
      StrDispose(MapiMessage.lpszNoteText);
    if Assigned(Receip.lpszAddress) then
      StrDispose(Receip.lpszAddress);
    if Assigned(Receip.lpszName) then
      StrDispose(Receip.lpszName);
    MapiLogOff(MAPI_Session, Handle, 0, 0);
  end;
end;

end.


Использование:
Код

procedure TForm1.Button1Click(Sender: TObject);
var
  mail: TStringList;
begin
  mail := TStringList.Create;
  try
    mail.values['to'] := '[email protected]';
    mail.values['subject'] := 'Hello';
    mail.values['body'] := 'String1'+#13#10+'String2'+#13#10+'String3';
    // или mail.values['body'] := Memo1.Text;
    mail.values['attachment0'] := 'C:\1.zip';
    mail.values['attachment1'] := 'C:\2.zip';
    sendEMail(Application.Handle, mail);
  finally
    mail.Free;
  end;
end;


Это сообщение отредактировал(а) Snowy - 25.11.2005, 17:27
PM MAIL   Вверх
Guest
Дата 25.11.2005, 22:53 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Snowy @ 25.11.2005, 17:10)
mailto не поддерживает отправку аттачей.
Нужно использовать MAPI.

thx, открывается
но при этом возникает error "invalid pointer operation" smile
  Вверх
Snowy
Дата 26.11.2005, 02:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Хм. У меня открывалосьчисто.
Ошибка программы или почтовика?
Если программы, то в каком месте выпадает?
Что-нить менял, или пробовал этот вариант без изменений?
PM MAIL   Вверх
Guest
Дата 26.11.2005, 23:50 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Snowy @ 26.11.2005, 02:19)
Хм. У меня открывалосьчисто.
Ошибка программы или почтовика?
Если программы, то в каком месте выпадает?
Что-нить менял, или пробовал этот вариант без изменений?

Ничего не изменял, ошибка программы на строке
Код

sendEMail(Application.Handle, mail);

зы. Сейчас запустил ... ошибки нет.
Странно, ведь единственное, что я изменил - это вынес код в отдельный файл функций
  Вверх
maleziv
Дата 20.2.2012, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 16.11.2010

Репутация: нет
Всего: нет



Цитата(Snowy @ 25.11.2005,  17:10)
mailto не поддерживает отправку аттачей.
Нужно использовать MAPI.
Код

unit Email;

interface

uses Windows, SysUtils, Classes;

function SendEMail(Handle: THandle; Mail: TStrings): Cardinal;

implementation

uses Mapi;

function SendEMail(Handle: THandle; Mail: TStrings): Cardinal;
type
  TAttachAccessArray = array [0..0] of TMapiFileDesc;
  PAttachAccessArray = ^TAttachAccessArray;
var
  MapiMessage: TMapiMessage;
  Receip: TMapiRecipDesc;
  Attachments: PAttachAccessArray;
  AttachCount: Integer;
  i1: integer;
  FileName: string;
  dwRet: Cardinal;
  MAPI_Session: Cardinal;
  WndList: Pointer;
begin
  dwRet := MapiLogon(Handle,'', '', MAPI_LOGON_UI or MAPI_NEW_SESSION,0,@MAPI_Session);
  if (dwRet <> SUCCESS_SUCCESS) then
  begin
    MessageBox(Handle,'Error while trying to send email','Error', MB_ICONERROR or MB_OK);
  end else begin
    FillChar(MapiMessage, SizeOf(MapiMessage), 0);
    Attachments := nil;
    FillChar(Receip, SizeOf(Receip), 0);
    if Mail.Values['to'] <> '' then
    begin
      Receip.ulReserved := 0;
      Receip.ulRecipClass := MAPI_TO;
      Receip.lpszName := PChar(Mail.Values['to']);
      Receip.lpszAddress := PChar('SMTP:' + Mail.Values['to']);
      Receip.ulEIDSize := 0;
      MapiMessage.nRecipCount := 1;
      MapiMessage.lpRecips := @Receip;
    end;
    AttachCount := 0;
    for i1 := 0 to MaxInt do
    begin
      if Mail.Values['attachment' + IntToStr(i1)] = '' then break;
      Inc(AttachCount);
    end;
    if AttachCount > 0 then
    begin
      GetMem(Attachments, SizeOf(TMapiFileDesc) * AttachCount);
      for i1 := 0 to AttachCount - 1 do
      begin
        FileName := Mail.Values['attachment' + IntToStr(i1)];
        Attachments[i1].ulReserved := 0;
        Attachments[i1].flFlags := 0;
        Attachments[i1].nPosition := ULONG($FFFFFFFF);
        Attachments[i1].lpszPathName := StrNew(PChar(FileName));
        Attachments[i1].lpszFileName :=
        StrNew(PChar(ExtractFileName(FileName)));
        Attachments[i1].lpFileType := nil;
      end;
      MapiMessage.nFileCount := AttachCount;
      MapiMessage.lpFiles := @Attachments^;
    end;
    if Mail.Values['subject'] <> '' then
    MapiMessage.lpszSubject := PChar(Mail.Values['subject']);
    if Mail.Values['body'] <> '' then
    MapiMessage.lpszNoteText := PChar(Mail.Values['body']);
    try
      Result := MapiSendMail(MAPI_Session,Handle,MapiMessage, MAPI_DIALOG, 0);
    except end;
    for i1 := 0 to AttachCount - 1 do
    begin
      StrDispose(Attachments[i1].lpszPathName);
      StrDispose(Attachments[i1].lpszFileName);
    end;
    if Assigned(MapiMessage.lpszSubject) then
      StrDispose(MapiMessage.lpszSubject);
    if Assigned(MapiMessage.lpszNoteText) then
      StrDispose(MapiMessage.lpszNoteText);
    if Assigned(Receip.lpszAddress) then
      StrDispose(Receip.lpszAddress);
    if Assigned(Receip.lpszName) then
      StrDispose(Receip.lpszName);
    MapiLogOff(MAPI_Session, Handle, 0, 0);
  end;
end;

end.


Использование:
Код

procedure TForm1.Button1Click(Sender: TObject);
var
  mail: TStringList;
begin
  mail := TStringList.Create;
  try
    mail.values['to'] := '[email protected]';
    mail.values['subject'] := 'Hello';
    mail.values['body'] := 'String1'+#13#10+'String2'+#13#10+'String3';
    // или mail.values['body'] := Memo1.Text;
    mail.values['attachment0'] := 'C:\1.zip';
    mail.values['attachment1'] := 'C:\2.zip';
    sendEMail(Application.Handle, mail);
  finally
    mail.Free;
  end;
end;

Подскажите, а  как в этом коде копия письма приклепляется ?
Юзал так, но не выходит:
Код

 Receip.ulReserved := 0;
      Receip.ulRecipClass := MAPI_CC;
      Receip.lpszName := StrNew(PChar(Mail.Values['cc']));
      Receip.lpszAddress := StrNew(PChar('SMTP:' + Mail.Values['cc']));
      Receip.ulEIDSize := 0;
      MapiMessage.nRecipCount := 2;

PM MAIL   Вверх
maleziv
Дата 21.2.2012, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 16.11.2010

Репутация: нет
Всего: нет



Доброго времени суток уважаемые.
С прикреплением в коде программы  Копии письма разобрался.
Прошу помочь разобраться в следующем:
После запуска программы письмо остается в Microsoft Office Outlook 2003 в папке Исходящие, а не отправляется сразу заданным адресатам в программе, что не есть хорошо. Подскажите в чем может быть дело, почему письмо не отправляется  сразу, может быть дело не в коде вовсе, а в Outlook-е(в нем где покрутить)?

PS: После того как письмо отсалось в папке Исходящие, через некоторое время Outlook  делает синхронизацию(Отправка и получение) с почтовым ящиком и письмо лежавшее в папке Исходящие спокойно и без ошибок уходит само, но это не есть хорошо, так как нужна немедленная отправка программным путем.

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, mapi,Clipbrd, ComCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
 function SendEMail(Handle: THandle; Mail: TStrings): Cardinal;
    type
      TAttachAccessArray = array [0..0] of TMapiFileDesc;
      PAttachAccessArray = ^TAttachAccessArray;
    var
      MapiMessage: TMapiMessage;
      Receip: array of TMapiRecipDesc;
      dwRet: Cardinal;
      MAPI_Session: Cardinal;
      WndList: Pointer;
      Attachment: TMapiFileDesc;
    begin
      Result := 0;

dwRet := MapiLogon(Handle, '',    '', MAPI_NEW_SESSION, 0, @MAPI_Session);
      if (dwRet <> SUCCESS_SUCCESS) then
      begin

        MessageBox(Handle,
          PChar('Почтовый клиент, заданный по умолчанию, не обнаружен'),
          PChar('Ошибка'),
          MB_ICONERROR or MB_OK);
      end
      else
      begin
        FillChar(MapiMessage, SizeOf(MapiMessage), #0);
     
        FillChar(Receip, SizeOf(Receip), #0);
     
        if Mail.Values['to'] <> '' then
        begin
          SetLength(Receip, 1);
          Receip[0].ulReserved := 0;
          Receip[0].ulRecipClass := MAPI_TO;
          Receip[0].lpszName := StrNew(PChar(Mail.Values['to']));
          Receip[0].lpszAddress := StrNew(PChar('SMTP:' + Mail.Values['to']));
          Receip[0].ulEIDSize := 0;
          if Mail.Values['cc'] <> '' then
          begin
            SetLength(Receip, 2);
            Receip[1].ulReserved := 0;
            Receip[1].ulRecipClass := MAPI_CC;
            Receip[1].lpszName := StrNew(PChar(Mail.Values['cc']));
            Receip[1].lpszAddress := StrNew(PChar('SMTP:' + Mail.Values['cc']));
            Receip[1].ulEIDSize := 0;
            MapiMessage.nRecipCount := 2;
          end
          else
            MapiMessage.nRecipCount := 1;
            MapiMessage.lpRecips := @Receip[0];
        end;
     
        if Mail.Values['subject'] <> '' then
          MapiMessage.lpszSubject := StrNew(PChar(Mail.Values['subject']));
        if Mail.Values['body'] <> '' then
          MapiMessage.lpszNoteText := StrNew(PChar(Mail.Values['body']));
            {
        if Mail.Values['attachment'] <> '' then
        begin
          ZeroMemory(@Attachment, SizeOf(TMapiFileDesc));
          Attachment.nPosition := DWORD(-1);
          Attachment.lpszPathName := PChar(Mail.Values['attachment']);
          Attachment.lpszFileName := PChar(ExtractFileName(Mail.Values['attachment']));
          MapiMessage.nFileCount := 1;
          MapiMessage.lpFiles := @Attachment;
        end;
           }
        WndList := DisableTaskWindows(0);
        try
    Result := MapiSendMail(MAPI_Session, Handle, MapiMessage, 0, 0);

        finally
          EnableTaskWindows(WndList);
        end;
     
        if Assigned(MapiMessage.lpszSubject) then
          StrDispose(MapiMessage.lpszSubject);
        if Assigned(MapiMessage.lpszNoteText) then
          StrDispose(MapiMessage.lpszNoteText);
        if Assigned(Receip[0].lpszAddress) then
          StrDispose(Receip[0].lpszAddress);
        if Assigned(Receip[0].lpszName) then
          StrDispose(Receip[0].lpszName);
        if Mail.Values['cc'] <> '' then
        begin
          if Assigned(Receip[1].lpszAddress) then
            StrDispose(Receip[1].lpszAddress);
          if Assigned(Receip[1].lpszName) then
            StrDispose(Receip[1].lpszName);
        end;
        MapiLogOff(MAPI_Session, Handle, 0, 0);
      end;
    end;
procedure TForm1.FormCreate(Sender: TObject);
var
  mail: TStringList;
begin
  mail := TStringList.Create;
  try

    mail.values['to'] :='[email protected]';
    mail.values['cc'] :='[email protected]';
    mail.values['subject'] := 'message';
    mail.values['body'] := ' ';
    sendEMail(Application.Handle, mail);
  finally
    mail.Free;
  end;

end;

end.



Это сообщение отредактировал(а) maleziv - 21.2.2012, 13:34
PM MAIL   Вверх
maleziv
Дата 22.2.2012, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 16.11.2010

Репутация: нет
Всего: нет



Цитата(maleziv @ 21.2.2012,  10:45)
Доброго времени суток уважаемые.
С прикреплением в коде программы  Копии письма разобрался.
Прошу помочь разобраться в следующем:
После запуска программы письмо остается в Microsoft Office Outlook 2003 в папке Исходящие, а не отправляется сразу заданным адресатам в программе, что не есть хорошо. Подскажите в чем может быть дело, почему письмо не отправляется  сразу, может быть дело не в коде вовсе, а в Outlook-е(в нем где покрутить)?

PS: После того как письмо отсалось в папке Исходящие, через некоторое время Outlook  делает синхронизацию(Отправка и получение) с почтовым ящиком и письмо лежавшее в папке Исходящие спокойно и без ошибок уходит само, но это не есть хорошо, так как нужна немедленная отправка программным путем.

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, mapi,Clipbrd, ComCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
 function SendEMail(Handle: THandle; Mail: TStrings): Cardinal;
    type
      TAttachAccessArray = array [0..0] of TMapiFileDesc;
      PAttachAccessArray = ^TAttachAccessArray;
    var
      MapiMessage: TMapiMessage;
      Receip: array of TMapiRecipDesc;
      dwRet: Cardinal;
      MAPI_Session: Cardinal;
      WndList: Pointer;
      Attachment: TMapiFileDesc;
    begin
      Result := 0;

dwRet := MapiLogon(Handle, '',    '', MAPI_NEW_SESSION, 0, @MAPI_Session);
      if (dwRet <> SUCCESS_SUCCESS) then
      begin

        MessageBox(Handle,
          PChar('Почтовый клиент, заданный по умолчанию, не обнаружен'),
          PChar('Ошибка'),
          MB_ICONERROR or MB_OK);
      end
      else
      begin
        FillChar(MapiMessage, SizeOf(MapiMessage), #0);
     
        FillChar(Receip, SizeOf(Receip), #0);
     
        if Mail.Values['to'] <> '' then
        begin
          SetLength(Receip, 1);
          Receip[0].ulReserved := 0;
          Receip[0].ulRecipClass := MAPI_TO;
          Receip[0].lpszName := StrNew(PChar(Mail.Values['to']));
          Receip[0].lpszAddress := StrNew(PChar('SMTP:' + Mail.Values['to']));
          Receip[0].ulEIDSize := 0;
          if Mail.Values['cc'] <> '' then
          begin
            SetLength(Receip, 2);
            Receip[1].ulReserved := 0;
            Receip[1].ulRecipClass := MAPI_CC;
            Receip[1].lpszName := StrNew(PChar(Mail.Values['cc']));
            Receip[1].lpszAddress := StrNew(PChar('SMTP:' + Mail.Values['cc']));
            Receip[1].ulEIDSize := 0;
            MapiMessage.nRecipCount := 2;
          end
          else
            MapiMessage.nRecipCount := 1;
            MapiMessage.lpRecips := @Receip[0];
        end;
     
        if Mail.Values['subject'] <> '' then
          MapiMessage.lpszSubject := StrNew(PChar(Mail.Values['subject']));
        if Mail.Values['body'] <> '' then
          MapiMessage.lpszNoteText := StrNew(PChar(Mail.Values['body']));
            {
        if Mail.Values['attachment'] <> '' then
        begin
          ZeroMemory(@Attachment, SizeOf(TMapiFileDesc));
          Attachment.nPosition := DWORD(-1);
          Attachment.lpszPathName := PChar(Mail.Values['attachment']);
          Attachment.lpszFileName := PChar(ExtractFileName(Mail.Values['attachment']));
          MapiMessage.nFileCount := 1;
          MapiMessage.lpFiles := @Attachment;
        end;
           }
        WndList := DisableTaskWindows(0);
        try
    Result := MapiSendMail(MAPI_Session, Handle, MapiMessage, 0, 0);

        finally
          EnableTaskWindows(WndList);
        end;
     
        if Assigned(MapiMessage.lpszSubject) then
          StrDispose(MapiMessage.lpszSubject);
        if Assigned(MapiMessage.lpszNoteText) then
          StrDispose(MapiMessage.lpszNoteText);
        if Assigned(Receip[0].lpszAddress) then
          StrDispose(Receip[0].lpszAddress);
        if Assigned(Receip[0].lpszName) then
          StrDispose(Receip[0].lpszName);
        if Mail.Values['cc'] <> '' then
        begin
          if Assigned(Receip[1].lpszAddress) then
            StrDispose(Receip[1].lpszAddress);
          if Assigned(Receip[1].lpszName) then
            StrDispose(Receip[1].lpszName);
        end;
        MapiLogOff(MAPI_Session, Handle, 0, 0);
      end;
    end;
procedure TForm1.FormCreate(Sender: TObject);
var
  mail: TStringList;
begin
  mail := TStringList.Create;
  try

    mail.values['to'] :='[email protected]';
    mail.values['cc'] :='[email protected]';
    mail.values['subject'] := 'message';
    mail.values['body'] := ' ';
    sendEMail(Application.Handle, mail);
  finally
    mail.Free;
  end;

end;

end.

На этой ветке форума  есть кто живой?? smile  
PM MAIL   Вверх
Akella
Дата 15.3.2012, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 4
Всего: 329



Ну здесь сетевое программирование, и не вопросы по аутлук и т.д.
Попробуй задать вопрос в соответствующей теме, например по com-серверам.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.1135 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.