Gmail 生成器是管理邮件订阅的常见方式。本质上,它类似于临时邮箱提供商,但更加灵活、可靠且安全。
生成器的核心是创建额外的 Gmail 地址。您可以在各类网站注册时使用这些额外地址。这些网站很可能会向您提供的地址发送邮件。由于这些地址是额外的,所有邮件将汇入您的主邮箱。但同时,由应用程序生成或手动准备的额外地址会被标记为邮件的收件人。
通过收件人地址搜索邮件,可过滤邮件并对其执行一次性或永久性的自动操作。您还可以捕捉未经您同意而将您的地址分享给第三方的网站。
例如,假设您生成了一个额外的地址 username+for.spam.sender@gmail.com 。然后将其提交给 spam-sender.com 网站。过一段时间,您可能会收到来自其他网站(如 other-sender.com)的邮件,但收件人将是 username+for.spam.sender@gmail.com 。在其他情况下,您无法弄清楚 other-sender.com 为什么给您发送促销邮件,但由于您使用了备用地址,便能轻易发现 spam-sender.com 将您的地址分享给了第三方。而如果如此,取消这些站点的邮件订阅就没有意义。您的额外地址很可能已经被纳入某些公共库用于发送垃圾邮件。如果您直接阻止所有发往此额外地址的邮件,将会更容易。若还能自动将此类邮件移动到垃圾邮件文件夹,将会更好。此设置会让这些站点很难继续发送垃圾邮件,因为 Gmail 会记录这些站点在发送垃圾邮件。
那么让我们来了解如何使用 Aspose.Email for .NET 实现这样的生成器。
生成临时 Gmail 并进行操作
生成额外的 Gmail 地址其实并不需要 Aspose.Email,也不必以任何方式与 Gmail 服务交互。只要符合一定规则,您手动或随机编造的任何额外地址都可以使用。
这些规则是什么?
点号并不重要。也就是说,在 ‘@’ 符号前,您既可以删除点号,也可以在任意字母之间添加新的点号。
在 ‘@’ 符号之前,您可以添加 ‘+’ 字符,后面跟任意字母和数字组合。以下是 “username@gmail.com” 地址的示例:
所有这些地址已可在网站注册时使用。但单独使用意义不大,因为发送到这些地址的所有邮件都会汇入您的主邮箱。因此,建议按照我们的说明来使用这些地址。
简易临时 Gmail 生成器
接下来我们创建一个简单的随机子地址生成器。为此,我们将在 ‘+’ 与 ‘@’ 字符之间插入随机字符串。首先,需要生成一定长度、由特定字符集组成的随机字符串:
const string pattern = "abcdefghijklmnopqrstuvwxyz0123456789";
var patternLength = pattern.Length;
const int suffixLength = 10;
var random = new Random();
var generatedSuffix = Enumerable.Range(0, suffixLength)
.Aggregate(
new StringBuilder(),
(builder, _) => builder.Append(pattern[random.Next(patternLength)]))
.ToString();
现在我们需要获取电子邮件地址并将生成的随机字符串添加到其中。为此,我们将使用 <a href="https://reference.aspose.com/email/net/aspose.email/mailaddress/" rel="nofollow noopener" target="_blank">MailAdress 类来自 Aspose.Email for .NET 库:
var originalAddress = new MailAddress("some.address@gmail.com");
var generatedAddress = new MailAddress(
$"{originalAddress.User}+{generatedSuffix}@{originalAddress.Host}");
Console.WriteLine(generatedAddress);
完成!该接收地址已经可以在网站注册时使用。网站将很快向此地址发送邮件。让我们看看可以对这些邮件做些什么。
使用 IMAP 客户端操作生成的 Gmail 收到的邮件
首先,要在额外地址上操作邮件,需要连接 Gmail。IMAP 非常适合此操作。使用该协议连接时,请确保已在账户中允许使用该协议。您也可以使用专用的应用密码来简化 IMAP 连接,这样如果不想在应用中实现 OAuth 授权,就无需进行授权。只需进入 Google 账户设置,打开安全性页面并添加应用密码。请记得将生成的密码保存在安全位置,并尽量不要遗失,因为它提供了对您邮件的完全访问权限!
那么,让我们使用 <a rel="nofollow noopener" target="_blank" href="https://reference.aspose.com/email/net/aspose.email.clients.imap/imapclient/">ImapClient 类,并通过 IMAP 协议连接到您的 Gmail 帐户:
var imapClient = new ImapClient("imap.gmail.com", 993, originalAddress.User, "password",
SecurityOptions.SSLAuto);
完成,现在我们可以,例如,获取所有发送到生成的 Gmail 地址的邮件:
await imapClient.SelectFolderAsync("INBOX");
var queryBuilder = new ImapQueryBuilder();
queryBuilder.To.Contains(generatedAddress.Address);
var list = await imapClient.ListMessagesAsync(queryBuilder.GetQuery());
您将收到所有此类邮件,无论它们来自哪个站点。可能是您提供生成的邮箱地址的站点,也可能是其他站点,任意地址皆可。我们不是按发件人筛选邮件,而是按收件人,这非常便利。
标记、删除、移动收到的临时 Gmail 邮件
获取到邮件列表后,我们即可一次性对其执行各种操作。无需逐个在邮箱中寻找。只需几条指令,所有邮件即可标记为已读、移动到其他文件夹或直接删除。请务必事先确认邮件列表不为空,避免已全部删除的情况。
if (list.Count > 0)
{
//Mark as read
await imapClient.AddMessageFlagsAsync(list, ImapMessageFlags.IsRead);
//Move
await imapClient.MoveMessagesAsync(list, "DestinationFolder");
//Remove
await imapClient.DeleteMessagesAsync(list, commitNow: true);
}
完成,收件箱已清除垃圾邮件。
订阅临时 Gmail 地址
如果您不想通过手动调用上述代码来不断删除或标记邮件怎么办?如果您希望邮件一收到就立即删除呢?例如,您可以订阅新邮件并编写一个函数,在邮件到达您的邮箱时立即删除它们。
await imapClient.StartMonitoringAsync((_, eventArgs) =>
{
var generated = eventArgs.NewMessages
.Where(message => message.To
.Any(address => address.Equals(generatedAddress)))
.ToList();
if (generated.Count == 0) return;
imapClient.SelectFolder("INBOX");
//Do something with the received messages. For example, mark them as read:
imapClient.AddMessageFlags(generated, ImapMessageFlags.IsRead);
//or delete them
imapClient.DeleteMessages(generated, commitNow: true);
},
(_, errorEventArgs) => Console.WriteLine(errorEventArgs.Error.Message),
"INBOX");
此算法略有简化,因为在出现错误时,新邮件的订阅会被中断。您可以大幅改进该算法。为此,需要通过完善错误处理来细化算法。例如,您可以设置错误情况下的监控恢复,可使用 ImapClient.ResumeMonitoring 方法。该方法将重新连接到 IMAP 服务器并恢复对新邮件的监控。
遗憾的是,要使用此算法,您仍然必须让程序保持持续运行。一旦中断程序的执行,新邮件将不再被自动删除。不过,这种情况下还有其他解决方案。
停止接收发送到生成的 Gmail 地址的邮件
Gmail 提供用于过滤收件邮件的算法。这些算法在服务端工作,只要您正确配置,就永远不会让不需要的邮件通过。目前,遗憾的是,我们无法通过 C# 提供远程配置此类过滤器的功能,但我们计划在不久的将来加入此机会。请关注我们的更新!
因此,如果您想过滤发送到生成的 Gmail 的邮件,首先需要为过滤器创建搜索模板。以下是获取模板的最简代码:
//Generate Gmail search pattern
var searchPattern = $"to:({generatedAddress.Address})";
Console.WriteLine(searchPattern);
这里,变量 generatedAddress 包含本文前面创建的生成的 Gmail。上述代码将创建一个搜索模板并打印到终端。复制此模板,因为在创建过滤器时需要使用它。
现在让我们一步步描述如何创建过滤器。首先,打开 Gmail 邮件网页界面,可通过 <a href="https://mail.google.com/mail" rel="nofollow noopener" target="_blank">此链接 访问。在该界面中,找到搜索栏:

在此搜索栏中,您需要插入本说明前面生成的模板。接下来,您需要点击下面截图中标出的 “Show search options” 按钮:

在打开的搜索选项窗口中,您无需输入任何额外数据,已生成的模板已配置好搜索。只需点击 "Create filter" 按钮。

结果是,过滤器设置窗口将打开:

在此您可以选择过滤器对接收到的生成 Gmail 地址的邮件执行的操作。您可以自动归档、标记为已读、删除等。通常最好的选择是删除邮件,因为邮箱容量有限,没必要把它用于垃圾存储。选择合适的操作后,请再次点击 “创建过滤器” 按钮。
完成!过滤器已全部配置,垃圾邮件不再打扰您。
管理临时 Gmail 过滤器
有时您从某个网站收到的邮件会变成垃圾邮件。它们只会占据邮箱空间,妨碍您查找真正重要和有价值的内容。因此,您会创建过滤器来屏蔽该网站的垃圾邮件。但如果该网站的邮件不再是垃圾邮件怎么办?例如,您需要找回密码。网站会发送包含密码重置链接的邮件,但由于过滤器立即删除该邮件,您无法收到。
幸运的是,有一种优雅的解决方案。您可以暂时重新配置过滤器,使其不删除这些邮件,或者彻底删除过滤器。下面看看如何操作。
首先,打开 Gmail 网页界面。打开的页面上,点击 “Settings” 按钮:

在打开的窗口中,点击 “See all settings” 按钮:

Gmail 账户设置窗口将打开。它包含多个标签页,可对您的邮件体验进行细致调整。我们关注的是 “Filters and Blocked Addresses” 标签页。打开此标签页:

在打开的标签页中,您将看到之前创建的生成 Gmail 的过滤器列表,可能还会显示其他过滤器:

通过过滤器的描述,您可以轻松确定哪个过滤器负责您想要解除阻止的地址。点击“delete”按钮可永久禁用该过滤器。点击“edit”按钮则可以重新配置过滤器。例如,您可以将邮件标记而不是删除。这样您可以保留过滤器,并在以后更容易启用。编辑过滤器后,您将能够接收该网站所需的邮件。当您想再次阻止生成的 Gmail 时,使用“edit”按钮重新打开过滤器并重新配置操作即可。
就这样。您现在已经是生成 Gmail 地址的高手了。您可以创建大量地址,并熟练地管理发送到 Gmail 的邮件流。通过使用额外的地址,您能够跟踪在未经您同意的情况下将您的数据转移到第三方的网站。您可以在无需重新训练反垃圾系统或多次点击退订按钮的情况下阻止垃圾邮件。您可以使用 Aspose.Email .NET 自动化垃圾邮件删除,或通过设置和 Gmail 界面手动完成。