我正在使用ASP.Net身份和我的Web Api项目AccountController
我想发送验证邮件给新用户。我已经使用MVCMailer将我的电子邮件服务插入ASP.Net身份。使用MVCMailer与ASP.Net Web Api
public class EmailService : IIdentityMessageService
{
private readonly IUserMailer _userMailer;
public EmailService(IUserMailer userMailer)
{
_userMailer = userMailer;
}
public Task SendAsync(IdentityMessage message)
{
_userMailer.DeliverMessage(message.Body);
// Plug in your email service here to send an email.
return Task.FromResult(0);
}
}
#
public class UserMailer : MailerBase, IUserMailer
{
public UserMailer()
{
MasterName = "_Layout";
}
public virtual IMailMessage DeliverMessage(string message)
{
var mailMessage = new MailMessage();
mailMessage.To.Add("[email protected]");
mailMessage.Subject = "Welcome";
//ViewData = new System.Web.Mvc.ViewDataDictionary(model);
PopulateBody(mailMessage, "Welcome");
mailMessage.Send();
return mailMessage;
}
我自定义的ASP.Net Identiy是在一个单独的项目。正如你上面看到的EmailService依赖于IUserMailer
接口。和IUserMailer
实现是另一个项目MyProject.MVCMailer
(此项目是一个MVC项目)
我尝试解决这种依赖 container.Bind<IUserMailer>().To<UserMailer>().InSingletonScope();
但MVCMailer
有一个依赖于System.Web.MVC
和ninject抱怨的此参考初始化为USerMailer
。
所以问题是在这里我不想将System.Web.MVC
添加到我的Web Api项目。
如何使用MVCMailer,而无需在我的web api项目中引用System.Web.MVC
?
谢谢你的回答。 api消费者是一款iOS应用。用户只需从iOS应用程序注册。成功注册后,“_AppUserManager”是“ASP.Net Identity UserManager”的子类,尝试发送电子邮件。 'AppUserManager'在一个单独的类中。在那个单独的类中,我有一个名为'EmailService'的类,它需要一个IUserMailer实例来发送邮件。 IUserMailer实现在另一个名为'MyApp.MVCMailer'的项目中,该项目是一个MVC项目。我的依赖注入驻留在MyApp.Web.API项目中。依赖注入器需要知道有关System.Web.MVC来创建IUserMailer。 –
所有的事情我做我来到这里添加一个引用System.Web.MVC到我的Web.Api项目。你可以创建一个MVCMailer发送邮件的示例web api吗? –