使用outlook加载项将smtp发送的邮件保存在outlook发送文件夹中

使用outlook加载项将smtp发送的邮件保存在outlook发送文件夹中,outlook,vsto,sendmail,outlook-addin,outlook-2010,Outlook,Vsto,Sendmail,Outlook Addin,Outlook 2010,我想从outlook加载项发送smtp发送邮件,并将该邮件保存到outlook发送文件夹中 注意:将邮件项目保存在“发件人”文件夹中的地址必须是我指定的smtp发件人地址,而不是outlook登录用户名 public bool SendEMail() { MailMessage mailNew = new MailMessage(); var smtp = new SmtpClient("SmtpServer") { EnableSsl = false,

我想从outlook加载项发送smtp发送邮件,并将该邮件保存到outlook发送文件夹中

注意:将邮件项目保存在“发件人”文件夹中的地址必须是我指定的smtp发件人地址,而不是outlook登录用户名

public bool SendEMail()
{ 
   MailMessage mailNew = new MailMessage();

   var smtp = new SmtpClient("SmtpServer")
   {
        EnableSsl = false,
        DeliveryMethod = SmtpDeliveryMethod.Network
   };

    smtp.Port = 587;
    smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
    smtp.UseDefaultCredentials = false; 
    System.Net.NetworkCredential credentials = 
         new System.Net.NetworkCredential("UserName", "password");
    smtp.EnableSsl = false;
    smtp.Credentials = credentials;
    MailAddress mailFrom = new MailAddress("clark@gmail.com");
    mailNew.From = mailFrom;
    mailNew.To.Add("someone@gmail.com");
    mailNew.Subject = Subject;
    mailNew.IsBodyHtml = Html;
    mailNew.Body = Body;
    smtp.Send(mailNew);

    return true;
}

提前感谢

您需要在“已发送邮件”文件夹中创建已发送邮件,并使用MailItem.PropertyAccessor设置所有相关属性。请注意,PropertyAccessor不允许您设置某些与发件人相关的属性。在Outlook 2010或更高版本中,可以设置MAilItem.Sender属性

还要注意,在保存邮件后,无法更改发送标志,因此要使用OOM创建发送项目,需要创建一个post项目,然后将其MessageClass属性更改为IPM.note

还要注意,每次保存消息时,OOM都会重置ReceivedTime和SentOn属性

如果使用是一个选项,您可以执行以下操作(在我的脑海中):

Redemption.RDOSession session = new Redemption.RDOSession();
session.MAPIOBJECT = Application.Session.MAPIOBJECT;
Redemption.RDOMail message = session.GetDefaultFolder(rdoDefaultFolders.olFolderSentMail).Items.Add("IPM.Note");
message.Sent = true;
message.Subject = "test";
message.Body = "fake sent message";
message.Recipients.AddEx("The Recipient", "recipient@domain.com", "SMTP", olTo);
string senderEntryID = session.AddressBook.CreateOneOffEntryID("Some Name", "SMTP", "user@domain.com", false, true);
addressEntry = session.AddressBook.GetAddressEntryFromID(senderEntryID);
message.Sender = addressEntry;
message.SentOnBehalfOf = addressEntry;
message.Save();