Мне бы хотелось, чтобы, когда пользователь отправлял свою почту, ее копия создавалась и отправлялась другому лицу для архивирования.Пользователь использует ключевое слово, чтобы указать, нужно ли архивировать почту.(Мне нужно добавить некоторые данные во втором письме, которые не должны появляться в первом).
Поэтому я разработал в C # надстройку, где я перехватываю событие click «sent», чтобы скопировать письмо и отправить его.,Только невозможно отправить второе электронное письмо в этом случае.Поэтому я подумал о добавлении обратного вызова к моему событию, чтобы после отправки первого электронного письма отправлялось второе, но я не могу реализовать обратный вызов для своего кода (я не знаю, как это сделать в событииили даже если это возможно)
Outlook.MailItem mailCopy; //Copy of my first mail
bool sndCopy = false;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
this.Application.ItemSend += new Microsoft.Office.Interop.Outlook.ApplicationEvents_11_ItemSendEventHandler(Application_ItemSend); //event click send
}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
}
private void Application_ItemSend(object Item, ref bool Cancel)
{
Outlook.Application oApp;
Outlook._NameSpace oNS;
Outlook.MAPIFolder oFolder;
oApp = new Outlook.Application();
oNS = (Outlook._NameSpace)oApp.GetNamespace("MAPI");
Outlook.MailItem mail1 = (Outlook.MailItem)Item;
this.mailCopy = (Outlook.MailItem)Item;
Outlook.MailItem mail = (Outlook.MailItem)Item;
foreach(Outlook.Recipient rcp in mail.Recipients){
if(rcp.Address == "Robots"){
this.sndCopy = true;
break;
}
}
}
необходимо отправить два электронных письма, первое, которое может быть отправлено кому-либо, второе, которое необходимо отправить роботу для архивирования по адресу электронной почты (робот@ google.fr, например) с другими дополнительными данными, которые не могут отображаться в 1-м
Редактировать решение: я изменил свой код, добавив событие при создании файла, когда я сохраняю свое сообщение в каталоге
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
FileSystemWatcher fileSystemWatcher = new FileSystemWatcher();
fileSystemWatcher.Path = path;
this.Application.ItemSend += new Microsoft.Office.Interop.Outlook.ApplicationEvents_11_ItemSendEventHandler(Application_ItemSend); //event click send
fileSystemWatcher.Created += FileSystemWatcher_Created;
fileSystemWatcher.EnableRaisingEvents = true;
}
private void Application_ItemSend(object Item, ref bool Cancel)
{
Outlook.Application oApp;
Outlook._NameSpace oNS;
oApp = new Outlook.Application();
oNS = (Outlook._NameSpace)oApp.GetNamespace("MAPI");
Outlook.MailItem mail = (Outlook.MailItem)Item;
mail.SaveAs(path + "\\files.msg", Microsoft.Office.Interop.Outlook.OlSaveAsType.olMSG);
}
private void FileSystemWatcher_Created(object sender, FileSystemEventArgs e)
{
Outlook.Application oApp = new Outlook.Application();
Outlook.MailItem msg = (Outlook.MailItem)oApp.CreateItemFromTemplate(path + "\\files.msg", Type.Missing);
msg.Send();
File.Delete(path + "\\files.msg");
}