Const PR_SMTP_ADDRESS$ = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E" With GetObject(, "Outlook.Application") Set oMailItm = .ActiveInspector.CurrentItem With .CreateItem(0) myAddr = oMailItm.Session.CurrentUser.PropertyAccessor.GetProperty(PR_SMTP_ADDRESS) For Each r In oMailItm.Recipients sAddr = r.PropertyAccessor.GetProperty(PR_SMTP_ADDRESS) If myAddr <> sAddr Then s = s & """" & r.Name & """<" & sAddr & ">;" Next .To = "Коллега<name@domain.zone>;" .CC = s .Recipients.ResolveAll .Display AppActivate .GetInspector.Caption End With End With
[/vba]
[vba]
Код
Const PR_SMTP_ADDRESS$ = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E" With GetObject(, "Outlook.Application") Set oMailItm = .ActiveInspector.CurrentItem With .CreateItem(0) myAddr = oMailItm.Session.CurrentUser.PropertyAccessor.GetProperty(PR_SMTP_ADDRESS) For Each r In oMailItm.Recipients sAddr = r.PropertyAccessor.GetProperty(PR_SMTP_ADDRESS) If myAddr <> sAddr Then s = s & """" & r.Name & """<" & sAddr & ">;" Next .To = "Коллега<name@domain.zone>;" .CC = s .Recipients.ResolveAll .Display AppActivate .GetInspector.Caption End With End With
Ребят, мне нужен просто вывод адресатов, не надо что бы письмо создавалось и адресаты туда впихивались, это всё будет происходить в другом коде...Serge_007
Да, .Address в обоих случаях одинаковы, но я забираю PrimarySMTPAddress а AddressEntry тут действительно не нужен, изначально думал делать проверку на тип адреса и пользовать .GetExchangeUser.PrimarySmtpAddress если тип = "EX" Обновил код в посте
Да, .Address в обоих случаях одинаковы, но я забираю PrimarySMTPAddress а AddressEntry тут действительно не нужен, изначально думал делать проверку на тип адреса и пользовать .GetExchangeUser.PrimarySmtpAddress если тип = "EX" Обновил код в постеkrosav4ig
krosav4ig, нет смысла выбирать SNTP если EX то брать можно .name . если SMTP, то .address. далее клиент сам разберется. [vba]
Код
With GetObject(, "Outlook.Application") Set oMailItm = .ActiveInspector.CurrentItem With .CreateItem(0) myAddr = oMailItm.Session.CurrentUser.Address For Each R In oMailItm.Recipients
If myAddr <> R.Address Then _ s = s & """" & R.Name & IIf(R.Type = "EX", "", """<" & R.Address & ">") & ";" Next
[/vba]
krosav4ig, нет смысла выбирать SNTP если EX то брать можно .name . если SMTP, то .address. далее клиент сам разберется. [vba]
Код
With GetObject(, "Outlook.Application") Set oMailItm = .ActiveInspector.CurrentItem With .CreateItem(0) myAddr = oMailItm.Session.CurrentUser.Address For Each R In oMailItm.Recipients
If myAddr <> R.Address Then _ s = s & """" & R.Name & IIf(R.Type = "EX", "", """<" & R.Address & ">") & ";" Next
Сергей, так что Андрей, что я (назве что я не стал дописывать концовку) привели код. в s список через разделитель, за исключением адреса того, кто отправляет, но был в адресатах.
Сергей, так что Андрей, что я (назве что я не стал дописывать концовку) привели код. в s список через разделитель, за исключением адреса того, кто отправляет, но был в адресатах.bmv98rus
Замечательный Временно просто медведь , процентов на 20.
Я чуть упростил код Андрея, оба удаляют из списка кому было направлено сообщение того, кто готовит новое. Ну если тебе пришло и ты отправляешь новое то самому себе не нужно отправлять наверно. собственно попробуй убрать If myAddr <> R.Address Then _ и в s список полный. Но туда надо добавлять тех кто был в копии аналогично этому циклу и того кто отправитель исходного. Я об этом выше писал.
[vba]
Код
With GetObject(, "Outlook.Application") Set oMailItm = .ActiveInspector.CurrentItem myAddr = oMailItm.Session.CurrentUser.Address s = s & """" & oMailItm.Sender.Name & IIf(oMailItm.Sender.Type = "EX", "", _ """<" & oMailItm.Sender.Address & ">") & ";" For Each R In oMailItm.Recipients If myAddr <> R.Address Then _ s = s & """" & R.Name & IIf(R.Type = "EX", "", """<" & R.Address & ">") & ";" Next If oMailItm.CC <> "" Then s = s & oMailItm.CC & ";" End If End With
активного или выделенного? если второе то .ActiveInspector.CurrentItem заменить на .ActiveExplorer.Selection.Item(1)
Я чуть упростил код Андрея, оба удаляют из списка кому было направлено сообщение того, кто готовит новое. Ну если тебе пришло и ты отправляешь новое то самому себе не нужно отправлять наверно. собственно попробуй убрать If myAddr <> R.Address Then _ и в s список полный. Но туда надо добавлять тех кто был в копии аналогично этому циклу и того кто отправитель исходного. Я об этом выше писал.
[vba]
Код
With GetObject(, "Outlook.Application") Set oMailItm = .ActiveInspector.CurrentItem myAddr = oMailItm.Session.CurrentUser.Address s = s & """" & oMailItm.Sender.Name & IIf(oMailItm.Sender.Type = "EX", "", _ """<" & oMailItm.Sender.Address & ">") & ";" For Each R In oMailItm.Recipients If myAddr <> R.Address Then _ s = s & """" & R.Name & IIf(R.Type = "EX", "", """<" & R.Address & ">") & ";" Next If oMailItm.CC <> "" Then s = s & oMailItm.CC & ";" End If End With