gpt4 book ai didi

delphi - 如何在 Windows/Mac 上从 FireMonkey 启动电子邮件客户端?

转载 作者:行者123 更新时间:2023-12-03 18:19:29 24 4
gpt4 key购买 nike

是否有从 FireMonkey 启动电子邮件客户端的跨平台方式,以便它可以在 Windows 和 OS/X 上运行。在 Windows 下,我可以执行以下操作:

ShellExecute(0, 'OPEN', 'mailto:somebody@somewhere.com', '', '', SW_ShowDefault);

是否有跨平台等同于启动电子邮件客户端(最好带有附件、收件人、主题、正文等)?

最佳答案

据我所知,目前还没有一种跨平台的方式来发送邮件,而是使用 Windows 端的 ShellExecute 函数和 NSWorkspace.openURL对于 OSX,您可以编写自己的实现。

试试这个 OSX 实现。

uses
Macapi.Foundation,
Macapi.AppKit,
System.SysUtils;

Procedure SendMail(const Mailto,Subject, Body:string);
var
URL : NSURL;
AWorkspace : NSWorkspace;
encodedSubject,
encodedTo,
encodedBody : NSString;
begin
//NSString *encodedSubject = [NSString stringWithFormat:@"SUBJECT=%@", [subject stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
encodedSubject :=NSSTR(Format('SUBJECT=',[Subject])).stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding);
//NSString *encodedBody = [NSString stringWithFormat:@"BODY=%@", [body stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
encodedBody :=NSSTR(Format('BODY=',[Body])).stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding);
//NSString *encodedTo = [to stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
encodedTo :=NSSTR(Mailto).stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding);
//NSString *encodedURLString = [NSString stringWithFormat:@"mailto:%@?%@&%@", encodedTo, encodedSubject, encodedBody];
//NSURL *mailtoURL = [NSURL URLWithString:encodedURLString];
// [[NSWorkspace sharedWorkspace] openURL:mailtoURL];
URL := TNSURL.Create;
URL.initWithString(NSSTR(Format('mailto:%s?%s&%s',[ encodedTo.UTF8String, encodedSubject.UTF8String, encodedBody.UTF8String])));
AWorkspace := TNSWorkspace.Create;
AWorkspace.openURL(URL);
end;

关于delphi - 如何在 Windows/Mac 上从 FireMonkey 启动电子邮件客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9474631/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com