Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Mail odosielaný z Delphi

Mám takúto otázku:V delphinariu som narazil na takýto kód pomocou ktorého sa načíta email-adresa a vyvolá sa spustenie poštového klienta.
adresa:=dmAdresar.tabulka.FieldByName(‘email’).AsS tring;
if adresa='' then begin
Application.MessageBox('Táto osoba nemá vyplnenú email adresu!','Pozor',MB_OK or MB_ICONEXCLAMATION);
Exit;
end;
adresa:='mailto:'+adresa;
StrPCopy(PAdresa,adresa);
ShellExecute(pozdrav.Handle,'open',PAdresa,parms,p dir,sw_shownormal);
Je možné nejakým spôsobom, a ak áno tak ako, doplniť do poštového klienta aj predmet správy a text správy? Za radu som vopred vďačný.

Předmět Autor Datum
Je to obdobné jako v html (mail.html) var em_subject, em_body, em_mail : string; begin em_subject :…
host 06.04.2009 23:42
host
Ďakujem Vám obom za odpoveď. Bude mi postačovať úplne prvá verzia :). V projekte ktorý robím by sa m…
Rado 07.04.2009 07:05
Rado
Vyskúšal som to a v pohode funguje ale nejak sa trápim s odriadkovaním v texte. ak do body správy za…
Rado 07.04.2009 12:54
Rado
Ano, ale musis opet pouzit prislusne kodovani: '&0D&0A'
Jan Fiala 07.04.2009 13:35
Jan Fiala
To ako do stringu v mieste kde má byť odriadkovaný? Pr. 'AHOJ'+'&0D&0A'+'Cau.'
Rado 07.04.2009 14:33
Rado
Tak náhodou som to našiel.Ten odriadkovač je %0A. Ešte raz všetkým ďakujem. poslední
Rado 07.04.2009 16:58
Rado
Já používám v Delphi posílání mailu přes MAPI, ne přes Shell. Udělal jsem si na to proceduru, můžeš…
Rce 07.04.2009 00:06
Rce

Je to obdobné jako v html (mail.html)

var em_subject, em_body, em_mail : string;
begin
  em_subject := 'This is the subject line';
  em_body := 'Message body text goes here';

  em_mail := 'mailto:delphi.guide@about.com?subject=' +
    em_subject + '&body=' + em_body ;

  ShellExecute(Handle,'open',
    PChar(em_mail), nil, nil, SW_SHOWNORMAL) ;
end; 

Vyskúšal som to a v pohode funguje ale nejak sa trápim s odriadkovaním v texte. ak do body správy zadám text a použil som #13, sLineBreak, AnsiString(#13#10),chr(13), ani jedno nefunguje. Je vôbec možné takýmto spôsobom vkladať do poštového klienta odriadkovaný text? Vďaka za prípadné postrehy-rady...

Já používám v Delphi posílání mailu přes MAPI, ne přes Shell. Udělal jsem si na to proceduru, můžeš jí použít (ostatní také) dle libost. Lze snadno upravit na více příjemců, více souborů atd:

uses SysUtils, MAPI, Forms, Windows;
function SendMail (const AdRcpt: string; NmRcpt: string; const Subject, FNAtt: string; const DatFN, UkazatMail: boolean): boolean;
{	AdRcpt		:= Adresa příjemce nebo '' není-li                                                      }
{	NmRcpt		:= Jméno příjemce nebo '' není-li	                                                }
{	Subject		:= Předmět zprávy                                                                       }
{	FNAtt		:= FN s cestou, kde nalezneme soubor co chcem poslat nebo '' není-li soubor             }
{	DatFN		:= true - dá do majlu FN souboru s cestou, false nedá (jen pro FNAtt <> '')             }
{	UkazatMail	:= true - majl před xicht, false - odeslat mlčky                                        }
{Vrací: true - povedlo se, false nepovedlo                                                                      }

	function IIf (const ACnd: boolean; A1, A2: string): string; overload;
	begin if ACnd then Result := A1 else Result := A2;
	end;

	function IIf (const ACnd: boolean; A1, A2: integer): string; overload;
	begin if ACnd then Result := A1 else Result := A2;
	end;

const RceCrLf		= #$0D#$0A; {----- Znaky <CR> + <LF>  }
var
	MapiMessage: TMapiMessage; MapiRecipDesc: TMapiRecipDesc; MapiFileDesc: TMapiFileDesc; ws: string;
	MapiFlags: cardinal; MAPIResult: cardinal;
begin
	{----------------------------------------------- Pro MS IE nesmí být v jménu příjemce ',' ani ';' }
	NmRcpt	:= StringReplace (NmRcpt, ',', ' ', [rfReplaceAll]);
	NmRcpt	:= StringReplace (NmRcpt, ';', ' ', [rfReplaceAll]);

	MapiRecipDesc.ulReserved		:= 0;
	MapiRecipDesc.ulRecipClass		:= MAPI_TO;
	MapiRecipDesc.lpszName			:= PChar (IIf (NmRcpt = '', AdRcpt, NmRcpt));
	MapiRecipDesc.lpszAddress		:= PChar (AdRcpt);
	MapiRecipDesc.ulEIDSize			:= 0;
	MapiRecipDesc.lpEntryID			:= nil;

	MapiFileDesc.ulReserved			:= 0;
	MapiFileDesc.flFlags			:= 0;
	MapiFileDesc.nPosition			:= 1;
	MapiFileDesc.lpszPathName		:= PChar (FNAtt);
	MapiFileDesc.lpszFileName		:= nil;
	MapiFileDesc.lpFileType			:= nil;

	MapiMessage.ulReserved			:= 0;
	MapiMessage.lpszSubject			:= PChar (Subject);
	MapiMessage.lpszNoteText		:= PChar (IIf (DatFN and (FNAtt <> ''), 'File ' + FNAtt + RceCrLf + RceCrLf, '') + 'Od: ' + ' Odesílatel');
	MapiMessage.lpszMessageType		:= nil;
	MapiMessage.lpszDateReceived		:= nil;
	MapiMessage.lpszConversationID		:= nil;
	MapiMessage.flFlags			:= 0;
	MapiMessage.lpOriginator		:= nil;
	MapiMessage.nRecipCount			:= IIf ((AdRcpt = '') and (NmRcpt = ''), 0, 1);
	MapiMessage.lpRecips			:= @MapiRecipDesc;
	MapiMessage.nFileCount			:= IIf (FNAtt = '', 0, 1);
	MapiMessage.lpFiles			:= @MapiFileDesc;

	MapiFlags				:= MAPI_LOGON_UI or MAPI_NEW_SESSION; if UkazatMail then MapiFlags := MapiFlags or MAPI_DIALOG;

	MAPIResult				:= MAPISendMail (0, Application.Handle, MapiMessage, MapiFlags, 0);
	Result					:= MapiResult = SUCCESS_SUCCESS;

	if not Result then Hlášení nějaké chyby
end;

Zpět do poradny Odpovědět na původní otázku Nahoru