为什么smtpclient发送的电子邮件不会出现在已发送的项目中

时间:2014-06-17 07:00:16

标签: c# .net email exchange-server smtpclient

我已经实现了一个通过.Net SmtpClient发送电子邮件的服务器。 邮件发送代码如下:

private static MailMessage SendMail(string to, string subject, string body)
{
 MailMessage mailToSend = new MailMessage();
 mailToSend.Body = body;
 mailToSend.Subject = subject;
 mailToSend.IsBodyHtml = true;
 mailToSend.To.Add(to);
 try
 {
  mailClient.Send(mailToSend);
 }
 catch (Exception ex)
 {
  //Log data...
 }
 mailToSend.Dispose();
}

并且在Web.config中我放了邮件的凭据,就像那样:

<configuration>
  <system.net>
    <mailSettings>
      <smtp from="autoemail@mailserver.org">
        <network host="smtp.mailserver.org" password="pswdpswd" port="25" userName="autoemail" clientDomain="the-domain" enableSsl="true" />
      </smtp>
    </mailSettings>
  </system.net>
</configuration>

电子邮件成功发送,一切正常但是当我登录交换服务器中的电子邮件用户时(例如通过Outlook Web-App)我无法看到通过SmtpClient发送的邮件(通过代码)已发送的项目文件夹。

如何在此文件夹中保留已发送邮件的副本? 谢谢!

1 个答案:

答案 0 :(得分:14)

它们不会记录在已发送的项目中,因为它仅使用SMTP级别的用户帐户发送,它并不真正使用邮箱发送电子邮件。

您唯一的选择是不使用SmtpClient并使用Exchange API发送邮件。

从他们的样本中引用:

ExchangeService service = new ExchangeService();  
service.AutodiscoverUrl("youremailaddress@yourdomain.com");  

EmailMessage message = new EmailMessage(service);  
message.Subject = subjectTextbox.Text;  
message.Body = bodyTextbox.Text;  
message.ToRecipients.Add(recipientTextbox.Text);  
message.Save();  

message.SendAndSaveCopy();