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

13

我已经实现了一个通过 .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(通过代码)发送的邮件。

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


2
如果你只想要一份电子邮件的副本,你可以将邮件密送给自己。 - Max
1个回答

15

在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();

1
谢谢!哇,速度真快 :) - yossico
2
注意:需要将配置文件更改为“.NET Framework 4”。“...Client Profile”不足以满足要求。然后,您需要添加对“Microsoft.Exchange.WebServices”的引用,并添加“using Microsoft.Exchange.WebServices”。 - Drew Chapin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接