【问题标题】:How to Send Mail From unity C# [duplicate]如何从统一 C# 发送邮件 [重复]
【发布时间】:2018-11-09 21:40:12
【问题描述】:

我正在从我的应用程序发送邮件。当我尝试下面的代码时,它会从统一编辑器发送邮件。但是当我在 ipad 上构建和测试我的应用程序时,邮件不是从我的应用程序发送的。

public void Start() {

    using (var mail = new MailMessage {
        From = new MailAddress(sender),
        Subject = "test subject",
        Body = "Hello there!"}) 
    {

        mail.To.Add(receiver);

        var smtpServer = new SmtpClient(smtpHost) {
            Port = 25,
            DeliveryMethod = SmtpDeliveryMethod.Network,
            EnableSsl = true,
            UseDefaultCredentials = false,

            Credentials = (ICredentialsByHost) new NetworkCredential(sender, smtpPassword)
        };
        ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
        smtpServer.Send(mail);
    }
}

仅在使用编辑器时有效。不在我的应用程序 (iPad) 中。

我的代码有什么问题? 我还在我的 Gmail 帐户中启用了“允许安全较少的应用程序”。

【问题讨论】:

  • 哪一行导致了问题?在您的代码中添加一些 Debug.Log() 语句并在此处共享日志。此外,以防万一您不知道,将您的用户名和密码放在移动应用程序中几乎可以保证将您的邮件服务器交给垃圾邮件发送者。
  • 实际上邮件是从 Unity Editor 发送的。当我仅在 ipad 中构建和测试时。邮件没有发送到收件人。

标签: c# unity3d gmail


【解决方案1】:

smtpServer.Send() 方法更改为 try/catch 块,以便您可以看到希望出错:

public void Start() {

    using (var mail = new MailMessage {
        From = new MailAddress(sender),
        Subject = "test subject",
        Body = "Hello there!"}) 
    {

        mail.To.Add(receiver);

        var smtpServer = new SmtpClient(smtpHost) {
            Port = 25,
            DeliveryMethod = SmtpDeliveryMethod.Network,
            EnableSsl = true,
            UseDefaultCredentials = false,

            Credentials = (ICredentialsByHost) new NetworkCredential(sender, smtpPassword)
        };
        ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
        try {
            smtpServer.Send(mail);
        }  
        catch (Exception ex) {
            Console.WriteLine("Exception while smtpServer.Send(mail): {0}", 
                      ex.ToString() );            
        }    
    }
}

构建。开始在 xCode 中实时查看日志以查看已记录的内容 (see this answer)。运行您的应用程序并查看 xCode 中的日志。很可能你会自己理解这个问题。如果没有,请为我们发布日志。

【讨论】:

    【解决方案2】:

    我找到了上述代码的解决方案。我们必须更改构建设置

    转到文件 --> 构建设置... --> 选择 Android。现在,点击播放器设置。

    1.在 Internet Access 上,将其从 Auto 更改为 Require。

    2.确保 API 兼容级别设置为 .NET 2.0 而不是 .NET 2.0 子集。

    3.确保剥离级别设置为禁用。

    4.转到播放器设置 --> Android 并将 Internet Access 从 Auto 更改为 Require

    如果 SmtpClient 不能在 ios 上运行,这些是要尝试的事情

    创建一个link.xml 文件并添加以下代码....

    并执行代码......它将从unity App发送邮件......

    【讨论】:

    • 你的回答基本上是复制粘贴我的一篇帖子......
    • @programmer 是的,它只是您的代码。其实我已经为 ios 添加了。有人删了。实际上,如果有人在寻找 ios 和 android ......该帖子可能会有所帮助。我已经分别搜索了 android 和 ios 几个小时。以上答案信用(android)只属于你......
    猜你喜欢
    • 2011-01-08
    • 2020-08-01
    • 2013-06-22
    • 2014-07-20
    • 2012-05-01
    • 2015-05-18
    • 2012-05-22
    • 2013-05-26
    • 2014-09-08
    相关资源
    最近更新 更多