Подтвердить что ты не робот

Не удалось отправить электронное письмо нескольким адресам/получателям с помощью С#

Я использую приведенный ниже код, и он отправляет только одно письмо - мне нужно отправить электронное письмо на несколько адресов.

Для получения более одного письма я использую:

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();
        }
    }

и для отправки письма, которое я использую:

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);
4b9b3361

Ответ 1

Проблема заключается в том, что вы отправляете список адресов, разделенных полуколонами, в конструктор MailMessage, когда он принимает только строку, представляющую один адрес:

Строка, содержащая адрес получателя сообщения электронной почты.

или, возможно, список, разделенный запятыми (см. ниже).

Источник

Чтобы указать несколько адресов, вам необходимо использовать свойство To, которое является MailAddressCollection, хотя примеры на этих страницах не показывают его очень четко:

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

Адреса электронной почты для добавления в MailAddressCollection. Несколько адресов электронной почты должны быть разделены запятой ( "," ).

Страница MSDN

поэтому создание MailMessage с разделенным запятой списком должно работать.

Ответ 2

Это то, что сработало для меня. (получатели представляют собой массив строк)

//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;
}

Ответ 3

Эта функция проверяет список адресов электронной почты, разделенный запятой или точкой с запятой:

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;
    }
}

Ответ 4

Чтобы отправить нескольким получателям, я создал свою строку получателя с запятой в качестве разделителя.

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

Затем, чтобы добавить получателей к объекту MailMessage:

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

Ответ 5

Этот код, который я использую для отправки нескольких писем для, bcc и 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));

Ответ 6

Вам также разрешено передавать MailMessage.To.Add() a список адресов с правильными адресами RFC 822:

Nathaniel Borenstein <[email protected]>, Ned Freed <[email protected]>

Таким образом, код будет выглядеть следующим образом:

message.To.Add("Nathaniel Borenstein <[email protected]>, Ned Freed <[email protected]>");

Примечание. Любой код, выпущенный в общественное достояние. Не требуется атрибуция.