批量邮件发送.

applelure 2009-04-22 04:05:44
想做一个邮件订阅类的,现在要发送大量的邮件,有没有好一点的解决方案?
想分段发送,减轻服务器的压力。比如:1000个地址,先发200个,等1小时后,再发200个,直到发完为止,具体怎么实现?
谢谢.
...全文
231 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzxap 2009-04-22
  • 打赏
  • 举报
回复
[code=C#]
参考,纯属参考
Thread[] ThreadSender=new Thread[30]
for (int iAry = 0; iAry < 30; iAry++)
{
ThreadSender[iAry] = new Thread(new ThreadStart(UpdateListBox));
ThreadSender[iAry].IsBackground = true;
ThreadSender[iAry].Start();
Thread.Sleep(100);
}
public void UpdateListBox()
{
for (int i = 0; i < 1000;i++ )
{
MAIL=。。。。//邮件地址,定义的一个变量获得的!
...//用C#中的组件发送邮件的过程
//成功就把成功的地址放在1上
sucess=true
this.listView1.Invoke(new EventHandler(WorkerUpdate));
//失败在2上
sucess=false
this.listView2.Invoke(new EventHandler(WorkerUpdate));
}
}
public void WorkerUpdate(object sender, EventArgs e)
{
if (sucess == "tr")
{
this.listView1.Items.Add(this.MAIL);
}
if (sucess == "fal")
{
this.listView2.Items.Add(this.MAIL);
}
}
[/CODE]
zzxap 2009-04-22
  • 打赏
  • 举报
回复
多线程+分批发送
sayluyun 2009-04-22
  • 打赏
  • 举报
回复
用JMAIL 分批发送··
ak8800 2009-04-22
  • 打赏
  • 举报
回复
发送邮件的代码,网上多的很!
每隔一小时发送200封,可以用timer,发送完成后,让程序处于休眠状态,一小时后在重新启动,读取地址,继续发送!
Micao_tong 2009-04-22
  • 打赏
  • 举报
回复
批量,用while循環如下
public static void CreateCopyMessage(string server)//string server
{

#region
// 在127.0.0.1(本地机器)上创建一个TCP服务器,监听
// 110端口的请求(110是POP3服务器的默认端口)
//IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"),110);
//TcpListener tcpServer = new TcpListener(ipEndPoint);
//tcpServer.Start();
// 等待来自POP3客户程序(如Outlook)的连接请求
//TcpClient tcpClient = tcpServer.AcceptTcpClient();
#endregion

string str_gEtmAil = "select mail_from,mail_to ,mail_cc,mail_bcc,mail_subject,mail_body from k_mail where mail_to <>'' and (mail_body is not null) and( mail_time='0')";
SqlConnection sqlcon = new SqlConnection(SqlHaper.SqlConString);
SqlDataReader mdr = SqlHaper.Sqldr(str_gEtmAil, sqlcon);
if (mdr.Read())
{
#region
try
{
//MailAddress from = new MailAddress(mdr["mail_from"].ToString());
//MailAddress to = new MailAddress("endyping@mamalove.com.cn,mis09@mamalove.com.cn");
MailMessage message = new MailMessage();
message.From = new MailAddress(mdr["mail_from"].ToString());
MailAddress copy = new MailAddress(mdr["mail_cc"].ToString());
message.CC.Add(copy);
//MailAddress bcopy = new MailAddress(mdr["mail_bcc"].ToString());
//message.Bcc.Add(bcopy);
message.Subject = mdr["mail_subject"].ToString();
sqlcon.Close();
string strvv = "select mail_to from k_mail where mail_to<>'' and mail_to is not null and (mail_time='0')";
SqlConnection sqlconw = new SqlConnection(SqlHaper.SqlConString);
SqlDataReader mdr2 = SqlHaper.Sqldr(strvv, sqlconw);
while (mdr2.Read())
{
message.To.Add(mdr2["mail_to"].ToString());
}
sqlconw.Close();
SmtpClient client = new SmtpClient(server); //成生SMTP传输类,发送邮件


message.BodyEncoding = System.Text.Encoding.UTF8;
message.Priority = System.Net.Mail.MailPriority.High;

message.IsBodyHtml = true; //设置邮件为HTML形式
string str_count = " select count(*) from mf_pos inner join tf_pos on mf_pos.os_id=tf_pos.os_id and mf_pos.os_no=tf_pos.os_no left join k_busk on tf_pos.prd_no=k_busk.sk001 left outer join prdt on prdt.prd_no=tf_pos.prd_no WHERE mf_pos.os_id='SO' AND TF_POS.OS_ID='SO' and( tf_pos.prd_no like '9%') and (tf_pos.prd_no not in (select k_busk.sk001 from k_busk where sk001 like '9%')) and (tf_pos.os_dd >= '2008-01-01')";

string strcount = SqlHaper.SqlReaderCount(str_count).ToString();


message.Body = "<a href=\"http://bpm/kserp/frm_DzlEdit.aspx\">" + "系統提示您:" + "</br>" + "2008年料號9開頭未做分類的有" + strcount + "筆" + "</a>" + "</br>" +
"<a href=\"http://bpm/kserp/\">" + "進入kserp維護分類" + "</a>";

message.Priority = MailPriority.Normal; //设置邮件优先级为高
client.UseDefaultCredentials = false;
client.Credentials = CredentialCache.DefaultNetworkCredentials;

client.Send(message);
//ClientScript.RegisterStartupScript(GetType(), "Message", "<SCRIPT LANGUAGE='javascript'>alert('" + e.Exception.Message.ToString().Replace("'", "") + "');</script>");

System.Windows.Forms.MessageBox.Show ("邮件发送成功!");
}
catch (SmtpException smtre)
{
//throw (smtre);
System.Windows.Forms.MessageBox.Show(smtre.Message);

}
#endregion
}
takeshe 2009-04-22
  • 打赏
  • 举报
回复
大量发邮件用jmail比较好,具体如何做~只能关注!
Micao_tong 2009-04-22
  • 打赏
  • 举报
回复
using System.Net.Mail;
using System.Net.Mime;
using System.Net;
using System.Net.Sockets;
Micao_tong 2009-04-22
  • 打赏
  • 举报
回复
public static void CreateCopyMessage(string server, string name, string email)//string server
{

string str_gEtmAil = "select email from users where pk_users in (select og.fk_users from users u inner join ORGMEMBER o on o.fk_users=u.pk_users inner join ORGduty og on og.fk_org=o.fk_org and og.fk_duty='1' where u.pk_users =(select users.pk_users from users where users.username='" + name + "' ))";
//string str_gEtmAil = "select mail_from,mail_to ,mail_cc,mail_bcc,mail_subject,mail_body from k_mail where mail_to <>'' and (mail_body is not null) and( mail_time='0')";
SqlConnection sqlcon = new SqlConnection(strcon);
SqlDataReader mdr = SqlHaper.Sqldr(str_gEtmAil, sqlcon);
if (mdr.Read())
{
#region
try
{
MailAddress from = new MailAddress(email);
MailAddress to = new MailAddress(mdr["email"].ToString());
MailMessage message = new MailMessage(from,to);
message.Subject = "領貨通知";

sqlcon.Close();
message.From = from;
message.To.Add( to);
SmtpClient client = new SmtpClient(server); //成生SMTP传输类,发送邮件
message.BodyEncoding = System.Text.Encoding.UTF8;
message.Priority = System.Net.Mail.MailPriority.High;

message.IsBodyHtml = true; //设置邮件为HTML形式

message.Body = "你好!" + "</br>" + "你的請購物品已到,請到備品庫領取你的物品: " + "</br>" + "請先進入kserp系統填寫你的領貨單 → " + "<a href=\"http://bpm/kserp/\"/>" + "</a>";

message.Priority = MailPriority.Normal; //设置邮件优先级为高
client.UseDefaultCredentials = false;
client.Credentials = CredentialCache.DefaultNetworkCredentials;

client.Send(message);

}
catch (SmtpException smtre)
{
//throw (smtre);
throw new SmtpException(smtre.Message);

}
#endregion
}
}
applelure 2009-04-22
  • 打赏
  • 举报
回复
补充一点b/s .

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧