【问题标题】:How to send mass email to my users and get a response from the mail server如何向我的用户发送大量电子邮件并从邮件服务器获得响应
【发布时间】:2014-12-11 00:26:28
【问题描述】:

我正在向大约 10,000 名注册用户发送电子邮件。过去,我们遇到过并非所有电子邮件都被发送出去的问​​题。我与邮件服务器管理员交谈,他建议我获取一个由邮件服务器生成的不同代码,以跟踪每封发送的电子邮件。

我从我们的 oracle 数据库中获取我的用户列表,然后一次遍历一个并执行SmtpClient.Send()。对于SmtpClient.Send(),我不确定如何恢复邮件服务器的响应。 Send() 是否可以做到这一点,或者我应该使用其他 SmtpClient 发送电子邮件的方法之一来返回响应?

【问题讨论】:

  • 我不知道收到代码。但是一次发送 10K 封电子邮件可能会使服务器不堪重负,或者让您看起来像是在发送垃圾邮件。您可以考虑将电子邮件“分块”成更小的批次,并在更长的时间范围内发送出去。
  • 我会问你的邮件服务器管理员他的意思是什么通过 SMTP 发送电子邮件时没有生成任何标识符或跟踪代码。
  • 其实,如果 Send 方法没有 Exception 就通过了,你也无能为力。这意味着消息已成功传递到 Smtp 服务器,现在由 Smtp 服务器负责传递消息(有时可能需要一些时间),但您无法在自己身边跟踪它
  • 他向我展示了 smtp 服务器在收到电子邮件时会生成一个结果,并且在该结果中他说有一个可识别的代码。在您看来,确保所有电子邮件正确发送到邮件服务器的最佳方法是什么? .net 4.5 最干净的方法是什么?谢谢
  • 我认为您的管理员正在考虑文字 SMTP 协议(​​例如 250 Message Received)。 “已接收”只是服务器的一次握手,让客户端知道它理解请求并可以处理它(而不是最终用户已收到电子邮件)。您的 SmtpClient 库理解这一点并隐式继续(或在 ACK 失败时出现异常)。

标签: c# asp.net email .net-4.5


【解决方案1】:

如果您还没有这样做,请与您的邮件提供商联系并查看他们设置的任何限制/限制(很多措施可以防止垃圾邮件,特别是如果您只为公司邮箱付费)。如果它们有限制,请将它们构建到您的发送模块中。如果他们不这样做,最好还是发送一批电子邮件以避免任何无声的失败。

顺便说一句,我工作的一家公司过去常常向现有和潜在客户群发邮件。我们发现订阅 MailGun 之类的服务以发送电子邮件很有帮助,原因如下:

  • 这些服务旨在处理电子邮件。如果您只完成一项任务,那么您很可能做得很好。
  • 服务提供商关注CAN-Spam(让您有更好的机会避开黑名单)。
  • 该服务还使用了不同的域,因此如果我们被公司阻止,我们仍然可以继续进行业务交易(“我从未收到您的发票”--“那是因为您上个月向我们发送了垃圾邮件,我们阻止了您!” )
  • 作为额外的奖励,这些服务通常会提供活动管理/分析(为什么不在您使用的时候获得反馈)。

【讨论】:

  • Brad 我确实要求我的主管与外部公司一起处理电子邮件列表。他对这个想法不太热衷。所以我所做的是我创建了一个等待功能,每发送 500 封电子邮件,就将电子邮件进程暂停 5 秒。我昨晚测试了它,我按预期收到了所有 5,000 封电子邮件。我现在正在为 10,000 做这件事,看看我是否收到所有这些。如果是这样,那么这就是我将使用的方法。谢谢大家的帮助和建议。
  • @user3523871:很高兴听到。不过,FWIW,MailGun 确实提供
  • 布拉德,感谢您提及 MailGun。这看起来像是一个可以合并到我的网页中的软件。如果我能让它正常工作,我可能会尝试免费试用,只是为了测试。再次感谢。
  • 使用 win forms 应用程序会和控制台应用程序一样好用吗?在发送电子邮件之前,我想添加许多选项。我正在考虑使用后台工作人员发送电子邮件并显示正在发送到 UI 的邮件数量。你觉得这种方法有什么问题吗?谢谢
  • @user3523871:由你决定,但都可以通过电子邮件发送。
猜你喜欢
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
  • 2011-12-24
  • 1970-01-01
  • 1970-01-01
  • 2014-08-12
  • 2013-06-16
  • 2014-04-30
相关资源
最近更新 更多