C# 对于一个可能发送10k+;的.Net程序,您可以共享什么类型的gotchas/tips/hints;每天给订户发电子邮件?

C# 对于一个可能发送10k+;的.Net程序,您可以共享什么类型的gotchas/tips/hints;每天给订户发电子邮件?,c#,.net,email,C#,.net,Email,我知道如何编写发送电子邮件的基本c#代码,但我想知道是否涉及到更大的问题。有什么我应该避免的吗?最佳实践?等 谢谢 你可能应该限制你的电子邮件,使每单位时间发送的邮件不超过x封。您不希望客户端的电子邮件服务器将您的电子邮件误认为是拒绝服务攻击 我想你已经处理过更大的问题,比如客户是如何选择加入还是取消订阅 还要为大量无法送达的邮件做好准备,并做好处理这些邮件的准备。人们总是改变他们的电子邮件地址,离开公司等。不要因为日复一日地向相同的无法送达的地址发送电子邮件而成为客户(或大型ISP)的敌人 作

我知道如何编写发送电子邮件的基本c#代码,但我想知道是否涉及到更大的问题。有什么我应该避免的吗?最佳实践?等


谢谢

你可能应该限制你的电子邮件,使每单位时间发送的邮件不超过x封。您不希望客户端的电子邮件服务器将您的电子邮件误认为是拒绝服务攻击

我想你已经处理过更大的问题,比如客户是如何选择加入还是取消订阅

还要为大量无法送达的邮件做好准备,并做好处理这些邮件的准备。人们总是改变他们的电子邮件地址,离开公司等。不要因为日复一日地向相同的无法送达的地址发送电子邮件而成为客户(或大型ISP)的敌人

作为对您评论的回应,一个功能强大的电子邮件服务器在一个快速连接上可以轻松地每秒发送100封电子邮件,如果不是1000封的话

考虑一下你希望收件人在一天中的什么时候收到电子邮件。早上、下午等等,根据他的(而不是你的)时区来思考。在下午4点发送一封宣传“晚餐理想葡萄酒”的电子邮件比在凌晨4点发送要好

使用“共享”电子邮件服务器时要格外小心。您是否与将ip地址列入黑名单的垃圾邮件发送者共享?你怎么能确定明天不会改变

你熟悉这本书吗?你越能将自己与垃圾邮件发送者分开,你的电子邮件就会收到越好。

  • 确保您使用的托管服务不会因为您发送的电子邮件数量而禁用您的帐户
  • 添加一些审计或日志记录,以便了解您发送了哪些邮件
  • 使用密件抄送将同一邮件发送给多个收件人
  • 将邮件排成队列以避免电子邮件突然出现
  • 考虑成批发送邮件。例如,你通知用户一个新的论坛帖子,然后不要每次有人发帖时都给每个人发邮件,提供每日摘要的可能性
  • 正如其他人所指出的,使用线程发送大量邮件

您可能希望成批生成这些内容,因此所有内容都不是在连续循环中从一个进程发送的。如果您通过25封电子邮件对批进行分组,并生成50个线程来发送这25个队列,那么您可以更快地完成此任务。考虑到您的10000封电子邮件,只需8个循环即可完成整批电子邮件


显然,您可以更改这些数字,但您需要将其拆分为多个线程,以发送一组电子邮件。这将取决于您找到此进程的最佳数目。

如果您还没有找到,我强烈建议您使用多线程

这实际上与.net没有任何关系,但是:

创建一个简单的取消订阅方法

确保您的主机的IP地址尚未设置。此外,请确保反向DNS配置正确

确保将配置存储在配置文件中。这会让你的生活更轻松

Web.config:


<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections >
  </configSections >
  <system.net>
    <mailSettings>
      <smtp from="example@gmail.com" deliveryMethod="Network">
        <network host="smtp.gmail.com" port="587" userName="example@gmail.com" password="password" />
      </smtp>
    </mailSettings>
  </system.net>
</configuration>



如果你要发送数千封电子邮件,我假设你是某个公司实体的一部分。这不是一个如何回答的问题,但你真的需要意识到这一点。我的公司发大量电子邮件,这是我第一天上班时收到的第一批邮件之一。考虑到它可能会提供一些相当严厉的惩罚,确保你遵守法案的规定有助于避免一些问题

>我会认真考虑在其他地方托管您的邮件服务器。 Spamhous、Outblaze和其他公司已经将大部分EC2地址空间列入黑名单。你会很难受的

看 和

建议更新


如果我走这条路,我会做两件事中的一件。要么我会建立自己的邮件服务器,并保持在黑名单的顶端;或者,我会与一家电子邮件营销公司整合,比如。他们有一个相当不错的web服务API。

在GameSpy,我们使用MSMQ对电子邮件进行排队,有时是十万封或更多。如果服务崩溃或出现问题,可以很容易地重新启动,并从中断处恢复。

将这一行添加到您的电子邮件中

“请加上yoursendingaddress@yourdmain.com到您的安全发件人列表”


:)哈哈

在穿衣服时要非常小心。我见过一些糟糕的代码,它们会启动几个线程,但无法锁定数据,导致一些人收到多达十封或更多的相同电子邮件。那显然不好


此外,如果它必须与您的网站在同一个框中运行,那么您肯定希望使用某种计时器对象,以避免同时发送所有内容。根据您的实现,您可以让CPU或磁盘崩溃。

我为一家营销公司开发了一个批量电子邮件系统。我们每月在几个客户之间发送大约1000万。几点建议:

  • 确保你有一个机制表单来响应退出和退订,包括AOL的“服务条款”电子邮件,其中用户将你的电子邮件归类为垃圾邮件
  • 使用垃圾邮件评分和电子邮件呈现服务,确保您的电子邮件在过滤器中看起来不像垃圾邮件
  • 考虑使用第三方设备或服务,如StrongMail作为卷和ISP的白名单

这是由第三方托管的吗?有些主机对您可以发送的电子邮件数量等有严格限制。它可能会托管在EC2实例或类似实例上。好主意-现在我想知道一个给定的服务器在一秒钟左右可以发送多少电子邮件。。。有没有一种方法可以发送模拟电子邮件来测试这类事情?都是合理的建议。有没有关于亚马逊EC2是否有反盗版的规定