






























我用以下方法群发邮件,测试时发了600封,费时1小时,这个速度也太慢了,有没其它方法?
1
delegate void dsend();
2
private void Button1_Click(object sender, System.EventArgs e)
3
{
4
dsend ds = new dsend(Exec);
5
ds.BeginInvoke(null,null);
6
}
7
private void Exec()
8
{
9
for(int i=0;i<2000;i++)
10
{
11
SentEmail(i);
12
}
13
}
14
15
public void SentEmail(int i)
16
{
17
18
MailMessage msg = new MailMessage();
19
msg.From = "semye@airprice.com";
20
msg.To = "semye@airprice.com";
21
msg.Subject = "测试邮件群发";
22
msg.Body = System.DateTime.Now.ToString();
23
msg.BodyFormat = MailFormat.Html;
24
msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1" );
25
msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername",userName);
26
msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", password);
27
msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", port);
28
//msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", "1");
29
SmtpMail.SmtpServer = "www.airprice.com";
30
for(int j =0;;j++)
31
{
32
try
33
{
34
SmtpMail.Send(msg);
35
msg = null;
36
WriteDaily(i,1,"",j);//写日志
37
break;
38
}
39
catch(Exception ee)
40
{
41
msg = null;
42
if(j>1)
43
{
44
string a = ee.Message;
45
WriteDaily(i,0,a,j);//写日志
46
break;
47
}
48
else
49
{
50
Thread.Sleep(30000);
51
}
52
53
}
54
}
55
}
56
private void WriteDaily(int nb,int result,string error,int j)
57
{
58
string strconn = "server=.;uid=sa;pwd=;database=mytos";
59
string sql = "insert into SendMessage values("+nb+","+result+",'"+error+"','"+System.DateTime.Now+"',"+j+")";
60
SqlConnection conn = new SqlConnection(strconn);
61
SqlCommand cmd = new SqlCommand(sql,conn);
62
int i = 0;
63
try
64
{
65
conn.Open();
66
i=cmd.ExecuteNonQuery();
67
conn.Close();
68
}
69
catch(Exception ee)
70
{
71
string a = ee.Message;
72
conn.Close();
73
}
74
}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。