iOS Firemonkey:如何通过 Firemonkey Delphi XE7 中的邮件应用程序从 iOS 应用程序发送电子邮件
iOS Firemonkey: How to send email from iOS App though mail app in Firemonkey Delphi XE7
我正在使用 Delphi XE7 在 Firemonkey 中使用 iOS 应用程序。
问题: 我需要通过 Firemonkey 中的邮件应用程序从我的 iOS 应用程序发送电子邮件。
我看过其他发送电子邮件的旧博客,但这些解决方案对我没有帮助。
下面是我试过的旧链接,但我无法解决。
http://blogs.embarcadero.com/ao/2011/10/04/39133
http://blogs.embarcadero.com/matthiaseissing/2013/05/03/38707/
请让我知道一些其他解决方案或示例。
提前致谢。
使用您包含的第二个 link 中的代码:
http://blogs.embarcadero.com/matthiaseissing/2013/05/03/38707/
它适用于 XE4,您只需进行一些更改即可使其适用于 XE7:
StrToNSUrl
函数已移至 XE7 中的 Macapi.Helpers
单元,因此您必须将其添加到您的 uses 子句中。此外,NSStr 函数已弃用,因此您应该改用 StrToNSStr
(也来自 Macapi.Helpers)。
这是一个将所有功能组合在一起的函数:
procedure SendEmail(aEmail: string; aSubject: string = ''; aBody: string = '');
var lSharedApplication: UIApplication;
lURL: string;
begin
lURL := 'mailto:'+aEmail;
if (aSubject<>'') or (aBody<>'') then
begin
lURL := lURL+'?subject='+aSubject;
if aBody<>'' then
lURL := lURL+'&body='+aSubject;
lURL := StringReplace(lURL,' ','%20',[rfReplaceAll]); //replace spaces
lURL := StringReplace(lURL,sLineBreak,'%0D%0A',[rfReplaceAll]);//replace linebreaks
end;
lSharedApplication := TUIApplication.Wrap(TUIApplication.OCClass.SharedApplication);
lSharedApplication.openURL(StrToNSUrl(lURL));
end;
这样称呼它:
SendEmail('name@email.nowhere','My subject','My body');
使用 D.P.F Delphi iOS Native Components
中包含的 TDPFMailCompose class
这为您提供了比 mailto 更多的选择:link 而且您不必担心编码问题。在内部这使用 iOS MFMailComposeViewController class.
示例:
var
Mail: TDPFMailCompose;
begin
Mail := TDPFMailCompose.Create(nil);
if not Mail.MailCompose(Msg.Subject, Msg.Body, False, [Msg.To_], [Msg.CC], [Msg.BCC], [AttachedFileName]) then
MessageDlg('Error sending mail', TMsgDlgType.mtError, [TMsgDlgBtn.mbClose], -1);
end;
我正在使用 Delphi XE7 在 Firemonkey 中使用 iOS 应用程序。
问题: 我需要通过 Firemonkey 中的邮件应用程序从我的 iOS 应用程序发送电子邮件。
我看过其他发送电子邮件的旧博客,但这些解决方案对我没有帮助。
下面是我试过的旧链接,但我无法解决。
http://blogs.embarcadero.com/ao/2011/10/04/39133
http://blogs.embarcadero.com/matthiaseissing/2013/05/03/38707/
请让我知道一些其他解决方案或示例。
提前致谢。
使用您包含的第二个 link 中的代码: http://blogs.embarcadero.com/matthiaseissing/2013/05/03/38707/
它适用于 XE4,您只需进行一些更改即可使其适用于 XE7:
StrToNSUrl
函数已移至 XE7 中的 Macapi.Helpers
单元,因此您必须将其添加到您的 uses 子句中。此外,NSStr 函数已弃用,因此您应该改用 StrToNSStr
(也来自 Macapi.Helpers)。
这是一个将所有功能组合在一起的函数:
procedure SendEmail(aEmail: string; aSubject: string = ''; aBody: string = '');
var lSharedApplication: UIApplication;
lURL: string;
begin
lURL := 'mailto:'+aEmail;
if (aSubject<>'') or (aBody<>'') then
begin
lURL := lURL+'?subject='+aSubject;
if aBody<>'' then
lURL := lURL+'&body='+aSubject;
lURL := StringReplace(lURL,' ','%20',[rfReplaceAll]); //replace spaces
lURL := StringReplace(lURL,sLineBreak,'%0D%0A',[rfReplaceAll]);//replace linebreaks
end;
lSharedApplication := TUIApplication.Wrap(TUIApplication.OCClass.SharedApplication);
lSharedApplication.openURL(StrToNSUrl(lURL));
end;
这样称呼它:
SendEmail('name@email.nowhere','My subject','My body');
使用 D.P.F Delphi iOS Native Components
中包含的 TDPFMailCompose class这为您提供了比 mailto 更多的选择:link 而且您不必担心编码问题。在内部这使用 iOS MFMailComposeViewController class.
示例:
var
Mail: TDPFMailCompose;
begin
Mail := TDPFMailCompose.Create(nil);
if not Mail.MailCompose(Msg.Subject, Msg.Body, False, [Msg.To_], [Msg.CC], [Msg.BCC], [AttachedFileName]) then
MessageDlg('Error sending mail', TMsgDlgType.mtError, [TMsgDlgBtn.mbClose], -1);
end;