在C#中匹配URL编码的电子邮件地址

时间:2011-03-25 20:29:36

标签: c# .net urlencode email-spam

我做了一些搜索,并没有弄清楚为什么我的解决方案无效。基本上我需要一个字符串(这是HTML代码)解析它并寻找mailto链接(然后我想替换它作为混淆的一部分)。以下是我到目前为止的情况:

    string text = "<p>Some Person<br /> Person's Position<br />p. 123-456-7890<br /> e. <a  title=\"Email Some Person\" target=\"_blank\" href=\"mailto:someperson%40domain.com\">someperson@domain.com</a></p>";
    text = Server.UrlDecode(text);
    string safeEmails = Regex.Replace(text, "(<a href=\"mailto:)(.*?)(%40)(.*?)(\">)(.*?)(</a>)", "<a class=\"mailme\" href=\"$2*$4\">$6</a>");
    Response.Write( Server.HtmlDecode(safeEmails));

该文本来自WYSIWYG文本编辑器(熟悉熟悉的Telrik RadEditor),并且出于所有意图和目的,我无权控制其中的内容。

基本上我需要找到并替换任何:

<a href="mailto:someone%40domain.com">someone@domain.com</a>

使用:

<a class="mailme" href="someone@domain.com">someone@domain.com</a>

一些背景:我正在尝试创建一个避免被收割者检测到的mailto链接。问题是我收到一个带有电子邮件的字符串作为标准的mailto链接。我无法控制传入的字符串,因此mailto将始终是一个不受保护的mailto。我的目标是找到所有这些,混淆它们,然后使用JavaScript来“修复”链接,以便人类访问者可以轻松使用mailto链接。我对新方法以及对上述代码的修改持开放态度。

1 个答案:

答案 0 :(得分:0)

您可以使用正则表达式或HTML敏捷包来查找和混淆所有邮件。如果您想要一个好的混淆,请尝试阅读ten methods to obfuscate e-mail addresses compared

修改 对不起,从您的问题的第一个版本开始,我没有让您在使用正则表达式时遇到问题。既然你使用了一个WYSIWYG文本编辑器,我认为它出来的HTML应该是非常“常规”的,所以你可以使用正则表达式。 您可以尝试更改替换行:

string safeEmails = Regex.Replace(text, "href=\"mailto:.*\">(.*)</a>", "class=\"mailme\" href=\"$1\">$1</a>");