将已发送的MailMessage发送到"已发送文件夹"

Rob*_*eid 11 c# exchange-server smtpclient mailmessage

我正在使用Exchange Server发送带有SmtpClient(正在成功发送)的MailMessages,但希望我发送的电子邮件转到我发送的电子邮件地址的已发送文件夹(未发生).

using (var mailMessage = new MailMessage("fromaddress@blah.com", "toaddress@blah.com", "subject", "body"))
{
    var smtpClient = new SmtpClient("SmtpHost")
    {
        EnableSsl = false,
        DeliveryMethod = SmtpDeliveryMethod.Network
    };

    // Apply credentials
    smtpClient.Credentials = new NetworkCredential("smtpUsername", "smtpPassword");

    // Send
    smtpClient.Send(mailMessage);
}
Run Code Online (Sandbox Code Playgroud)

是否有我缺少的配置,以确保我发送的所有来自"fromaddress@blah.com"的电子邮件都到达他们的已发送文件夹?

Roc*_*lan 17

我已经这样做了,所以为了完整性,这里是如何正确地做到这一点.使用托管交换Web服务(http://msdn.microsoft.com/en-us/library/dd633709%28EXCHG.80%29.aspx):

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);

// In case you have a dodgy SSL certificate:
System.Net.ServicePointManager.ServerCertificateValidationCallback =
            delegate(Object obj, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
            {
                return true;
            };

service.Credentials = new WebCredentials("username", "password", "MYDOMAIN");
service.Url = new Uri("https://exchangebox/EWS/Exchange.asmx");

EmailMessage em = new EmailMessage(service);
em.Subject = "example email";
em.Body = new MessageBody("hello world");
em.Sender = new Microsoft.Exchange.WebServices.Data.EmailAddress("john.smith@example.com");
em.ToRecipients.Add(new Microsoft.Exchange.WebServices.Data.EmailAddress("bob.smith@example.com"));

// Send the email and put it into the SentItems:
em.SendAndSaveCopy(WellKnownFolderName.SentItems);
Run Code Online (Sandbox Code Playgroud)

  • 这应该是最佳答案 (2认同)

RSo*_*erg 12

我猜你的要求主要是围绕让用户看到已发送的电子邮件.发送的项目文件夹将是允许这种情况发生的一种方法.在过去,我通过添加一个BCC Address直接将电子邮件直接发送到分发列表,用户或共享邮箱来解决此问题,该分发列表,用户或共享邮箱允许用户查看已发送的内容.

尝试使用某种outlook规则将项目移动到标记为读取的已发送项目文件夹...

using (var mailMessage = new MailMessage(
        "fromaddress@blah.com", 
        "toaddress@blah.com", 
        "",
        "fromaddress@blah.com",
        "subject", 
        "body"))
{
    var smtpClient = new SmtpClient("SmtpHost")
    {
        EnableSsl = false,
        DeliveryMethod = SmtpDeliveryMethod.Network
    };

    // Apply credentials
    smtpClient.Credentials = new NetworkCredential("smtpUsername", "smtpPassword");

    // Send
    smtpClient.Send(mailMessage);
}
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的答复!这绝对是一个可能的考虑因素,因为它确实只是确认我需要... (2认同)