2012-02-28 7 views
2

WindowsとOS/Xの両方で動作するようにFireMonkeyから電子メールクライアントを起動するクロスプラットフォームの方法はありますか?Windows/MacでFireMonkeyから電子メールクライアントを起動する方法は?

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

電子メールクライアントを起動するためのクロスプラットフォーム同等物があります(好適には、添付ファイル、受信者、件名、本文などで):Windowsで私は、次の操作を行うことができますか?

答えて

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つ不思議。 –

関連する問題