Just use the current date, time and seconds
something like below, seriously doubt you have that many emails to send to overlap the seconds
Dim uniqueID as string = DateTime.now.ToString("yymmddhms")
or for a length of 10
private string GenerateId()
{
long i = 1, j=-1;
foreach (byte b in Guid.NewGuid().ToByteArray()){i *= ((int)b + 1);}
foreach (byte b in Guid.NewGuid().ToByteArray()) { j *= ((int)b + 1); }
var str1 = string.Format("{0:d}", (i - DateTime.Now.Millisecond));
var str2 = string.Format("{0:d}", (j - DateTime.Now.Millisecond));
return "EMC" + str1.Substring(0, 4) + str2.Substring(str2.Length/2, 3);
}