Я работаю над проектом на форуме, где пользователи могут отправлять сообщения.Проект выполнен на веб-форме ASP.Net с использованием Identity.
В классе IdentityConfig.cs код, отвечающий за создание структуры электронной почты, выглядит следующим образом:
public class EmailService : IIdentityMessageService
{
public Task SendAsync(IdentityMessage message)
{
// Plug in your email service here to send an email.
//return Task.FromResult(0);
return Task.Factory.StartNew(() =>
{
sendMail(message);
});
}
void sendMail(IdentityMessage message)
{
#region formatter
string text = string.Format("Please click on this link to {0}: {1}", message.Subject, message.Body);
string html = "Please confirm your account by clicking this link: <a href=\"" + message.Body + "\">link</a><br/>";
html += HttpUtility.HtmlEncode(@"Or click on the copy the following link on the browser:" + message.Body);
#endregion
MailMessage msg = new MailMessage();
msg.From = new MailAddress(ConfigurationManager.AppSettings["Email"].ToString());
msg.To.Add(new MailAddress(message.Destination));
msg.Subject = message.Subject;
msg.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(text, null, MediaTypeNames.Text.Plain));
msg.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(html, null, MediaTypeNames.Text.Html));
SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", Convert.ToInt32(587));
System.Net.NetworkCredential credentials = new System.Net.NetworkCredential(ConfigurationManager.AppSettings["Email"].ToString(), ConfigurationManager.AppSettings["Password"].ToString());
smtpClient.Credentials = credentials;
smtpClient.EnableSsl = true;
smtpClient.Send(msg);
}
Когда пользователь регистрируется, этот код используется для отправки электронной почты какследует
string code = manager.GenerateEmailConfirmationToken(user.Id);
string callbackUrl = IdentityHelper.GetUserConfirmationRedirectUrl(code, user.Id, Request);
manager.SendEmail(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>.");
Я попытался воссоздать следующий код, чтобы иметь возможность отправить электронное письмо для других функций, связанных с проектом.Сначала я попытался создать второй «пустой почтовый ящик», который выглядит так:
public void sendCoordinatorMail(IdentityMessage message)
{
#region formatter
string text = string.Format("A user of your department has submitted a post.");
string html = "";
html += HttpUtility.HtmlEncode(@"" + message.Body);
#endregion
MailMessage msg = new MailMessage();
msg.From = new MailAddress(ConfigurationManager.AppSettings["Email"].ToString());
msg.To.Add(new MailAddress(message.Destination));
msg.Subject = message.Subject;
msg.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(text, null, MediaTypeNames.Text.Plain));
msg.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(html, null, MediaTypeNames.Text.Html));
SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", Convert.ToInt32(587));
System.Net.NetworkCredential credentials = new System.Net.NetworkCredential(ConfigurationManager.AppSettings["Email"].ToString(), ConfigurationManager.AppSettings["Password"].ToString());
smtpClient.Credentials = credentials;
smtpClient.EnableSsl = true;
smtpClient.Send(msg);
Приведенный выше код необходим для создания электронного письма, которое отправляется администратору форума всякий раз, когда пользователь создает и отправляет сообщение., там я добавил следующий код после кода "Post newPost = new Post ()", который выглядит следующим образом
manager.sendCoordinatorMail(user.Id, "A user of your department has submitted a post.", "");
Кажется, я получаю сообщение об ошибке "sendCoordinatorMail", которое говорит
'ApplicationUserManager' does not contain a definition for 'sendCoordinatorMail' and no accessible extension method 'sendCoordinatorMail' accepting a first argument of type 'ApplicationUserManager' could be found.
Я прошу прощения за очень длинный вопрос, но есть ли что-то, что я явно делаю неправильно?