3 Stimmen

Wie man mit MSbuild mehrere Adressen per E-Mail versendet

Ich habe ein Ziel in meinem Build-Skript, das eine E-Mail mit einem Anhang sendet, der svn-Änderungen für ein Modul enthält.

Dies funktioniert, wenn ich eine einzelne E-Mail-Adresse hart kodiere, aber ich möchte jetzt mehrere Entwickler per E-Mail kontaktieren und das Skript schlägt fehl. Nachfolgend ist der 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>

Wenn ich die "An"-Zeile in "$(Empfänger)" ändere, erhält die erste Person auf der Liste die E-Mail, nachfolgende Adressen erhalten die E-Mail nicht.

Dann änderte ich die An-Zeile in das, was Sie unten sehen @(Recipients), weil ich dachte, dass es dann eine Schleife um jeden Empfänger machen könnte. Kein Glück!!! Ich erhalte die Fehlermeldung

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

Die Datei, die ich einlese, ist einfach eine Textdatei im Format (emailAddress1),(emailAddress2), usw.

6voto

Julien Hoarau Punkte 47065

Die Aufgabe ReadLinesFromFile liest eine Liste von Einträgen aus einer Textdatei. Die Datei muss jedoch in jeder Zeile einen Eintrag enthalten.

Mit Ihrer Textdatei im Format (emailAdresse1),emailAdresse2)... haben Sie nur einen Eintrag mit (emailAdresse1),emailAdresse2)... . Ihre email.txt sollte folgendermaßen aussehen:

emailAdress1
emailAdress2
...

Sie erhalten Elemente aus ReadLinesFromFile Aufgabe und nicht Eigenschaften, so ändern Sie Ihre Aufgabe wie das:

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

(Es gibt einen Fehler im Protokoll des Mail-Ziels, auch bei mehreren Empfängern wird nur der erste im Protokoll angezeigt).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X