2012-05-09 3 views
-6

Я пытаюсь отправить электронную почту с вложениями более чем сотню человек одновременно, и я нахожу очень хороший исходный код, который отлично работает с приложением, но не может отправлять письма нескольким мужчинам одновременно.Как отправить письмо через другого пользователя с этого кода?

Итак, теперь мой вопрос: можете ли вы помочь мне изменить существующий код, чтобы сделать эту работу?

Язык программирования: C#

Вот код:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Net; 
using System.Net.Mail; 

namespace ConsoleApplication3 
{ 

    public class GmailAccount 
    { 
     public string Username; 
     public string Password; 
     public string DisplayName; 

     public string Address 
     { 
      get 
      { 
       return Username + "@gmail.com"; 
      } 
     } 

     private SmtpClient client; 

     public GmailAccount(string username, string password, string displayName = null) 
     { 
      Username = username; 
      Password = password; 
      DisplayName = displayName; 

      client = new SmtpClient 
      { 
       Host = "smtp.gmail.com", 
       Port = 587, 
       EnableSsl = true, 
       DeliveryMethod = SmtpDeliveryMethod.Network, 
       UseDefaultCredentials = false, 
       Credentials = new NetworkCredential(Address, password) 
      }; 
     } 

     public void SendMessage(string targetAddress, string subject, string body, params string[] files) 
     { 
      MailMessage message = new MailMessage(new MailAddress(Address, DisplayName), new MailAddress(targetAddress)) 
      { 
       Subject = subject, 
       Body = body 
      }; 

      foreach (string file in files) 
      { 
       Attachment attachment = new Attachment(file); 
       message.Attachments.Add(attachment); 
      } 

      client.Send(message); 
     } 
    } 

    class Program 
    { 
     static void Main(string[] args) 
     { 
      GmailAccount acc = new GmailAccount("username", "password", "Caption"); 
      acc.SendMessage("[email protected]", "Hello World!", "like in the title...", "C:\\temp.rar"); 
     } 
    } 
    } 
+1

привет хочет быть Spambot номер 10230920: P, если Youre только рассылки людей, которые хотят быть отправлены по почте и подписаться на него, не не ожидайте много помощи его попросили так много раз здесь: P – RhysW

+0

Многие вещи ... я работаю над похожим кодом от себя самого, но имею проблему с отправкой более чем одного приложения .. – John

+0

john его точка была показана нам, что вы уже пробовали, или, по крайней мере, расскажите нам, поэтому мы может сказать, почему его не работает ... – RhysW

ответ

0

Pass больше значения расщепляется с запятой в параметре TargetAddress из Отправить сообщение.

Пример код для отправки почты несколько лиц:

public bool SendEmail() 
{ 
    bool status = false; 

     try 
     { 
      //code to send email 
      this._mail = new MailMessage(); 

      this._mail.From = new MailAddress(this.From, this.DisplayName); 

      if (!string.IsNullOrEmpty(this.To)) 
      { 
       var distinctAddress = new List<string>(this.To.Split(',').Distinct()); 
       this.To = string.Empty; 

       foreach (string address in distinctAddress) // Loop through all strings 
       { 
        this.To += address + ","; // Append string to StringBuilder 
       } 
       this.To = this.To.TrimEnd(','); 
       this._mail.To.Add(this.To); 
      } 

      if (!string.IsNullOrEmpty(this.CC)) 
       this._mail.CC.Add(this.CC); 

      if (!string.IsNullOrEmpty(this.BCC)) 
       this._mail.Bcc.Add(this.BCC); 

      this._mail.Subject = this.Subject; 

      this._mail.IsBodyHtml = this.IsBodyHtml; 

      this._mail.Body = this.Body; 

      if (this.Priority == true) 
      { 
       this._mail.Priority = MailPriority.High; 
      } 

      this._mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure; 

      if (this._attachments != null && this._attachments.Count > 0) 
      { 
       foreach (string file in this._attachments) 
       { 
        Attachment attachment = new Attachment(file); 
        this._mail.Attachments.Add(attachment); 
       } 
      } 

      this._smtpServer = new SmtpClient(this.EmailServer); 
      this._smtpServer.EnableSsl = this.EnableSsl; 
      this._smtpServer.Port = this.Port; 
      this._smtpServer.Credentials = new System.Net.NetworkCredential(this.UserId, this.Password); 

      if (String.IsNullOrEmpty(this.To) != true || string.IsNullOrEmpty(this.CC) != true || string.IsNullOrEmpty(this.BCC) != true) 
       this._smtpServer.Send(this._mail); 
      status = true; 
     } 
     catch (Exception ex) 
     { 
     } 
    return status; 
} 
+0

thnx for answere Я попробую ... – John

+3

* facepalm * способ научить нового парня самому делать что-то, а не полагаться на всех остальных, чтобы сделать это для него: P – RhysW

1

Я думаю, что это то, что вы ищете:

message.To.Add(new MailAddress("[email protected]"); 
+1

, ему будет лучше со списком, содержащим весь набор сотен людей, которых он хочет отправить по почте и повторить через цикл, где «[email protected]» - это i, где i - это как количество циклов, так и номер списка, который нужно выбрать, а затем выполнить его до конца списка, используя код внутри цикла с одним изменением, которое я предложил :) (не добавив к вашему ответу, чтобы сделать его более полезным) – RhysW

+1

Согласен. Поскольку он не приложил много усилий в его вопросе, я не хотел давать ему все. –

 Смежные вопросы

  • Нет связанных вопросов^_^