Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];

Вниз

Работа с почтовым клиентом по-умолчанию   Найти похожие ветки 

 
Yuriy   (2004-06-03 11:54) [0]

Hi All!

можешь подсказать как из программы создать новое почтовое сообщение в почтовой программе объявленной по-умолчанию (аутглюк, бат или другая хрень) и прикрепить к нему аттач?

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


 
GuAV ©   (2004-06-03 12:06) [1]


> типа вызываю mailto, появляется окошко письма с нужным адресом
> и аттачем и дальше пусть клиент думает отправлять или нет.

так в чём вопрос ?


 
Yuriy   (2004-06-03 12:19) [2]

вопрос в том как аттач прилепить.


 
Yuriy   (2004-06-03 17:08) [3]

Спасибо всем кто откликнулся. Особое спасибо Mihail Golykov из Fido7.ru.delphi

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,
   PChar(""),
   PChar(""),
   MAPI_LOGON_UI or MAPI_NEW_SESSION,
   0, @MAPI_Session);
 if (dwRet <> SUCCESS_SUCCESS) then
 begin
   MessageBox(Handle,
     PChar("Error while trying to send email"),
     PChar("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 := StrNew(PChar(Mail.Values["to"]));
     Receip.lpszAddress := StrNew(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 := StrNew(PChar(Mail.Values["subject"]));
   if Mail.Values["body"] <> "" then
     MapiMessage.lpszNoteText := StrNew(PChar(Mail.Values["body"]));
   WndList := DisableTaskWindows(0);
   try
   Result := MapiSendMail(MAPI_Session, Handle,
     MapiMessage, MAPI_DIALOG, 0);
   finally
     EnableTaskWindows( WndList );
   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;
procedure TForm1.Button1Click(Sender: TObject);
var
 mail: TStringList;
begin
 mail := TStringList.Create;
 try
   mail.values["to"] := "Receiver-Email@test.xyz";
   mail.values["subject"] := "Hello";
   mail.values["body"] := "blah";
   mail.values["attachment0"] := "C:\Test.txt";
   // mail.values["attachment1"]:="C:\Test2.txt";
   sendEMail(Application.Handle, mail);
 finally
   mail.Free;
 end;
end;



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.039 c
3-1088155245
чайник1
2004-06-25 13:20
2004.07.18
Определения вхождения даты


3-1087851662
DimDim
2004-06-22 01:01
2004.07.18
Упаковать таблицы DBISAM


1-1088931987
ida
2004-07-04 13:06
2004.07.18
заставить работать клавиатурные сокращения в динамич меню


3-1088202854
Bacuc
2004-06-26 02:34
2004.07.18
DBGrid


1-1089017468
_BasiL_
2004-07-05 12:51
2004.07.18
PGP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский