3

我的构建脚本中有一个目标,它将发送一封电子邮件,其中包含详细说明模块的 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>

如果我将 To 行更改为 $(Recipients) 列表中的第一个人将收到电子邮件,后续地址不会收到电子邮件。

然后,我将“收件人”行更改为您在@(收件人)下方看到的内容,因为我认为它可能会循环每个收件人。没有这样的运气!!!我收到错误消息

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

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

4

1 回答 1

6

任务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>

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

于 2009-01-29T13:39:32.363 回答