我正在尝试一次向超过一百个人发送包含附件的电子邮件,我发现非常好的源代码与附件完美配合,但不能同时向多个人发送邮件。
所以现在我的问题是:你能帮我修改现有的代码吗?
编程语言: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("some.person@gmail.com", "Hello World!", "like in the title...", "C:\\temp.rar");
}
}
}
答案 0 :(得分:1)
我认为这就是你要找的东西:
message.To.Add(new MailAddress("test@gmail.com");
答案 1 :(得分:0)
在SendMessage的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;
}