【问题标题】:Sending email in Xamarin Forms project在 Xamarin Forms 项目中发送电子邮件
【发布时间】:2016-10-08 07:48:36
【问题描述】:

我正在尝试使用 Xamarin.Plugins.Messaging NuGet 包从我的 Xamrin Forms 共享项目中发送电子邮件,但一直遇到 Warning: Attempt to present X on Y whose view is not in the window hierarchy! 并且没有出现任何内容。

我还有什么需要设置的吗?

private void SendEmail()
{
    var emailMessagner = CrossMessaging.Current.EmailMessenger;
    if (emailMessagner.CanSendEmail)
    {
        Console.WriteLine("Can send mail");
        var email = new EmailMessageBuilder()
            .To("emailaddress@gmail.com")
            .Subject("Setting subject")
            .Body("Setting email body")
            .WithAttachment(_filePath, "text/html")
            .Build();
        emailMessagner.SendEmail(email);
    }
    else
    {
        Console.WriteLine("Cant send mail");
    }
}

它可以在 android 上运行(除了得到 Permission denied for attachment),但我在 iOS 上得到 window not in hierarchy 错误。我可以编写自己的电子邮件发件人,以确保它的 viewController 在窗口层次结构中,但我认为这个插件可以处理。

【问题讨论】:

  • 您能发布完整的错误详细信息/堆栈跟踪吗?另外,您可以找到Messaging插件here的源代码自行调试
  • 你是在真机还是模拟器上尝试这个(即模拟器会失败)
  • @SushiHangover 是的,它是一个真正的设备。
  • @Rohit 他正在使用Xamarin.Forms 共享项目。
  • 好的,太好了:) 如果您可以发布解决方案供其他人参考,那就太好了。

标签: plugins xamarin xamarin.ios xamarin.forms


【解决方案1】:

我的 Xamarin Forms 应用程序遇到了同样的问题。我正在从我在 PCL 项目中使用 PushModalAsync() 加载的 ContentPage 调用 SendEmail()。据我所知,这在任何情况下都不起作用,无论是模态形式的形状还是形式。

我的解决方法是将公共静态 Queue 属性添加到调用表单(在本例中是我的应用程序的主表单),当我需要发送电子邮件时,我将其添加到队列中。然后我在我的主页上覆盖 OnAppearing() 并在主窗体重新出现时循环浏览队列中的所有电子邮件。我在我的模态表单上写了一条注释,告诉用户当模态表单关闭时将发送电子邮件。不完美,但它有效。如果您能为模态表单找到解决此问题的方法,那就太好了!

迈克

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    相关资源
    最近更新 更多