2012-02-28 1 views
2

Windows와 OS/X에서 모두 작동하도록 FireMonkey에서 전자 메일 클라이언트를 시작하는 플랫폼 간 방법이 있습니까?Windows/Mac의 FireMonkey에서 이메일 클라이언트를 시작하는 방법은 무엇입니까?

ShellExecute(0, 'OPEN', 'mailto:[email protected]', '', '', SW_ShowDefault); 

이메일 클라이언트를 실행하는 크로스 플랫폼 해당하는이 있는가 (바람직 첨부 파일,받는 사람, 제목, 본문 등 포함) : 창문에서 나는 다음을 수행 할 수 있습니까?

답변

6

지금까지 내가 메일을 보낼 수있는 크로스 플랫폼 방법이 없다는 것을 알고 있지만, 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; 
+3

+1 엠바가 이런 종류의 추상화 레이어를 추가 할 계획인지 또는 제 3 자 개발자가 제공해야하는지 궁금한 점이 하나 있습니다. –

관련 문제