如何发送带有链接的电子邮件以打开 Android 应用程序

10
我已经写好了一些代码,可以向指定的邮箱发送包含以下链接的HTML邮件:
<a href="crystalcloud://android?4567">Click to validate account</a>

我正在测试将此链接发送到我的Gmail帐户。但是,当我收到电子邮件时,无法单击该链接。如果将此链接放在网页中,则我的应用程序可以正常启动。
是否有特殊的操作步骤才能使链接显示在电子邮件中?或者Gmail是否会禁止这类链接?是否有任何方法可以解决Gmail中的此问题?
编辑:添加代码片段
发送链接的代码:
    MimeMessage message = new MimeMessage(session);
    message.setFrom(new InternetAddress(from));
    message.addRecipient(Message.RecipientType.TO, new InternetAddress(emailAddress));
    message.setSubject("New Crystal Cloud User");
    message.setContent("Thank you for creating a new Crystal Cloud account!<br><a href=\"crystalcloud://android?4567">Click to validate account</a>", "text/html; charset=utf-8");
    Transport transport = session.getTransport("smtp");
    transport.connect(host, from, pass);
    transport.sendMessage(message, message.getAllRecipients());
    transport.close();

响应Intent的Android代码:

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.BROWSABLE" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="crystalcloud" />
        </intent-filter>
3个回答

16

Android邮件客户端存在一个问题,即除非链接为http或https,否则它们不会将其显示为可点击的。

我的解决方案是使用http协议打开我的应用:

<data android:scheme="http" android:host="com.company.app" android:port="3513" />

这个方法能够起作用,但很烦人,因为它提示用户要在浏览器或您的应用程序中打开该应用。 另一种解决方案是在网站上放置一个链接,然后进行javascript重定向到您的应用程序,尽管这可能会引起更多问题。


我想我只能这样做,然后忍受这种烦恼了。 - Nick Banks

0

我曾经遇到同样的问题,最终找到了解决方案。您可以分享文本和链接。

  String link_val = "http://play.google.com/store/apps/details?id=" + MainActivity.this.getPackageName();
        String body = "<a href=\"" + link_val + "\">" + link_val + "</a>";
        String data = "Hello I am using this App.\nIt has large numbers of Words meaning with synonyms.\nIts works offline very smoothly.\n\n" + body;
        sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(data));

它能在Android 6及以上版本上运行吗? 我尝试了类似的东西,它可以在Android 4.3上运行,但在6和7上不行 :| - rosu alin
它会工作的,因为我使用了相同的代码,你可以尝试一下。 - Binesh Kumar
我尝试了一下,但不起作用。从S3mini中,我在电子邮件中收到了链接,但从Nexus 5和LG G5中只能看到文本,没有超链接。我尝试使用"type:text / html"和"message / rfc822"类型。有什么想法为什么会这样? - rosu alin

0
在您的邮件头中加入 Content-Type: text/html,以指示内容为HTML格式,并表明该邮件是以HTML格式发送的。然后邮件客户端将适当地呈现HTML内容。同时,最好将链接放在一个<html></html>块中。

我已经做了那个。HTML已被正确发送,但似乎正在阻止这种类型的链接。有什么想法? - Nick Banks
这只发生在 Gmail 中吗?您尝试过其他邮件客户端吗?如果仅出现在 Gmail 中,可能与其钓鱼过滤器有关。 - Rasika

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接