我有一个数组 里面有好多类型的邮件地址 我现在想通过循环来发送邮件 给这些数组里的EMAIL 因为我们是害怕如果对一个邮箱的服务器 发送间隔距离短的话 会被对方的服务屏蔽,比如不要一直给126的邮箱发邮件。可以进行交换的来换 发一个yahoo的然后发一个126的 然后在发一个msn的 然后在发126的
我想重新排列一下这个数组 尽量相邻的邮箱类型不同 我现在有想法了 但是就是程序写不出来 本人程序基础较差 最好贴出来你的程序 或者直接与我联系 MSN:[email protected] 或QQ 34214015、谢谢了 在线等候
我想重新排列一下这个数组 尽量相邻的邮箱类型不同 我现在有想法了 但是就是程序写不出来 本人程序基础较差 最好贴出来你的程序 或者直接与我联系 MSN:[email protected] 或QQ 34214015、谢谢了 在线等候
public class SendEmail
{
public SendEmail()
{
}
public string[] emails;
private void Send()
{
for (int i = 0; i < emails.Length; i++)
{
Thread.Sleep(5000);//隔五秒
//发送emails[i]
}
}
public void RunSend()
{
Thread thr = new Thread(new ThreadStart(Send));
thr.Start();
}
}
//调
SendEmail se = new SendEmail();
se.emails = ...//126的数组
se.RunSend();
ArrayList list2 = new ArrayList(); string[] s = new string[] { "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]" };
if (s.Length > 0)
{
for (int i = 0; i < s.Length; i++)
{
list2.Add(s[i]);
}
//
string prious = string.Empty;
string current = string.Empty;
prious = list2[0].ToString();
int j =0;
for (;j<list2.Count;)
{
current = list2[j].ToString();
if (current.Substring(current.IndexOf('@')).Equals(prious.Substring(prious.IndexOf('@'))))
{
j++;
}
else
{
list.Add(current);
prious = current;
list2.Remove(current);
j = 0;
}
}
}
list 就是 交错排列的 邮件地址列表
{ if(i==0)
{
for(循环发送163的邮箱)
{
} //可以定义一个方法调用,把数组名传过去就可以了
}
if(i==1)
{
for(循环发送126邮箱)
{
} //可以定义一个方法调用,把数组名传过去就可以了
}
if(i==类型个数时)
{
i==0;又重新循环
}}
每个发送线程,都进行Sleep
然后按一定的比例,一个组取出若干个。。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} string[] Emails = { "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]"};
private void Form1_Load(object sender, EventArgs e)
{
Dictionary<string, ArrayList> EmailGroup = new Dictionary<string, ArrayList>();
foreach (string var in Emails)
{
string emailType = var.Substring(var.LastIndexOf('@'), var.Length - var.LastIndexOf('@'));
bool bHave = EmailGroup.ContainsKey(emailType);
if (bHave)
{
EmailGroup[emailType].Add(var);
}
else
{
ArrayList list = new ArrayList();
list.Add(var);
EmailGroup.Add(emailType, list);
}
} IList<SendEmail> emailList = new List<SendEmail>(); foreach (KeyValuePair<String,ArrayList> de in EmailGroup)
{
emailList.Add(new SendEmail(de.Key.ToString(), (ArrayList)de.Value));
} for (int i = 0; i < Emails.Length; i++)
{
foreach (SendEmail var in emailList)
{
string sendEmailName = var.GetSendEmail();
if(sendEmailName != String.Empty)
{
//发送Email的方法。
}
}
Thread.Sleep(5000);
}
}
} public class SendEmail
{
private string _EmailType = String.Empty;public string EmailType
{
get { return _EmailType; }
set { _EmailType = value; }
}
ArrayList _Emails = new ArrayList(); public ArrayList Emails
{
get { return _Emails; }
set { _Emails = value; }
} private int _Index = 0; public int Index
{
get { return _Index; }
set { _Index = value; }
} public string GetSendEmail()
{
if (Index >= Emails.Count)
{
return "";
}
return Emails[Index++].ToString();
} public SendEmail(string emailType,ArrayList emails)
{
this.EmailType = emailType;
this.Emails = emails;
}
}
你自己看下吧,可以解决你的问题。
{
ArrayList t126 = new ArrayList();
t126.Add("126");
ArrayList t163 = new ArrayList();
t163.Add("163");
t163.Add("163");
ArrayList thot = new ArrayList();
thot.Add("hotmail");
thot.Add("hotmail");
thot.Add("hotmail"); ArrayList tsina = new ArrayList();
tsina.Add("sina");
tsina.Add("sina");
tsina.Add("sina");
tsina.Add("sina"); ArrayList tlive = new ArrayList();
tlive.Add("live");
tlive.Add("live");
tlive.Add("live");
// tlive.Add("live"); ArrayList tmsn = new ArrayList();
tlive.Add("msn");
tlive.Add("msn");
tlive.Add("msn");
tlive.Add("msn");
ArrayList all = new ArrayList();
all.Add(t126);
all.Add(t163);
all.Add(thot);
all.Add(tsina);
all.Add(tlive);
// all.Add(tmsn); //string[] m ={ t126, t163, thot, tsina, tyahoo };
ArrayList AL = new ArrayList();
ArrayList newal = new ArrayList();
ArrayList newal1 = new ArrayList();
StringBuilder sb = new StringBuilder();
ArrayList str1 = null;
ArrayList str2 = null;
if (all.Count % 2 != 0)
{
for (int i = 0; i < all.Count; i++)
{
// i = i + 1;
//string [] str1= m[i].ToString().Substring(m[i].ToString().IndexOf('.'));
str1 = (ArrayList)all[i];
if (i == all.Count - 1)
{
str2 = (ArrayList)all[all.Count - 1];
}
else
{
str2 = (ArrayList)all[++i];
str2 = mergeArry(str1, str2);
}
newal.Add(str2);
}
}
else
{
for (int i = 0; i < all.Count; i++)
{
str1 = (ArrayList)all[i];
if (i == all.Count - 1)
{
str2 = (ArrayList)all[all.Count - 1];
}
else
{
str2 = (ArrayList)all[++i];
str2 = mergeArry(str1, str2);
}
newal.Add(str2);
}
}
for (int i = 0; i < newal.Count; i++)
{
//出现问题 如果是多次循环 则应该去递归调用循环 不能这样一个个声明NEWAL
//到这里又应该判断是偶数还是基数
if (i == newal.Count)
{
break;
}
else
{
newal1.Add(mergeArry((ArrayList)newal[i], (ArrayList)newal[++i]));
}
} for (int i = 0; i < newal1.Count; i++)
{
for (int j = 0; j < ((ArrayList)newal1[i]).Count; j++)
{ sb.Append(((ArrayList)newal1[i])[j].ToString() + " ");
} }
Console.Write(sb.ToString());
Console.Read(); }
public class MailSender
{
//从一批email中构造对应的MailSender
public MailSender(ArrayList mailCollection)
{
string tempServerPartStr = string.Empty;
fMailCount = mailCollection.Count;
fSortedMailList = new SortedList<string, Queue<string>>();
foreach (string mail in mailCollection)
{
tempServerPartStr = GetServerPart(mail);
if (!string.IsNullOrEmpty(tempServerPartStr))
{
if (!fSortedMailList.ContainsKey(tempServerPartStr))
fSortedMailList.Add(tempServerPartStr, new Queue<string>());
fSortedMailList[tempServerPartStr].Enqueue(mail);
}
}
} /// <summary>
/// 这种方式呢适合每个线程持有一个MailSender来进行一次性的发送工作
/// 相对的线程间的共享问题就可以避免
/// 这个方法较简单,但是对应的外部调用者(即每个发送线程)都要持有该对象的不重复实例
/// </summary>
public void Send()
{
string mail = null;
while (fMailCount > 0)
{
foreach (KeyValuePair<string, Queue<string>> pair in fSortedMailList)
if (pair.Value.Count > 0)
{
mail = pair.Value.Dequeue();
fMailCount--;
//to-do
//这边调用函数来做实际的发送
}
}
} /// <summary>
/// 这个呢可以考虑多个线程共享一个MailSender对象的
/// 每个线程都从这个对象里头取email,但是这种方式是要考虑共享问题
/// 比较麻烦,但外部相对就简单了
/// </summary>
public string GetAMail()
{
//to-do
}
private string GetServerPart(string mail)
{
throw new NotImplementedException();//这个自己实现好了
} private SortedList<string, Queue<string>> fSortedMailList;
private int fMailCount;
}