gpt4 book ai didi

c# - 发送前拦截电子邮件(SmtpClient)

转载 作者:行者123 更新时间:2023-11-30 20:57:12 26 4
gpt4 key购买 nike

我正在使用以下代码发送电子邮件:

using (var mailMessage = new MailMessage("from@example.com", "to@example.com"))
{
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="someone.else@example.com" />
</appSettings>

当“RedirectAllEmailsTo”的值不为空时,我希望我的应用程序中的所有电子邮件都发送到指定的电子邮件,而不是我的 MailMessage 中指定的接收者实例。

我还想将 MailMessage 的主题更改为表明谁应该收到电子邮件,如下所示:“我的主题(收件人:to@example.com)”。

是否可以拦截电子邮件,更改收件人和主题,还是我必须编写自己的类,而不是直接使用 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);
}
}

最佳答案

您是否应该为 SmtpClient 创建一个带有 BeforeSend 事件和/或所需主题操作的简单包装类,就像这样?

class SmtpClientWrapper
{
SmtpClient _client = new SmtpClient();

public event EventHandler BeforeSend;

private void PreprocessMesage(MailMessage message)
{
//do something with the message topic, as you desire
}

public void Send(MailMessage message)
{
BeforeSend(this, EventArgs.Empty);
PreprocessMessage(message);
_client.Send(message);
}
}

关于c# - 发送前拦截电子邮件(SmtpClient),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17001143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com