2009-01-29 6 views
3

J'ai une cible dans mon script de construction qui va envoyer un email avec une pièce jointe détaillant svn changements pour un module.Comment envoyer une adresse multiple avec MSbuild

Cela fonctionne si je code dur une seule adresse e-mail mais je veux maintenant envoyer un courriel à plusieurs développeurs et le script échoue. Ci-dessous le code

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

Si je change la ligne À lire $ (bénéficiaires) la première personne sur la liste recevront le courrier électronique, les adresses suivantes ne reçoit pas l'e-mail. J'ai ensuite changé la ligne de To à ce que vous voyez ci-dessous @ (destinataires), car je pense qu'il pourrait alors boucler autour de chaque destinataire. Pas de chance !!! Je reçois le message d'erreur

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

Le fichier que je lis dans est tout simplement un fichier texte dans le format (emailAddress1), (emailAddress2), etc

Répondre

6

La tâche ReadLinesFromFile lit une liste d'articles de un fichier texte. Mais le fichier doit avoir un élément sur chaque ligne. Avec votre fichier texte au format (emailAdresse1), emailAddress2) ... vous n'aurez qu'un article contenant (emailAdresse1), emailAddress2) .... Votre email.txt devrait ressembler à ceci:

emailAdress1 
emailAdress2 
... 

Vous obtenez des articles de la tâche ReadLinesFromFile et non des propriétés, donc modifier votre tâche comme ça:

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

(Il y a un bug dans le journal des la cible de messagerie, même avec plusieurs destinataires, seul le premier s'affichera dans le journal.)

Questions connexes