지금까지 내가 메일을 보낼 수있는 크로스 플랫폼 방법이 없다는 것을 알고 있지만, Windows 측면에서는 ShellExecute
기능을 사용하고 OSX에서는 NSWorkspace.openURL 기능을 사용하여 직접 구현할 수 있습니다.
이 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;
+1 엠바가 이런 종류의 추상화 레이어를 추가 할 계획인지 또는 제 3 자 개발자가 제공해야하는지 궁금한 점이 하나 있습니다. –