Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi mailto: mit Variable im Body (https://www.delphipraxis.net/160013-mailto-mit-variable-im-body.html)

michael.funcke 22. Apr 2011 21:39

mailto: mit Variable im Body
 
Hi,

so, mein erster Beitrag. Ich hoffe, ihr könnt mir helfen:
Ich will gerne eine mailto: Funktion in mein Programm einbauen. Das an sich ist ja kein Problem:
Code:
procedure TForm1.btFoundBugClick(Sender: TObject);
begin
  ShellExecute(0,'open','mailto:<MailAdresse>?subject=I found a bug&body=Version: <HierDieVersion>%0D%0AThat´s what happened:',
               NIL, NIL, SW_SHOWNORMAL);
end;
Aber jetzt würde ich gerne die Versionsnummer, die ich in einem String habe auch noch in den Mailtext packen. Delphi will für das ShellExecute aber einen PWideChar haben. Was tun?

Namenloser 22. Apr 2011 21:54

AW: mailto: mit Variable im Body
 
Hallo Michael,
Willkommen in der DP :dp:

Du kannst den String einfach typecasten:
Delphi-Quellcode:
ShellExecute(0,'open',PChar('mailto:'+EMail+'?subject=I found a bug&body=Version: '+Version+'%0D%0AThat´s what happened:'),
  NIL, NIL, SW_SHOWNORMAL);
Oder etwas eleganter:
Delphi-Quellcode:
ShellExecute(0,'open',PChar(Format('mailto:%s?subject=I found a bug&body=Version: %s%%0D%%0AThat´s what happened:', [EMail, Version])),
  NIL, NIL, SW_SHOWNORMAL);

michael.funcke 22. Apr 2011 21:59

AW: mailto: mit Variable im Body
 
Wow, SUPER!!!
Danke!
:thumb:

Satty67 22. Apr 2011 22:00

AW: mailto: mit Variable im Body
 
für Format müsste %0D%0A nach %%0D%%0A entschärft werden.

Das gleich wie oben, nur ausgelagert und wollte es nicht wegwerfen ;)
Delphi-Quellcode:
procedure SendBugReport(sMailAdresse, sSubject, sVersion, sErrorMsg : String);
var
  ExecStr : String;
begin
  ExecStr := Format('mailto:%s?subject=%s&body=Version: %s %%0D%%0A%s',
             [sMailAdresse, sSubject, sVersion, sErrorMsg]);

  ShellExecute(0,'open', PChar(ExecStr), NIL, NIL, SW_SHOWNORMAL);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  SendBugReport('Mustermann@provider.com', 'BugReport',
                '1.11', 'Fehler im Programm');
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz