110,533
社区成员
发帖
与我相关
我的任务
分享
for (int j = 0; j < alist.Count; j++)
{
Thread mythread = new Thread(new ThreadStart(mu.add));
mythread.Start();
}
/*群发*/
private void button1_Click(object sender, EventArgs e)
{
if (!check())
return;
//初始化
toolStripProgressBar1.Visible = true;
toolStripStatusLabel3.Text = "";
toolStripProgressBar1.Maximum = t_to.Items.Count;
ArrayList alist = new ArrayList();
for (int i = 0; i < t_to.Items.Count; i++)
{
string mail;
if (i < senderLst.Items.Count)
{
mail = t_to.Items[i].ToString() + "," + senderLst.Items[i].ToString();
}
else
{
mail = t_to.Items[i].ToString() + "," + senderLst.Items[i % senderLst.Items.Count].ToString();
}
alist.Add(mail);
}
for (int j = 0; j < alist.Count; j++)
{
string senderStr = alist[j].ToString();
string[] str = senderStr.Split(new char[] { ',', ',',',' });
string stmpStr = str[1];
string fromStr = str[2];
string pwdStr = str[3];
string toMail = str[0];
mailunit mu = new mailunit(stmpStr, fromStr, pwdStr, toMail, t_subject.Text, t_body.Text, paths);
Thread mythread = new Thread(new ThreadStart(mu.SendMail2));
mythread.Start();
}
while (All.runing != 0)
{
toolStripProgressBar1.Value = t_to.Items.Count - All.runing;
Application.DoEvents();
toolStripStatusLabel3.Text = "发送成功:" + All.success.ToString() + "条 发送失败:" + All.fail.ToString() + "条";
}
toolStripProgressBar1.Visible = false;
toolStripStatusLabel3.Text = "【结果】发送成功:"+All.success.ToString()+"条 发送失败:"+All.fail.ToString()+"条";
All.success = 0;
All.fail = 0;
MessageBox.Show("【结果】发送成功:" + All.success.ToString() + "条 发送失败:" + All.fail.ToString() + "条");
}
/*发邮件:线程中使用*/
public void SendMail2()
{
All.runing++;
//创建smtpclient对象
System.Net.Mail.SmtpClient client = new SmtpClient();
client.Host = smtp;
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential(from, pwd);
client.DeliveryMethod = SmtpDeliveryMethod.Network;
//创建mailMessage对象
System.Net.Mail.MailMessage message = new MailMessage(from, to);
message.Subject = subject;
//正文默认格式为html
message.Body = body;
message.IsBodyHtml = true;
message.BodyEncoding = System.Text.Encoding.UTF8;
//添加附件
if (paths.Count != 0)
{
foreach (string path in paths)
{
Attachment data = new Attachment(path, System.Net.Mime.MediaTypeNames.Application.Octet);
message.Attachments.Add(data);
}
}
MessageBox.Show("1");
System.Threading.Thread.Sleep(5000);
// MessageBox.Show("2");
try
{
client.Send(message);
All.success++;
All.runing--;
}
catch (Exception ex)
{
All.fail++;
All.runing--;
}
}
//用timer控件也可以
//全局变量
int i = 0;
//timer的click事件里:
for (int j = i; j < alist.Count; j++)
{
Thread mythread = new Thread(new ThreadStart(mu.add));
mythread.Start();
i++;
break;
}
for (int j = 0; j < alist.Count; j++)
{
string senderStr = alist[j].ToString();
string[] str = senderStr.Split(new char[] { ',', ',',',' });
string stmpStr = str[1];
string fromStr = str[2];
string pwdStr = str[3];
string toMail = str[0];
mailunit mu = new mailunit(stmpStr, fromStr, pwdStr, toMail, t_subject.Text, t_body.Text, paths);
Thread mythread = new Thread(new ThreadStart(mu.SendMail2));
mythread.Start();
}
private ArrayList _alist;
private void time(object source, System.Timers.ElapsedEventArgs e)
{
string senderStr = _alist[0].ToString();
_alist.RemoveAt(0);
if(_alist.Count == 0) ((System.Timers.Timer)source).Close();
string[] str = senderStr.Split(new char[] { ',', ',',',' });
string stmpStr = str[1];
string fromStr = str[2];
string pwdStr = str[3];
string toMail = str[0];
mailunit mu = new mailunit(stmpStr, fromStr, pwdStr, toMail, t_subject.Text, t_body.Text, paths);
mu.SendMail2()
}
_alist = alist;
System.Timers.Timer timer = new System.Timers.Timer(5 * 1000);//5秒
timer.Elapsed += new System.Timers.ElapsedEventHandler(time);
timer.Enabled = true;
timer.Start();
for (int j = 0; j < alist.Count; j++)
{
string senderStr = alist[j].ToString();
string[] str = senderStr.Split(new char[] { ',', ',',',' });
string stmpStr = str[1];
string fromStr = str[2];
string pwdStr = str[3];
string toMail = str[0];
mailunit mu = new mailunit(stmpStr, fromStr, pwdStr, toMail, t_subject.Text, t_body.Text, paths);
Thread mythread = new Thread(new ThreadStart(mu.SendMail2));
mythread.Start();
if(j>0)mythread.Sleep(5000);
}
这样既简单有快捷的解决了你点击没反映的情况 自己试验下吧