Системный администратор не может отправить почту olB CC - PullRequest
0 голосов
/ 18 июня 2020

У меня назначена индивидуальная встреча на перспективу, из которой я хочу автоматически получать CC письмо по электронной почте после отправки приглашения на встречу.

Function Item_Send()
    Set oMsg = Application.ActiveInspector.CurrentItem 
    With oMsg 
        Set objRecip = Item.Recipients.Add("MyEmail@mail.com")
        objRecip.Type = olBCC
        objRecip.Resolve 
    End With
    Set oMsg = Nothing 
End Function

Кажется, все работает нормально - моя электронная почта прикреплена как B CC, и назначение успешно отправляется.

Однако в моем почтовом ящике я получаю письмо, что сообщение B CC не может быть достигнуто.

Ваше сообщение не было получено некоторыми или всеми предполагаемыми получателями.

Тема:
Отправлено: 18.06.2020 14: 49

следующие получатели недоступны:

MyEmail 18.06.2020 14:49 'MyEmail@mail.com' 18.06.2020 14:49 Это сообщение не может быть отправлено. Попробуйте отправить сообщение позже или обратитесь к своему сетевому администратору.


Диагностика c информация для администраторов:


Ошибка [0x80070057-0x00000000-0x00000000]. Ошибка отправки сообщения: идентификатор сообщения (23), перечисление сбоев (7), HResult (0x80070057), E C (- 2147024809).

Почему возникает эта ошибка? Моя почта не неправильная.

1 Ответ

0 голосов
/ 18 июня 2020

Непонятно, откуда взялся объект Item.

Прежде всего, свойство Type для MeetingItem получателей может быть одной из следующих констант OlMeetingRecipientType: olOptional, olOrganizer, olRequired или olResource. Если вы хотите отправить B CC, я бы рекомендовал создать новый почтовый элемент и скопировать его свойства в новый элемент.


В любом случае, метод Resolve возвращает логическое значение, которое является истинным если объект разрешился; в противном случае - ложь. Например, вот как вам нужно это проверить:

Sub AssignTask() 
 Dim myItem As Outlook.TaskItem
 Dim myDelegate As Outlook.Recipient

 Set MyItem = Application.CreateItem(olTaskItem) 

 MyItem.Assign 

 Set myDelegate = MyItem.Recipients.Add("Eugene Astafiev") 

 myDelegate.Resolve 

 If myDelegate.Resolved Then 

   myItem.Subject = "Prepare Agenda For Meeting" 

   myItem.DueDate = Now + 30 

   myItem.Display 

   myItem.Send 

 End If 

End Sub

Имейте в виду, что обработчик событий ItemSend принимает два параметра. Например, следующий код в VB. NET работает как чудо на моей машине:

Imports System.Runtime.InteropServices
' ...
Private Sub OnItemSend(Item As System.Object, ByRef Cancel As Boolean) _
                       Handles Application.ItemSend
    Dim recipient As Outlook.Recipient = Nothing
    Dim recipients As Outlook.Recipients = Nothing    
    Dim mail As Outlook.MailItem = TryCast(Item, Outlook.MailItem)
    If Not IsNothing(mail) Then
        Dim addToSubject As String = " !IMPORTANT"
        Dim addToBody As String = "Sent from my Outlook 2010"
        If Not mail.Subject.Contains(addToSubject) Then
            mail.Subject += addToSubject
        End If
        If Not mail.Body.EndsWith(addToBody) Then
            mail.Body += addToBody
        End If
        recipients = mail.Recipients
        recipient = recipients.Add("Eugene Astafiev")
        recipient.Type = Outlook.OlMailRecipientType.olBCC
        recipient.Resolve()
        If Not IsNothing(recipient) Then Marshal.ReleaseComObject(recipient)
        If Not IsNothing(recipients) Then Marshal.ReleaseComObject(recipients)
    End If
End Sub

Это событие запускается сразу после того, как пользователь нажимает кнопку «Отправить» в Outlook (до закрытия окна инспектора) или когда вызывается метод отправки элементов Outlook. Событие ItemSend предоставляет программисту два параметра:

  • Объект Item - элемент Outlook, который будет отправлен. Он может быть представлен классами AppointmentItem, MailItem, MeetingItem, MobileItem, SharingItem, TaskItem.
  • Параметр Cancel - позволяет отменить отправку в Outlook . Значение по умолчанию неверно. Если вы установите для параметра Cancel значение true в обработчике событий, процесс отправки будет отменен и пользователю будет показано окно инспектора.

Подробнее об этом читайте в How To: Change сообщение электронной почты Outlook перед отправкой с использованием статьи C# или VB. NET.

...