flutter 使用 url_launcher uri 发送电子邮件

tsi*_*ixe 2 mailto url launcher flutter

我正在使用 url_launcher 在我的应用程序中发送带有系统电子邮件的电子邮件。我正在使用下面的代码,这个人做得很好。

void launchEmailSubmission() async {
    final Uri params = Uri(
      scheme: 'mailto',
      path: 'myOwnEmailAddress@gmail.com',
    );
    String url = params.toString();
    if (await canLaunch(url)) {
      await launch(url);
    } else {
      print('Could not launch $url');
    }
  }
Run Code Online (Sandbox Code Playgroud)

但是现在我想在邮件正文框中为其提供“默认”主题和提示文本(如果提示文本不可能,则为普通文本)。

有没有办法做到这一点?

小智 7

正如 @tsitixe 指出的,您可以使用 Piyush 的答案并更改 queryParameters 来进行这样的查询,以避免电子邮件中单词之间的“+”符号:

void launchEmailSubmission() async {
    final Uri params = Uri(
    scheme: 'mailto',
    path: 'myOwnEmailAddress@gmail.com',
    query: 'subject=Default Subject&body=Default body'
);

String url = params.toString();
    if (await canLaunch(url)) {
    await launch(url);
} else {
    print('Could not launch $url');
}
Run Code Online (Sandbox Code Playgroud)

}


Piy*_*rya 6

尝试queryParametersUri. 您可以通过以下显示的方式实现此目的:

void launchEmailSubmission() async {
    final Uri params = Uri(
      scheme: 'mailto',
      path: 'myOwnEmailAddress@gmail.com',
      queryParameters: {
        'subject': 'Default Subject',
        'body': 'Default body'
      }
    );
    String url = params.toString();
    if (await canLaunch(url)) {
      await launch(url);
    } else {
      print('Could not launch $url');
    }
  }
Run Code Online (Sandbox Code Playgroud)

它将打开将默认正文和主题。

  • @tsitixe 将 `queryParameters: { 'subject': '默认主题', 'body': '默认正文'}` 替换为 `query: 'subject=默认主题&body=默认正文'` 以删除 '+' (5认同)
  • 谢谢!它工作得非常好,但有一件事没有按预期解决。当电子邮件应用程序出现时,“默认”和“主题”或“默认”和“正文”之间的空格将转换为“+”号。有没有什么很酷的方法可以让这个“+”号从 Flutter 代码中恢复到电子邮件应用程序中的正常空间? (2认同)