Я использую следующий код для отправки по электронной почте:Перехват электронной почты перед отправкой (SmtpClient)
using (var mailMessage = new MailMessage("[email protected]", "[email protected]"))
{
mailMessage.Subject = "My topic";
mailMessage.IsBodyHtml = true;
mailMessage.Body = "My content";
using (var smtpClient = new SmtpClient())
{
smtpClient.Send(mailMessage);
}
}
Я хотел бы, чтобы иметь возможность перехватывать электронную почту, и изменить тему а также получателя, когда я использую этот код в своей тестовой среде. Я хочу, чтобы иметь возможность настроить что-то вроде этого в моем файле web.config:
<appSettings>
[...]
<add key="RedirectAllEmailsTo" value="[email protected]" />
</appSettings>
Когда значение «RedirectAllEmailsTo» разве пустой, я хотел бы все электронные письма в моем приложении, для отправки указанный адрес электронной почты вместо назначенного получателя в моем примере MailMessage.
Я также хотел бы изменить тему MailMessage, чтобы указать, кто должен получать электронное письмо примерно так: «Моя тема (приемник: [email protected])».
Возможно ли перехватывать электронные письма и изменять ресивер, а также тему, или мне нужно написать собственный класс, вместо непосредственного использования SmtpClient?
Это мой код. Надеюсь, есть лучший способ справиться с этим.
public static void SendEmail(MailMessage mailMessage)
{
var redirectAllEmailsTo = ConfigurationManager.AppSettings["RedirectAllEmailsTo"];
if (string.IsNullOrEmpty(redirectAllEmailsTo) == false)
{
mailMessage.Subject += string.Format(" (to: {0}, cc: {1}, bcc: {2})",
string.Join(", ", mailMessage.To.Select(m => m.Address)),
string.Join(", ", mailMessage.CC.Select(m => m.Address)),
string.Join(", ", mailMessage.Bcc.Select(m => m.Address)));
mailMessage.To.Clear();
mailMessage.CC.Clear();
mailMessage.Bcc.Clear();
mailMessage.To.Add(redirectAllEmailsTo);
}
using (var smtpClient = new SmtpClient())
{
smtpClient.Send(mailMessage);
}
}
Почему бы не создать конфигурационный файл dev, который использует dev smtp-сервер? – Oded
@Oded: Вы могли бы также ответить на этот вопрос :) – leppie
@leppie - достаточно справедливо. Готово. – Oded