確定使用由Dmitry Streblechenko給我的信息和其他一些信息,我只是在這裏查找是我的解決方案。
在ItemSend事件中,我首先確保發送的電子郵件已移至默認的已發送郵件文件夾。我正在測試使用Gmail的Outlook,所以通常這些會去別處。 sentMailItems是作爲一個類字段,顯然它會得到垃圾回收,如果它只是在啓動函數內部聲明的(對我來說MVC程序員:)是很奇怪的)。
當我回到辦公室時,我會在交易所進行測試,希望一切順利。
public partial class ThisAddIn
{
public Outlook.Items sentMailItems;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
Application.ItemSend += new Microsoft.Office.Interop.Outlook.ApplicationEvents_11_ItemSendEventHandler(ItemSend);
sentMailItems = Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail).Items;
sentMailItems.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(Items_ItemAdd);
}
void Items_ItemAdd(object item)
{
MessageBox.Show(((Outlook.MailItem)item).Subject);
var msg = Item as Outlook.MailItem;
string from = msg.SenderEmailAddress;
string allRecip = "";
foreach (Outlook.Recipient recip in msg.Recipients)
{
allRecip += "," + recip.Address;
}
}
private void ItemSend(object Item, ref bool Cancel)
{
if (!(Item is Outlook.MailItem))
return;
var msg = Item as Outlook.MailItem;
msg.DeleteAfterSubmit = false; // force storage to sent items folder (ignore user options)
Outlook.Folder sentFolder = this.Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail) as Outlook.Folder;
if (sentFolder != null)
msg.SaveSentMessageFolder = sentFolder; // override the default sent items location
msg.Save();
}
//Other auto gen code here....
}
謝謝,它適用於收件人,但不幸的是,似乎電子郵件並不總是移動到Outlook中的發送郵件文件夾,所以ItemAdd事件對我沒有任何幫助。當我回來工作時,我將不得不再次檢查這一點,因爲我認爲使用交換服務器時存在差異。 –