Изменить адрес ответа в почте Outlook

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

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

Когда все сотрудники видят это письмо, они могут нажать «Ответить» или «ответить всем».

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

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

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


person Community    schedule 13.02.2012    source источник
comment
Если в начале строки есть пробелы, она форматируется как код. Я удалил пробелы, чтобы можно было прочитать ваш вопрос.   -  person Tony Dallimore    schedule 13.02.2012
comment
Что вы пробовали?   -  person Jean-François Corbett    schedule 13.02.2012


Ответы (1)


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

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

' Add the new recipient
ObjMail.ReplyRecipients.Add "[email protected]"

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

В сообщении, отправленном сотрудникам, будет сказано, что оно пришло от того, кто отправил сообщения о дне рождения. Но если кто-нибудь ответит, получателем будет «[email protected]».

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

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

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

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

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

Sub ReplyToRecipientWithBlindCopies()

  ' Create a mail item with a simple message.
  ' Send the mail item to "[email protected]" 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 "[email protected]"
    .ReplyRecipients.Add "[email protected]"

    ' You will need to replace this with a loop
    ' to add all your staff members.
    .BCC = "[email protected], [email protected], [email protected]"

    ' 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
person Tony Dallimore    schedule 13.02.2012
comment
Дополнительный раздел в моем ответе должен содержать дополнительную информацию, которую вы ищете. Если мой ответ соответствует вашим требованиям, я был бы признателен, если бы вы его приняли. - person Tony Dallimore; 14.02.2012
comment
Нет, я спрашиваю, эти электронные письма на день рождения будут отправлены с неизвестного адреса электронной почты всем сотрудникам. Код, который вы написали, работает хорошо, но этот макрос работает с моей точки зрения. Мне нужно, чтобы это работало во взглядах всех сотрудников, когда они нажимают кнопку «Ответить на электронную почту дня рождения» или «Ответить всем». Для этого мне нужно отправить этот код в макросе всем сотрудникам только с этой автоматически сгенерированной почтой. Как я могу отправить этот макрос с этим электронным письмом ....... - person ; 14.02.2012
comment
Я не понимаю. У вас есть книга Excel, содержащая имена, адреса электронной почты и дни рождения сотрудников. У вас есть макрос, который будет отправлять сотрудникам электронное письмо в день их рождения со словами «С днём рождения»! Я предоставил информацию, которая позволит вам внести небольшие улучшения в этот макрос, поэтому теперь другие сотрудники могут нажать «Ответить» и отправить сообщение с поздравлением от меня! Ваш макрос находится в книге Excel и полагается на информацию в этой книге. Зачем вам отправлять этот макрос кому-либо по электронной почте? Вам нужно будет отправить книгу по электронной почте. - person Tony Dallimore; 14.02.2012
comment
Как вы сказали, все правильно, но макрос, который у меня был в моей книге Excel, будет отправлять электронные письма всем сотрудникам, в которых говорится, что у этих сотрудников были дни рождения в этот день. Но теперь у меня был другой макрос, который изменяет адрес ответа, когда любой сотрудник нажимает кнопку ответа в полученном им электронном письме. Я спрашиваю, как я могу выполнить этот второй макрос в системах сотрудников. - person ; 14.02.2012
comment
Другой вопрос, как раздать макрос. Одна из возможностей - распространить код и попросить сотрудников установить его самостоятельно. Другая возможность - попросить ваш ИТ-отдел распространить его при следующей перекомпоновке, если они так организуют ваше программное обеспечение. Я уверен, что есть и другие возможности, но это не моя область знаний, и, возможно, это не лучшая часть Stack Exchange. - person Tony Dallimore; 14.02.2012
comment
Однако является ли это частью той же системы пожеланий ко дню рождения? Код, который я вам дал, устанавливает адрес для ответа на адрес электронной почты именинника / девушки. Я протестировал этот код, отправив электронные письма на четыре адреса электронной почты, которыми мы с женой поделились. В письмах будет указано, что они были отправлены вами, но если вы нажмете «Ответить», электронное письмо будет адресовано имениннику. Настройте свою систему на отправку электронных писем двум или трем людям и попробуйте. - person Tony Dallimore; 14.02.2012
comment
Да, это часть твоего пожелания на день рождения. Вы сказали, что тестировали с четырьмя адресами электронной почты, вот что я также говорю, я тестировал его работу нормально. Проблема в том, что вы тестируете вещи в одной и той же системе, пытаетесь протестировать, как это, отправлять электронные письма на четыре адреса электронной почты, открывать их перспективы в разных системах и тестировать, не помещая никаких макросов в их ...... - person ; 15.02.2012
comment
Привет, у меня есть еще одно сомнение, как он работает для ответа на ВСЕ, у меня есть два адреса, когда я нажимаю кнопку ответа на все, но я могу удалить только один адрес, и он заменяет 2 раза идентификатор почты, который мы дали, но на самом деле адрес электронной почты, который мне нужен, он уже есть - person ; 15.02.2012
comment
Мое подключение к Интернету обновляется, и я не смогу ответить до понедельника. Зачем использовать функцию "Ответить всем"? Я попробовал ответить на двух разных системах, и был показан только адрес именинника. Я только что попробовал ответить на все и получил только адрес именинника. Откуда берутся дополнительные адреса? Вы размещаете дополнительные адреса в Получателе или CC? - person Tony Dallimore; 15.02.2012
comment
Да, у меня есть адрес в поле CC, также вы можете разместить здесь полный код - person ; 15.02.2012
comment
Тони, ты частично неправильно понял мой вопрос .......... код, который ты вставил, создает новое письмо с Outlook, которое идеально ... это не мой вопрос, я могу создать все эти вещи ... ... я еще раз объясню свой вопрос еще раз ...... проверьте один раз мой первый пост - person ; 16.02.2012
comment
Я не понимаю, какой макрос нужно запускать во всех отдельных системах. Однако, как я сказал два дня назад: как распространять макрос - это другой вопрос. - person Tony Dallimore; 16.02.2012