Если вы не хотите импортировать библиотеку System.Net.Mail, вам придется использовать интерфейс. Обратите внимание, что это не очень помогает для вашего юнит-тестирования, хотя
public interface IEmailSender{
void Send(EmailNotification emailNotification);
}
и затем в своем классе EmailNotificationService вы можете добавить следующее свойство или передать IEmailSender в своем конструкторе
private IEmailSender emailSender;
public IEmailSender EmailSender
{
get{
if(this.emailSender == null){
//Initialize new EmailSender using either
// a factory pattern or inject using IOC
}
return this.emailSender
}
set{
this.emailSender = value;
}
}
Ваш метод уведомления станет
public void Notify()
{
EmailSender.Send(_emailNotification);
}
затем вы создадите конкретный класс, который реализует интерфейс IEmailSender
public class MyEmailSender: IEmailSender
{
public void Send(EmailNotification emailNotification)
{
using (var mail = new MailMessage())
{
//If no replyto was passed in the notification, then make it null.
mail.ReplyTo =
string.IsNullOrEmpty(_emailNotification.ReplyTo) ? null :
new MailAddress(_emailNotification.ReplyTo);
mail.To.Add(emailNotification.To);
mail.From = emailNotification.From;
mail.Subject = emailNotification.Subject;
mail.Body = emailNotification.Body;
mail.IsBodyHtml = true;
SmtpClient client = new SmtpClient();
client.Send(mail);
}
}
}