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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> При запуске почтовой проги установсленной, по умолчанию сразу прикрепить файл 
:(
    Опции темы
RN3QGA
Дата 11.2.2006, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 28.11.2005
Где: Воронежская обл.

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



Доброго времени суток.
Использую в свой проге вот такой кусочек кода.

Код
ShellExecute(Handle, 'Open', 'mailto:адесполучателя ?Subject=Отчет о выполнении диплома', nil, nil,sw_restore);


все ОК, но можноли сразу сделать, чтобы был прикреплен файл (например Excel документ).
Спасибо.
PM MAIL   Вверх
Snowy
Дата 11.2.2006, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Можно. Только не данным способом.
Вот посмотри тут, как это делается через MAPI: http://forum.vingrad.ru/index.php?showtopi...st&p=572116
PM MAIL   Вверх
RN3QGA
Дата 11.2.2006, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 28.11.2005
Где: Воронежская обл.

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



Спасибо Snowy, но что-то почтовая запускается все вроде ОК, но при закрытии
её - выдает ошибку в строке
Код

sendEMail(Application.Handle, mail);

По ссылке которую смотрел у Гостя тоже подобное было.
вроде ни чего неменял (ну кроме пути к файлам конечно)
в чем дело не подскажите?

PM MAIL   Вверх
Snowy
Дата 12.2.2006, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Вот. Пришлось поработать. Но результат есть.
Полностью переписал код. Сделал более логичный и надежный вариант:
Код

function SendEMail(MailFrom: string; const MailTo: array of string;
                   Subject, Body: string; const Attach: array of string): Cardinal;
var
  Mess: TMapiMessage;
  MRD:   array of TMapiRecipDesc;
  Files: array of TMapiFileDesc;
  i: integer;
  Session: THandle;
begin
  result := MapiLogon(0,nil,nil, MAPI_LOGON_UI or MAPI_NEW_SESSION,0,@Session);
  if (result = SUCCESS_SUCCESS) then
  begin
    FillChar(Mess, SizeOf(Mess), 0);
    if Subject <> '' then Mess.lpszSubject := PChar(Subject);
    if Body <> '' then Mess.lpszNoteText := PChar(Body);
    if Length(MailTo) > 0 then
    begin
      SetLength(MRD, Length(MailTo));
      for i:=0 to Length(MailTo)-1 do
      begin
        MRD[i].ulReserved := 0;
        MRD[i].ulRecipClass := MAPI_TO;
        MRD[i].lpszName := PChar(MailTo[i]);
        MRD[i].lpszAddress := PChar('SMTP:'+MailTo[i]);
        MRD[i].ulEIDSize := 0;
        MRD[i].lpEntryID := nil;
      end;
      Mess.nRecipCount := Length(MailTo);
      Mess.lpRecips := @MRD[0];
    end;
    if Length(Attach) > 0 then
    begin
      SetLength(Files, Length(Attach));
      for i := 0 to Length(Attach) - 1 do
      begin
        Files[i].ulReserved := 0;
        Files[i].flFlags := 0;
        Files[i].nPosition := ULONG($FFFFFFFF);
        Files[i].lpszPathName := PChar(Attach[i]);
        Files[i].lpszFileName := PChar(ExtractFileName(Attach[i]));
        Files[i].lpFileType := nil;
      end;
      Mess.nFileCount := Length(Attach);
      Mess.lpFiles := @Files[0];
    end;
    try
      result := MapiSendMail(Session, 0, Mess, MAPI_DIALOG, 0);
    except
      result := MAPI_E_FAILURE;
    end;
    MapiLogOff(Session, 0, 0, 0);
  end;
end;


Пример использования:
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  if SendEMail('[email protected]', // от кого
                      ['[email protected]', '[email protected]'], // кому: список адресов
                      'Subj', // тема
                      'Test Mail', // текст сообщения
                      ['C:\1.bmp', 'C:\2.jpg'] // список файлов (обязательно должны существовать)
                      ) = 0 then // результат - 0=все Ок, <>0=код завершения
    ShowMessage('All Ok')
  else ShowMessage('Not Sended');
end;

PM MAIL   Вверх
mrDuke
Дата 15.4.2010, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



При использовании вышеприведенного кода возникает следущая ситуация: При одном получателе и одном вложении все нормально, как только пытаюсь ввести больше одного адреса и вложения он почемуто обрубает расширения файлов, и адреса... Где может быть ошибка? В массиве влоть до передачи в письмо - данные верные... 

Это сообщение отредактировал(а) mrDuke - 19.4.2010, 14:42
PM MAIL   Вверх
Akella
Дата 16.4.2010, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Цитата(mrDuke @  15.4.2010,  15:22 Найти цитируемый пост)
И как еще можно без нажатия кнопки в Outlook'e отправлять письмо?

Вопрос для этого раздела по COM серверам
http://forum.vingrad.ru/forum/delphi-activ...-corba-ole.html
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

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

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

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

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

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


 




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


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

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