Как отправить по электронной почте несколько адресов с MSbuild - PullRequest
3 голосов
/ 29 января 2009

В моем скрипте сборки есть цель, которая отправит электронное письмо с вложением, в котором подробно описаны изменения svn для модуля.

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

 <Target Name="MailInformationUpdate" DependsOnTargets="ZipArtifact" Condition="!Exists('BUILD_IS_PERSONAL')">

    <ReadLinesFromFile File="$(BuildDir)\$(recipientListFileName)">
      <Output PropertyName="Recipients"  TaskParameter="Lines"/>
    </ReadLinesFromFile>
    <Mail SmtpServer="$(smptServer)"
           To="@(Recipients)"
           From="$(senderEmail)"
           Body="Attached is a list of the changes made since the last release. "
       Subject="This module has been updated. You may wish to update." Attachments="$(BuildDir)\Builds\$(svnChangeFileName)"   
          />    
  </Target>

Если я изменю строку «Кому» на «$ (Получатели)», первое лицо в списке получит электронное письмо, последующие адреса не получат его.

Затем я изменил строку «Кому» на то, что вы видите ниже @ (Получатели), так как я думаю, что это может затем зациклить каждого получателя. Нет такой удачи !!! Я получаю сообщение об ошибке

Emailing "{0}".
    <path> error : A recipient must be specified.

Файл, в котором я читаю, представляет собой просто текстовый файл в формате (emailAddress1), (emailAddress2) и т. Д.

1 Ответ

6 голосов
/ 29 января 2009

Задача ReadLinesFromFile читает список элементов из текстового файла. Но файл должен иметь один элемент в каждой строке.

С вашим текстовым файлом в формате (emailAdress1), emailAddress2) ... у вас будет только один элемент, содержащий (emailAdress1), emailAddress2) ... . Ваш email.txt должен быть таким:

emailAdress1
emailAdress2
...

Вы получаете элементы из задачи ReadLinesFromFile, а не свойства, поэтому измените свою задачу следующим образом:

<Target Name="MailInformationUpdate" DependsOnTargets="ZipArtifact" Condition="!Exists('BUILD_IS_PERSONAL')">

  <ReadLinesFromFile File="$(BuildDir)\$(recipientListFileName)">
    <Output ItemName="Recipients"  TaskParameter="Lines"/>
  </ReadLinesFromFile>
  <Mail SmtpServer="$(smptServer)"
       To="@(Recipients)"
       From="$(senderEmail)"
       Body="Attached is a list of the changes made since the last release. "
       Subject="This module has been updated. You may wish to update."
       Attachments="$(BuildDir)\Builds\$(svnChangeFileName)"   
      />    
</Target>

(В журнале адресата почты есть ошибка, даже если у нескольких получателей в журнале будет отображаться только первый).

...