Изменить адрес ответа в почте Outlook - PullRequest
1 голос
/ 13 февраля 2012

У меня есть лист Excel с тремя столбцами Имя сотрудника, идентификатор электронной почты и DOB.

Я написал макрос, который сопоставляет даты рождения сотрудников с сегодняшней датой, которая отправит письмо Outlook сотруднику и Cc моего отдела.

Когда все сотрудники видят эту почту, они могут щелкнуть на ответ или ответить всем.

Я написал другой макрос Outlook, который заменяет поле «Адрес» его / ее идентификатором электронной почты на день рождения.

Второй макрос работает в моей системе на любой открытой электронной почте Outlook.

Поскольку у меня есть макрос Outlook, я могу его выполнить, но для выполнения одной и той же операции во всех системах сотрудников им нужен этот макрос Outlook. Как я могу запустить его в своих системах, не помещая этот макрос в свои системы вручную?

1 Ответ

6 голосов
/ 13 февраля 2012

В следующем коде предполагается, что ObjMail - это сообщение, которое вы создаете.

' Delete any existing reply recipients
Do While ObjMail.ReplyRecipients.Count > 0
  ObjMail.ReplyRecipients.Remove 1
Loop

' Add the new recipient
ObjMail.ReplyRecipients.Add "BirthdayPerson@isp.com"

' Send blind copy to other staff members
ObjMail.BCC = "Staff1.isp.com, Staff2.isp.com, Staff3.isp.com" 

В сообщении, отправленном сотрудникам, будет указано, что оно пришло от того, кто отправляет сообщения о днях рождения.Но если кто-нибудь ответит, получателем будет "BirthdayPerson@isp.com".

Я отправил слепые копии другим сотрудникам.Это не потому, что список сотрудников является секретным, а потому что:

  • Если у вас 500 сотрудников со средним числом 20 символов на адрес, использование CC добавит 10000 символов к каждому из 500 сообщений.
  • Запрещает сотрудникам использовать «Ответить всем» при добавлении наилучших пожеланий, сохраняя еще 500 * 500 сообщений.
  • Используйте ObjMail.CC, если вы предпочитаете заполнять сервер своей компании.

Я беспокоюсь о размере сообщения, потому что много лет назад я работал в английской Национальной службе здравоохранения, в которой тысячи сотрудников были разбросаны по всей стране.Кто-то в маленькой больнице пытался рекламировать свой велосипед для продажи в больнице, но сумел рекламировать его каждому сотруднику в стране.Я работал из дома с медленной коммутируемой линией;для загрузки этого сообщения потребовалось полчаса.

Новый раздел в ответ на запрос полного кода тестовой процедуры

Ниже я включаю полную использованную мной процедурупроверить мой ответ.Это было приспособлено от рутины, которую я написал для другого ответа.Он создает тело HTML, которое вы можете не захотеть, но показывает вам, как, если вы делаете.Я заменил реальные адреса электронной почты, которые я использовал для своих тестов, на фиктивные;в противном случае оно не меняется.

Sub ReplyToRecipientWithBlindCopies()

  ' Create a mail item with a simple message.
  ' Send the mail item to "BirthdayPerson@isp.com" and make them
  ' the recipient of any replies.
  ' Send blind copies to all other recipients.

  ' Author: Tony Dallimore, York, England

  Dim OlApp As Outlook.Application
  Dim ObjMail As Outlook.MailItem

  Dim MessageBody As String

  ' This creates a blue message on a grey background.  This is a
  ' demonstration of what is possible; not a recommendation!
  MessageBody = "<table width=""100%"" style=""Color:#0000FF;" & _
         " background-color:#F0F0F0;""><tr><td align= ""center"">" & _
         "Happy birthday from all your colleagues!</td></tr></table>"

  Set OlApp = Outlook.Application
  Set ObjMail = OlApp.CreateItem(olMailItem)
  With ObjMail
    .BodyFormat = olFormatHTML
    .Subject = "Happy birthday!"
    .HTMLBody = HeadAndBodyToHtmlDoc("", MessageBody)

    ' Remove any existing recipients
    Do While .Recipients.Count > 0
      .Recipients.Remove 1
    Loop
    ' Remove any existing reply recipients
    Do While .ReplyRecipients.Count > 0
      .ReplyRecipients.Remove 1
    Loop

    ' Add birthday person to Recipient and ReplyRecipient lists
    .Recipients.Add "BirthdayPerson@isp.com"
    .ReplyRecipients.Add "BirthdayPerson@isp.com"

    ' You will need to replace this with a loop
    ' to add all your staff members.
    .BCC = "Staff1@isp.com, Staff2@isp.com, Staff3@isp.com"

    ' Display the prepared messages ready for any final changes.
    ' The user must send it.
    .Display
  End With

End Sub
Function HeadAndBodyToHtmlDoc(Head As String, Body As String) As String

  ' Wrap Head and Body created by caller in a standard envelope.

  ' Author: Tony Dallimore, York, England

  HeadAndBodyToHtmlDoc = _
        "<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Frameset//EN""" & _
        " ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"">" & _
        vbCr & vbLf & "<html xmlns=""http://www.w3.org/1999/xhtml""" & _
        " xml:lang=""en"" lang=""en"">" & vbCr & vbLf & "<head><meta " & _
        "http-equiv=""Content-Type"" content=""text/html; " & _
        "charset=utf-8"" />" & vbCr & vbLf & Head & vbCr & vbLf & _
        "</head><body>" & vbCr & vbLf & Body & "</body></html>"

End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...