如何使用MSbuild通过电子邮件发送多个地址

Dea*_*ean 3 msbuild msbuildcommunitytasks

我的构建脚本中有一个目标,它将发送一封带有附件的电子邮件,详细说明模块的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>
Run Code Online (Sandbox Code Playgroud)

如果我更改收件人行以阅读$(收件人),列表中的第一个人将收到电子邮件,后续地址不会收到电子邮件.

然后我将To行更改为你在@(收件人)下面看到的内容,因为我可能会循环每个收件人.没有这样的运气!我收到错误消息

Emailing "{0}".
    <path> error : A recipient must be specified.
Run Code Online (Sandbox Code Playgroud)

我读入的文件只是格式为(emailAddress1),(emailAddress2)等的文本文件

Jul*_*rau 6

任务ReadLinesFromFile从文本文件中读取项目列表.但是文件每行必须有一个项目.

与格式(emailAdress1),emailAddress2)文本文件......你只会有一个包含一个项目(emailAdress1),emailAddress2)....你的email.txt应该是这样的:

emailAdress1
emailAdress2
...
Run Code Online (Sandbox Code Playgroud)

您从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>
Run Code Online (Sandbox Code Playgroud)

(邮件目标的日志中存在错误,即使有多个收件人,只有第一个收件人会在日志中显示.)