如何从 ASP.NET 发送大量电子邮件?

2023-11-26

我为客户建立了一个网站,他们想要一个定制的新闻通讯工具。构建该工具很容易,但我不确定如何发送电子邮件。

我设置了一个测试页面,并设法使用 System.Net.Mail 命名空间向自己发送测试电子邮件。我尝试将此代码应用于时事通讯页面上的循环,但事实证明这是一项相当困难的任务。电子邮件发送循环在发送电子邮件时将整个站点锁定大约一个小时。有时它会中途终止循环,并且某些电子邮件不会发送。

我尝试在另一个线程上启动循环。

protected void btnSendNewsletter_Click(object sender, EventArgs e)
{
    Thread t = new System.Threading.Thread(new ThreadStart(SendEmails));
    t.Start();
}

但这仍然使网站运行缓慢,并且有中途中止的习惯。群发邮件的常用方法是什么?我确信我做得不对。

我对 .NET 中的电子邮件领域非常陌生。


对于此类任务,您最好将一堆作业添加到队列中。然后运行一个线程,从队列中提取 x 个作业,处理它们(即发送电子邮件),然后休眠一段时间。这将为您的网络应用程序提供一些喘息的空间。

如果您使用数据库,则可以创建电子邮件队列表来存储作业。我更喜欢使用这种存储而不是内存,以防应用程序因某种原因回收或引发异常......至少您可以从上次中断的地方继续。

一般来说,运行工作线程的进程不是 Web 应用程序本身。这将是一个 Windows 服务或类似的东西。如果您使用共享主机,这可能是不可能的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 ASP.NET 发送大量电子邮件? 的相关文章

随机推荐

  • Hibernate 忽略 fetchgraph

    这是我的实体 public class PersonItem implements Serializable Id Column name col1 private String guid Column name col2 private
  • 如何通过将值与公共键相加来从字典列表创建单个Python字典?

    我有一个字典列表 例如 dictList a 3 b 9 c 4 a 9 b 24 c 99 a 10 b 23 c 88 所有字典都有相同的键 例如a b c 我希望创建一个具有相同键的字典 其中的值是原始列表中所有字典中具有相同键的值的
  • 如果没有输入,一定时间后退出循环

    我只是想知道是否可能以及如何实现此功能 如果没有用户输入 我们将退出循环 例如 如果用户在 1 分钟后没有输入任何内容 我想退出循环 这是我的 C 代码 include
  • 如何直接链接到应用商店应用更新页面?

    我正在完成一个 iPhone 应用程序 我使用外部服务器通知用户我的应用程序何时有可用更新 并允许他们从应用程序内单击以直接转到应用程序商店中的更新 问题是 我似乎无法弄清楚直接转到更新的链接格式 我发现了一种旧的使用方法查看软件更新 在另
  • 在 javascript 中使用另一个 fetch 中的 fetch

    我想获取一个 api 然后调用另一个 api 在 javascript 中使用这样的代码是否明智 fetch url method get then function response response json then function
  • 新 Twitter API 1.1 的身份验证

    我有一个应用程序需要显示关注者和关注者的数量 users show json 对于公共页面上的随机用户 不需要身份验证 使用 Twitter API 1 0 这非常容易 因为请求不需要身份验证 使用新的 Twitter API 1 1 不再
  • Sql Server FILESTREAM 总文件大小

    是否有一个查询可以获取磁盘上 FILESTREAM 文件夹中文件的总文件大小 以下查询将返回以字节为单位的长度filestreamcolumn column SELECT SUM DATALENGTH filestreamcolumn FR
  • 使用另一个对象更新 javascript 对象,但仅更新现有的键

    Javascript 或 Lodash 中是否有一个函数 我可以在其中使用另一个对象的值 更新 一个对象 但是无需添加新密钥 var foo a 0 b 1 var bar b 2 c 3 像 update foo bar 一样 覆盖 更新
  • JAX-RS - 没有根节点的 JSON

    我有一个宁静的网络服务 响应是 cities id 1 name City 01 state A1 id 2 name City 02 state A1 但我想要这个 id 1 name City 01 state A1 id 2 name
  • JOptionPane 输入到 int

    我试图让 JOptionPane 获取输入并将其分配给 int 但我遇到了变量类型的一些问题 我正在尝试这样的事情 Int ans Integer JOptionPane showInputDialog frame Text JOption
  • 如何从写成单词的数字中读取值?

    众所周知 数字可以用数字来书写 也可以用名称来称呼 虽然有很多将 123 转换为 123 的示例 但我找不到如何将其反向转换的好示例 一些注意事项 基数 名义或序数 一 和 第一 常见的拼写错误 四十 四十 数百 千 2100 gt 二十一
  • 如何知道鼠标左键是否被按下

    我正在使用 PyAutoGUI 库 如何知道鼠标左键是否被按下 这就是我想做的 if leftmousebuttonpressed print left else print nothing 我是 PyAutoGUI 的作者 我可以确认当前
  • Android SDK路径未指定

    我已经安装了 android studio 但我在继续操作时遇到问题 问题是Android SDK路径未指定 这是什么意思 我需要下载什么东西还是什么 Android SDK 有问题 请执行以下步骤 但首先确保您的电脑已连接到互联网 打开你
  • Twitter资料页iOS Swift剖析(UIScrollView中的多个UITableView)

    嗨 他们到底是如何实现这个的 Twitter 个人资料页面有几个教程 但他们并没有处理所有的可能性 首先 当您滚动顶部或底部任何位置时 顶部视图开始滚动 直到分段控件 到达页面顶部 然后滚动不会停止 子表开始滚动 直到触地并在中间表视图开始
  • Linux 动态链接器中的“无版本信息可用”错误是什么意思?

    在我们的产品中 我们提供了一些动态链接到 libpam 等系统库的 Linux 二进制文件 在某些客户系统上 当程序运行时 我们会在 stderr 上收到以下错误 authpam lib libpam so 0 no version inf
  • UICollectionViewCell 按固有大小展开/折叠

    I have a collection view with a custom flow layout and many different cells of different height The width of the collect
  • Java AsynchronousFileChannel - 线程使用

    我理解Java的AsynchronousFileChannel是一个异步api 不会阻塞调用线程 并且可以使用系统线程池中的线程 我的问题是 AsynchronousFileChannel 操作是否具有 1 1 的线程比 换句话说 如果一个
  • 在 C++ 中创建一个没有 x*x 的 square() 函数

    我正在自学 C 和 Bjarne Stroustrup 的 Programming Principles and Practices Using C 一书 其中一个 试试这个 问这个 不使用乘法运算符实现 square 也就是说 通过重复加
  • 窗口最大化/未最大化时的事件

    当您最大化表单或取消最大化表单时是否会触发一个事件 在你说之前Resize or SizeChanged 只有在以下情况下才会被解雇 Size实际上发生了变化 如果您的窗口恰好与最大化窗口大小相同 则它们不会触发 地点看起来是下一个最佳选择
  • 如何从 ASP.NET 发送大量电子邮件?

    我为客户建立了一个网站 他们想要一个定制的新闻通讯工具 构建该工具很容易 但我不确定如何发送电子邮件 我设置了一个测试页面 并设法使用 System Net Mail 命名空间向自己发送测试电子邮件 我尝试将此代码应用于时事通讯页面上的循环