#c# #asp.net #gmail
#c# #asp.net #gmail
Вопрос:
Я пытаюсь отправить все электронные письма одновременно с помощью службы gmail, электронное письмо было отправлено успешно. Однако и отправитель, и получатель получают одно и то же электронное письмо.
Когда я пытаюсь отправить одно электронное письмо (не несколько), только получатель, который получает электронное письмо (что правильно).
Почему это так?
Вот код, который я сейчас использую:
Допустим, в пользовательском хранилище есть 11 пользователей, которым требуется система для отправки электронного письма.
- Получатель получает только одно электронное письмо. <— Правильно
- Несколько электронных писем, полученных обеими сторонами (отправителем и получателем) <— Неверно
Класс отправки электронной почты:
IEnumerable<UserRepository> multipleModels;
UserRepository model;
protected void SingleEmail_Click(object sender, EventArgs e)
{
SendSingleEmail(model);
}
protected void MultipleEmail_Click(object sender, EventArgs e)
{
SendMultipleEmail(multipleModels);
}
private void SendSingleEmail(UserRepository repository)
{
string email = File.ReadAllText(HttpContext.Current.Server.MapPath(string.Format("~/Email/Languages/{0}/Email.html", repository.EmailLanguage)));
UserManager.SendSingleEmail(repository, email);
}
private void SendMultipleEmail(IEnumerable<UserRepository> repository)
{
foreach (var models in repository)
{
string email = File.ReadAllText(HttpContext.Current.Server.MapPath(string.Format("~/Email/Languages/{0}/Email.html", models.EmailLanguage)));
UserManager.SendMultipleEmail(models, email);
}
}
Код для отправки электронного письма в классе UserManager:
public static void SendSingleEmail(UserRepository repository)
{
string toEmail = ConfigurationManager.AppSettings["DevEmail"].ToString();
string toName = "Email";
string subject = "Single Subject Email";
EmailHelper.SendEmail(0, repository.Email, repository.Name, toEmail, toName, subject, repository.Description);
}
public static void SendMultipleEmail(UserRepository repository, string description)
{
string fromEmail = ConfigurationManager.AppSettings["DevEmail"].ToString();
string fromName = "Nies";
string subject = "Multiple Subject Email";
EmailHelper.SendEmail(1, fromEmail, fromName, repository.Email, repository.Name, subject, description);
}
Класс EmailHelper:
public static void SendEmail(int id, string fromEmail, string fromName, string toEmail, string toName, string subject, string description)
{
var fromAddress = new MailAddress(fromEmail, fromName);
var toAddress = new MailAddress(toEmail, toName);
string address = (id == 0 ? toAddress.Address : fromAddress.Address);
var smtp = new SmtpClient
{
Host = ConfigurationManager.AppSettings["Mail"].ToString(),
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(address, ConfigurationManager.AppSettings["DevPassword"].ToString())
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = description,
Priority = MailPriority.High,
IsBodyHtml = true
})
{
smtp.Send(message);
}
}
Любая помощь будет оценена.
Комментарии:
1. Что показала отладка?
2. Почему sendsingle Mail и SendMultipleEmail отличаются внутри? Я бы пересмотрел дизайн. Имейте один IEnumerable из UserRepo и один метод, который отвечает за отправку электронного письма. Позвольте ему перебирать репозиторий и отправлять, сколько их есть.