Конференции:  3D графика Delphi Игры Бизнес Потрепаться PHP&MySQL QuarkXPress Turbo Pascal WEB-дизайн 
<<<    Конференция "Delphi"   >>>
Alex Smith [2006-01-24 18:37:48]
Запустить по кнопке Аутлук, новое письмо и КОМУ - заполнено
1 Вопрос: (пишу на дельфи 6, совсем недавно) Задача - запустить по кнопке почту Outlook, чтоб сразу создалось письмо с заполненными полями КОМУ (список адресатов, через точку с запятой будут браться из базы и туда вставлять нужно), можно еще заполнить поле ТЕМА - типа рассыка или НОВОСТИ и стандартный текст самого письма - типа зайдите в туда то и почитайте - для вас есть новые статьи - т е это будет что-то типа возможности для куратора программы делать рассылку пользователям проги о новостях. Просто запустить Аутлук у меня получилось..я попробовала там каким то способом..да и тут нашла кучсу примеров - попробую..а вот как создать письмо с заполненными полями не знаю..заранее спасибо!

Man in Black ® [2006-01-25 22:40:58]    [1]
Вот код. Разбирайся.

Uses MAPI;
....
function SendMail(const From, Dest, Subject, Text, FileName: PChar;
Outlook: boolean):Integer;
var
Message: TMapiMessage;
Recipient, Sender: TMapiRecipDesc;
File_Attachment: TMapiFileDesc;

function MakeMessage: TMapiMessage;
begin
  FillChar(Sender, SizeOf(Sender), 0);
  Sender.ulRecipClass := MAPI_ORIG;
  Sender.lpszAddress := From;

  FillChar(Recipient, SizeOf(Recipient), 0);
  Recipient.ulRecipClass := MAPI_TO;
  Recipient.lpszAddress := Dest;

  FillChar(File_Attachment, SizeOf(File_Attachment), 0);
  File_Attachment.nPosition := Cardinal(-1);
  File_Attachment.lpszPathName := FileName;

  FillChar(Result, SizeOf(Result), 0);
  with Message do begin
    lpszSubject := Subject;
    lpszNoteText := Text;
    lpOriginator := @Sender;
    nRecipCount := 1;
    lpRecips := @Recipient;
    nFileCount := 1;
    lpFiles := @File_Attachment;
  end;
end;

var
SM: TFNMapiSendMail;
MAPIModule: HModule;
MAPI_FLAG: Cardinal;
begin
if Outlook then
 MAPI_FLAG:=MAPI_DIALOG
else
 MAPI_FLAG:=0;
MAPIModule := LoadLibrary(PChar(MAPIDLL));
if MAPIModule = 0 then
  Result := -1
else
  try
    @SM := GetProcAddress(MAPIModule, 'MAPISendMail');
    if @SM <> nil then begin
      MakeMessage;
      Result := SM(0, Application.Handle, Message, MAPI_FLAG, 0);
    end else Result := 1;
  finally
    FreeLibrary(MAPIModule);
  end;
end;


А еще можно запускать как-то вроде "mailto:man@domen.net?subject=1&body=123";
Точного синтаксиса не помню.

alex smith [2006-01-26 07:13:55]    [2]
я сейчас выяснила, что у нас стоит сервер exchange и mapi у нас не работает...у нас работает smtp, а этот пример я нашла..я ж прежде чем задать вопрос почитала конференцию..просто не думала что у нас мапи не работает..(( а выяснилось обратное.

alex smith [2006-01-26 11:33:26]    [3]
карочь я сделала тупо быстро..вроде работает

procedure TSendForm.Button1Click(Sender: TObject);
var TOO :string;
 begin
   TOO:='mailto:
name@mail.ru; name2@mail.ru?       subject=ТЕМА&body=ТЕКСТ';
   ShellExecute(0, nil, PCHar(TOO), nil ,nil,1);
end;


yну а строку ТОО я могу сложить из любых кусков..список адресатов беру из базы данных, текст и тема рассылки может быть стандартная, можно и менять..сделать..)) за этот вопрос спасиб.
ну а соответственно строку


ПОДПИСАТЬСЯ НА ТЕМУ

E-mail
7+8?



приветя улыбаюсьхадаподмигиваюя тащусьмое почтениесчастливоцелуюбухаемужас
не понялплачуфупечальзлойстесняюсьсогласеннетгыкурю
суперязыкмузонпыворыдаю


Ваше имя: 
     Осталось: 

 

Допускается форматирование текста:
[•B]полужирный[B•] [•I]наклонный[I•] [•U]подчеркнутый[U•] [•‹]URL картинки[›•].
Для кода программ используйте [•¤] код программы [¤•]
Количество открывающих и закрывающих тэгов форматирования текста должно быть равным, иначе форматирование не осуществится.


Adelavida Link       Рейтинг@Mail.ru