2010-07-09 16 views
20

Aşağıdaki kodu kullanıyorum ve sadece bir e-posta gönderiyor - e-postayı birden çok adrese göndermem gerekiyor. Birden fazla e-posta almak içinBirden çok adrese/alıcıya bir e-posta gönderilemiyor C#

kullandığım:

string connectionString = ConfigurationManager.ConnectionStrings["email_data"].ConnectionString; 
OleDbConnection con100 = new OleDbConnection(connectionString); 
OleDbCommand cmd100 = new OleDbCommand("select top 3 emails from bulk_tbl", con100); 
OleDbDataAdapter da100 = new OleDbDataAdapter(cmd100); 
DataSet ds100 = new DataSet(); 
da100.Fill(ds100); 

    for (int i = 0; i < ds100.Tables[0].Rows.Count; i++) 
    //try 
    { 
     string all_emails = ds100.Tables[0].Rows[i][0].ToString(); 
     { 
      string allmail = all_emails + ";"; 
      Session.Add("ad_emails",allmail); 
      Response.Write(Session["ad_emails"]); 
      send_mail(); 
     } 
    } 

ve e-posta göndermek için

kullandığım:

string sendto = Session["ad_emails"].ToString(); 

MailMessage message = new MailMessage("[email protected]", sendto, "subject", "body"); 
SmtpClient emailClient = new SmtpClient("mail.smtp.com"); 
System.Net.NetworkCredential SMTPUserInfo = new System.Net.NetworkCredential("abc", "abc"); 
emailClient.UseDefaultCredentials = true; 
emailClient.Credentials = SMTPUserInfo; 
emailClient.Send(message); 
+1

Sorun nedir? –

+0

Lütfen buraya gönderilen kodu kontrol edin. Yeniden biçimlendirdiğimde fazladan bir {{}} grubu buldum. Bunun kasıtlı olduğunu düşünmüyorum, bu yüzden onları kaldırdım. Onları geri koymak istiyorsanız yukarıdaki düzenle bağlantısını tıklamanız yeterlidir. –

+0

Farklı e-postaları ayırmak ve bir MailAddress nesnesi oluşturmak için a, çalışmaz! Bu çözümü kontrol edin: http://stackoverflow.com/questions/7498968/how-to-send-email-to-multiple-ad-system-net-mail – dtakis

cevap

59

sorun yarı ayrılmış adreslerin bir listesini temin olmasıdır

A İçerdiği dizgiyi yalnızca tek bir adresi temsil eden bir dize aldığında MailMessage yapıcısına e-posta mesajının alıcının adresi.

ya da muhtemelen virgül ile ayrılan bir listesi (aşağıya bakınız).

message.To.Add("[email protected], [email protected]")); 

e:

Source

bu sayfalarda örnekler çok net görünmüyor olsa, bir MailAddressCollection olduğunu To özelliğini kullanmak gerekir birden fazla adres belirtmek için MailAddressCollection eklemek için e-posta adresleri. Birden çok e-posta adresi bir virgül karakteri (",") ile ayrılmalıdır.

MSDN page

çok çalışmalıdır bir virgül ayrılmış bir liste ile MailMessage oluşturma.

+4

evet, virgülle ayrılmış adresler çalışın – Andrew

+1

Dolu bir var mı? Bu işlevsellik örneği? –

8

Bu benim için çalıştı.

public static bool IsValidEmailString(string emailAddresses) 
{ 
    try 
    { 
     var addresses = emailAddresses.Split(',', ';') 
      .Where(a => !string.IsNullOrWhiteSpace(a)) 
      .ToArray(); 

     var reformattedAddresses = string.Join(",", addresses); 

     var dummyMessage = new System.Net.Mail.MailMessage(); 
     dummyMessage.To.Add(reformattedAddresses); 
     return true; 
    } 
    catch 
    { 
     return false; 
    } 
} 
6

Bu fonksiyon e-posta adresleri virgülle veya noktalı virgülle ayrılmış liste doğrular (alıcılar Strings bir Array) Ayırıcım olarak bir virgül.Sonra

string recipient = "[email protected],[email protected],[email protected]"; 

MailMessage nesneye alıcılar eklemek için:

string[] emailTo = recipient.Split(','); 
for (int i = 0; i < emailTo.GetLength(0); i++) 
    mailMessageObject.To.Add(emailTo[i]); 
+0

Bunun olması gerekir .Where (a =>! String.IsNullOrEmpty (a)) ToArray(); bunun yerine –

+1

Av için teşekkürler. .NET 4.0 işlevini kullanıyorum, ancak IsNullOrWhiteSpace 'kodunu güncelledim – Matt

4

Ben ile benim alıcı dizesi kurmak birden çok alıcıya göndermek için:

//Fuse all Receivers 
var allRecipients = String.Join(",", recipients); 

//Create new mail 
var mail = new MailMessage(sender, allRecipients, subject, body); 

//Create new SmtpClient 
var smtpClient = new SmtpClient(hostname, port); 

//Try Sending The mail 
try 
{ 
    smtpClient.Send(mail); 
} 
catch (Exception ex) 
{ 
    Log.Error(String.Format("MailAppointment: Could Not Send Mail. Error = {0}",ex), this); 
    return false; 
} 
0

Ayrıca izin verilen bu ben bcc, için gönderme birden postada kullanmak kodu ve cc

MailMessage email = new MailMessage(); 
Attachment a = new Attachment(attach); 
email.From = new MailAddress(from);//De 
string[] Direcciones; 
char[] deliminadores = { ';' }; 

//Seleccion de direcciones para el parametro to 
Direcciones = to.Split(deliminadores); 
foreach (string d in Direcciones) 
email.To.Add(new MailAddress(d));//Para 

//Seleccion de direcciones para el parametro CC 
Direcciones = CC.Split(deliminadores); 
foreach (string d in Direcciones) 
email.CC.Add(new MailAddress(d)); 

//Seleccion de direcciones para el parametro Bcc 
Direcciones = Bcc.Split(deliminadores); 
foreach (string d in Direcciones) 
enter code here`email.Bcc.Add(new MailAddress(d));