【问题标题】:Prevent Gmail from creating links for URLs and email addresses阻止 Gmail 为 URL 和电子邮件地址创建链接
【发布时间】:2012-08-12 21:12:11
【问题描述】:

问题是 Gmail 会自动为所有网站 URL 和电子邮件地址创建超链接。我不想创建链接。

var mailClient = new SmtpClient();
var netMail = new MailMessage();

msg = "I do not want www.google.com as a link at recipient end. <br/>";
msg += "I want my email addrress myemail@myudomain.com as html without a link";

var cr = new NetworkCredential("########", "###########");

netMail.From = new MailAddress("########@m####.###", "######");
netMail.To.Add(new MailAddress("abc@xyz.com"));
netMail.Subject = "Test Mail";
netMail.IsBodyHtml = true;
netMail.Body = msg;

mailClient.Host = "xyz.com";
mailClient.Port = 25;
mailClient.EnableSsl = false;
mailClient.Credentials = cr;
mailClient.Send(netMail);

有什么办法吗?

【问题讨论】:

    标签: email gmail


    【解决方案1】:

    无法停止创建 URL,因为电子邮件提供商会自动检查文本是否为有效 URL。

    解决这个问题的唯一方法是欺骗解析器。只需放置空格、HTML 标记等任何解析器无法识别的方式,例如 URL 等。

    以下是一些代码示例:

    http:<span>//foolishedsiteparser.com</span>
    _http://www.parsersmashed.com
    noonesemail<x>@</x>linkdead.com>
    

    结果如下:

    http://foolishedsiteparser.com
    _http://www.parsersmashed.com
    noonesemail@linkdead.com

    【讨论】:

    • 它不工作。 Gmail 自动将 标记替换为 @perilbrain
    • 不确定为什么会被接受,但下面的答案在语义上明显更有意义,因此更有可能被标准化/在其他客户中工作
    • @AndreyFedorov 是的,您总是可以看到发布答案的日期和接受的日期:) 所以也许在那个时候,它有效,但不再有效。
    【解决方案2】:

    我遇到了同样的问题,并发现您是否使用这样的电子邮件;

    <a rel="nofollow" style='text-decoration:none; color:#333'>test@mydomain.com</a>
    

    电子邮件提供商不倾向于将电子邮件作为链接。

    希望这会有所帮助。

    【讨论】:

    • 这是一个不错的解决方案,适用于 Gmail、Outlook 等。但不能与 Apple Mail.app 一起使用。
    • @Psimekjr 我在使用 Apple 邮件时遇到了同样的问题。您必须包含一个 href 属性(即使它的值为 #)
    • 使用实际文档的清洁解决方案:D support.google.com/webmasters/answer/96569?hl=en
    • @BogdanM。这与电子邮件中的链接无关
    • @BogdanM。不,那是谷歌搜索文档的 SEO 部分,供网站管理员阅读。这是关于rel 属性如何告诉谷歌的网络爬虫做什么。就我而言,目前还没有爬虫爬取你的电子邮件,谷歌如何索引他们的搜索引擎肯定与电子邮件中的 URL 是否显示为 gmail 中的链接无关。
    【解决方案3】:

    我可以通过添加&lt;a style="color: #000000"&gt;link text&lt;/a&gt; 来解决这个问题(注意没有href)。

    除了style,我还没有尝试过使用属性,但我想你可以。我使用的电子邮件系统(Blackbaud NetCommunity)会去掉一个普通的&lt;a&gt; 标签,所以我必须至少有一个属性。

    【讨论】:

    • 你需要苹果邮件的 href 来应用样式
    • 这是最优雅的答案。
    【解决方案4】:

    perilbrain's answer 得到启发,我实现了以下我用于此的正则表达式:

    var unlink = function (val) {
      return val.replace(/([@\.:])/g, '<span>$1</span>');
    };
    

    请注意,此函数会在传入的任何内容上全局替换 - 对于 OP 的示例中的自然文本块,它可能过于激进,但通常模板是参数化的,当您可以只传递一个 url 时,这非常有用或电子邮件(我实际上将它实现为模板帮助函数,以便它完全做到这一点)。

    该函数转换以下输入:

    john.doe@gmail.com
    http://johndoe.com
    

    进入这个:

    john<span>.</span>doe<span>@</span>gmail<span>.</span>com
    http<span>:</span>//johndoe<span>.</span>com
    

    请注意,我尝试了一个像&lt;x&gt; 这样的假短标签,如接受的答案所示,发现GMail“智能地”用&lt;u&gt; 标签替换了它,我认为这是一个功能,但不是可取的。在我的测试中,&lt;span&gt; 标签阻止了链接,没有视觉副作用。

    【讨论】:

    • 工作正常,但邮件现在进入垃圾邮件@bmoeskau
    • 垃圾邮件过滤是一个庞大而复杂的话题,可以在从客户端到邮件服务器再到 ISP 的各个层面触发。有许多因素会影响电子邮件是否被标记为垃圾邮件,并且各种垃圾邮件过滤器的工作方式不同。我怀疑仅此更改会导致大多数垃圾邮件过滤器拒绝正常的电子邮件,但当然是 YMMV。
    【解决方案5】:

    尽管这是一个旧线程,但我想帮助可能到达这里的人。我发现在链接中添加跨度会使谷歌看不到它作为链接,见下文:

    <a href="https://www.link.dk" style="text-decoration: none   !important; color: #878787 !important;">www.<span></span>link.dk</a>
    

    【讨论】:

      【解决方案6】:

      成功了!

      这不会阻止电子邮件变成链接,但它允许您设置字体颜色并删除该链接的下划线。

      它适用于我在 litmus.com 上测试过的所有电子邮件客户端 - 包括 Outlook 2010、2013、2016(也在 Windows 上)、Outlook.com、iPhone 6s、iPad、gmail Web 界面和 Apple Mail 8、9

      变体 1: 点击时没有反应的链接

      <a href="#" style="text-decoration:none; color:#000">bjorn@rosell.dk</a>
      

      变体 2: 一个邮件链接。适用于几乎所有客户端。 Outlook.com 确实将其设置为蓝色并带有下划线。

      <a href="mailto:bjorn@rosell.dk" style="text-decoration:none; color:#000">bjorn@rosell.dk</a>
      
      【解决方案7】:

      我有一个未提及的文本电子邮件解决方案:使用类似的 unicode 字符。例如一个点前导 (U+2024) 而不是点。比较一下,Běhej.com 和 Běhej․com 看起来如何(第一个是普通点)。

      【讨论】:

      • 虽然此答案中大多数其他基于 HTML 的技巧适用于 Gmail,但这是唯一适用于 Outlook 2016 的技巧。防止 URL 和电子邮件地址被点击甚至复制粘贴!太棒了!
      • 正是我需要的——谢谢!我一直在寻找一种方法来键入示例电子邮件地址,例如“john@example․com”,这些电子邮件地址不会变成蓝色下划线,也不会像我发送的电子邮件中的真实电子邮件地址一样。这是完美的。
      【解决方案8】:

      现在&lt;span&gt; 的简单包装不起作用,我建议将@ 替换为其 html-entity 替代项

      function disable_email_link($email) {
        //encoder https://mothereff.in/html-entities
        $email = str_replace('@', '&#x40;', $email);
        $email = str_replace('.', '<span>.</span>', $email);
        return $email;
      }
      

      此外,如果您的电子邮件包含电话号码,您可以通过disable_tel_link 函数对其进行转义:

      function wrap_span_letters($string) {
        $res = "";
        $length = strlen($string);
        for ($i = 0; $i < $length; $i++) {
          $res .= "<span>$string[$i]</span>";
        }
        return $res;
      }
      
      function disable_tel_link($phone) {
        return wrap_span_letters($phone);
      }
      

      【讨论】:

        【解决方案9】:

        此处列出的解决方案似乎都不再有效。我对不可打印的 Unicode 字符的想法进行了一些试验,发现这个序列可以工作:

        <span>foo&zwnj;.&zwnj;bar&zwnj;.&zwnj;com</span>
        

        其中 ‌ 是零宽度非连接符。

        【讨论】:

        • 好主意!同样对我来说,这是唯一有效的解决方案
        • 完美,只有一个对我有用的 iOS 上的 Apple 邮件!
        • 这可以防止建立链接,但我需要文本准确,所以我可以将其复制/粘贴到其他地方。非打印字符仍然存在,并且无论粘贴到哪里都会导致问题。否则是个好主意。
        • 非常聪明!谢谢!如果有人在使用 SendGrid,则需要三个括号:{{{ field }}} 使其工作
        【解决方案10】:

        我的确认信息标题中有一个 .com。 受@perilbrain 的启发,我像这样解决了我的问题

        domain.com => domain<span>.</span>
        

        php

        $titre = str_replace(".", "<span>.</span>", $titre);
        

        简单!

        【讨论】:

          【解决方案11】:

          假设您的显示网址是“abcdUrl.com” 要防止 gmail 显示为链接,请将其包装在锚标记中

          <a href="" style="text-decoration:none;color:#333;"> abcdUrl.com </a>

          这在 gmail 中运行良好。

          【讨论】:

            【解决方案12】:

            我遇到了同样的问题,所以几分钟后发现如何解决它。

            问题是,如果您直接定位该元素,它将无法工作,因为 gmail 会自动在其中添加一个“a”标签,因此您必须更进一步并为该“a”标签声明一个类。在我的情况下,电子邮件位于“”标签中,我发现它更容易使用。所以我所做的就是创建一个这样的类:

            .email_contact a {color:#ffffff!important; text-decoration: none!important;}
            

            我的代码中没有“a”标签,但由于 gmail 会自动添加它,所以你应该在那里捕捉它。现在你只需要在你放置电子邮件的地方使用那个类,比如“span”或“div”,然后繁荣!固定。

            【讨论】:

              【解决方案13】:

              虽然不是理想的解决方案,但对某些人来说可能是一种选择。自 2020 年 3 月 12 日起,如果您禁用 Multipart 并发送 plain text only 电子邮件,您将获得以下超链接结果。无论是在新行/句子的开头还是句子的中间,结果似乎都是一样的。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2011-01-07
                • 2012-01-28
                • 2020-06-03
                • 2011-06-04
                • 1970-01-01
                • 2012-02-10
                • 2013-08-03
                相关资源
                最近更新 更多