我用以下方法群发邮件,测试时发了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
}
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
try33
{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
else49
{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
try64
{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
}

浙公网安备 33010602011771号