【问题标题】:How to allow Out of Office Email auto reply from C#如何允许来自 C# 的外出电子邮件自动回复
【发布时间】:2016-07-13 19:52:43
【问题描述】:

我有一个 C# 方法来发送电子邮件,我希望自动将不在办公室的电子邮件回复给发件人或回复给用户。这是我的代码,它不起作用。

我看到如果从 Outlook 发送,我会收到不在办公室的电子邮件回复,但是下面的代码有什么问题?

    public void SendEmail()
    {
        SmtpClient client = new SmtpClient("my host server", 25);
        var sender = "sender";
        var to = "receiver";
        var replyTo = sender;

        try
        {
            MailMessage msg = new MailMessage();

            msg.From = new MailAddress(sender);
            msg.Subject = "Test auto reply from C#";
            msg.To.Add(new MailAddress(to));

            if (!string.IsNullOrWhiteSpace(replyTo))
            {
                msg.ReplyToList.Add(replyTo);
            }

            msg.Body = "This is from C# email server to test auto reply.";

            client.Send(msg);

            msg.Dispose();
        }
        catch (Exception ex)
        {
        }
        finally
        {
            client.Dispose();
        }
    }
}

提前致谢。

【问题讨论】:

  • 谁知道?您正在捕获并抑制所有可能的异常。没有充分的理由。 你遇到异常了吗?如果是这样,它可能已经告诉你出了什么问题。
  • @hvd 它没有引发任何异常,成功发送电子邮件,但如果收件人有任何外出自动回复,它不会进入发件人电子邮件。
  • @UtpalKumarDas 你是说它有效,但如果接收者有一个“不在办公室”的回复,它就不起作用?不要真正了解这与您的代码有何关系,或者为此发送电子邮件。也许检查接收者的收件箱设置。尝试使用相同的主机服务器从现有界面(Outlook、Gmail 等)发送电子邮件,看看电子邮件会发生什么。
  • 问题已经解决,实际上我们使用了from(msg.From)地址noreply@domain,所以它没有发送到我们的目标发件人。现在我们使用 noreply@domain 作为 msg.Sender 和使用 msg.From 的目标发件人。

标签: c# email


【解决方案1】:

我们已经通过下面的代码解决了这个问题:

    public void SendEmail()
    {
        SmtpClient client = new SmtpClient("my host server", 25);
        var sender = "noreply@domain.com";
        var from = "actual sender";
        var to = "receiver";
        var replyTo = sender;

        try
        {
            MailMessage msg = new MailMessage();

            msg.From = new MailAddress(from);
            msg.Sender = new MailAddress(sender);

            msg.Subject = "Test auto reply from C#";
            msg.To.Add(new MailAddress(to));

            if (!string.IsNullOrWhiteSpace(replyTo))
            {
                msg.ReplyToList.Add(replyTo);
            }

            msg.Body = "This is from C# email server to test auto reply.";

            client.Send(msg);

            msg.Dispose();
        }
        catch (Exception ex)
        {
        }
        finally
        {
            client.Dispose();
        }
    }

电子邮件地址“noreply@domain.com”已被用作公司地址,没有任何回复,考虑没有回复选项。

【讨论】:

    猜你喜欢
    • 2010-11-04
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多