Sachverhalt: Sachverhalt: A. Die A._ (Klägerin), eine GmbH deutschen Rechts, und die B._ AG (Beklagte) standen seit mehr als 11 Jahren in Geschäftsbeziehungen. Im Januar 2002 erhielt die Beklagte Kenntnis davon, dass ein Unternehmen in Italien ca. 70 Tonnen Triethylen Tetramin (TETA) zum Verkauf anbiete. Darüber informiert sie wahrscheinlich mehrere Kunden, sicher aber die Klägerin, der sie am 10. Januar 2002 Folgendes als "Offerte" bezeichnetes Telefaxschreiben sandte: "Wir möchten Ihnen folgendes Produkt anbieten: Triethylen Tetramin 99.5 % Menge: ca. 70 TO Verpackung: in 1000 liter Container .... " Es folgt der Hinweis auf den Produzenten und die Bitte um prompte Antwort. Es folgt der Hinweis auf den Produzenten und die Bitte um prompte Antwort. B. Im Nachgang zu diesem Schreiben kam es zu telefonischen Verhandlungen zwischen den Parteien. Am 22. Januar 2002 liess die Klägerin der Beklagten eine Einkaufsbestätigung zukommen, die unter anderem die Menge mit 60 t netto angab, und einen Preis festhielt mit dem Hinweis "gemeinsamer Verkauf". Die Bestätigung bezeichnete auch die Qualität und die Lieferdaten. Unter dem Titel "Bemerkungen" bat die Klägerin, ihr die Spezifikation und das aktuelle EG-Sicherheitsdatenblatt per Fax zu übermitteln. Die Sicherheitsdatenblätter stellte die Beklagte mit Fax vom 24. Januar 2002 zu. Im Begleitschreiben war vermerkt: "Die Spezifikationsanalyse werden wir Ihnen noch senden. Die Ware wird in 1000 lt. Container (IBC's) 1 x 1.20m geliefert. Total Menge ca. 62 TO" Am 28. Januar 2002 sandte die Beklagte der Klägerin die Analysedaten mit dem Hinweis, dass es sich um ein technisches Produkt handle, was bei der Preisgestaltung berücksichtigt worden sei. Das Begleitschreiben führt im Betreff die Auftragsnummer der Einkaufsbestätigung auf. Gleichentags verschickte die Beklagte mit separater Post die auf ihrem Briefpapier erstellte Lieferantenerklärung nach EG-Verordnung Nr. 1207/2001. Am 28. Januar 2002 sandte die Beklagte der Klägerin die Analysedaten mit dem Hinweis, dass es sich um ein technisches Produkt handle, was bei der Preisgestaltung berücksichtigt worden sei. Das Begleitschreiben führt im Betreff die Auftragsnummer der Einkaufsbestätigung auf. Gleichentags verschickte die Beklagte mit separater Post die auf ihrem Briefpapier erstellte Lieferantenerklärung nach EG-Verordnung Nr. 1207/2001. C. Bereits vor dem ersten Liefertermin wurde die Klägerin auf Verzögerungen aufmerksam gemacht, und spätestens am 6. Februar 2002 wurde ihr mitgeteilt, dass auch der neue Liefertermin nicht eingehalten werden könne. Die Beklagte konnte das TETA nicht erhältlich machen, obwohl sie einen Lastwagen nach Italien schickte, um Druck auf den Lieferanten auszuüben. Die Klägerin hatte ihrerseits einen Abnehmer für das TETA gefunden und mit diesem bereits einen Kaufvertrag geschlossen. Der Abnehmer hielt am Vertrag fest und tätigte die notwendigen Deckungskäufe. Die Preisdifferenz stellte er der Klägerin in Rechnung. Die Beklagte war nicht bereit, diesen Schaden zu ersetzten. Sie vertrat den Standpunkt, zwischen ihr und der Klägerin sei kein Vertrag zustande gekommen. C. Bereits vor dem ersten Liefertermin wurde die Klägerin auf Verzögerungen aufmerksam gemacht, und spätestens am 6. Februar 2002 wurde ihr mitgeteilt, dass auch der neue Liefertermin nicht eingehalten werden könne. Die Beklagte konnte das TETA nicht erhältlich machen, obwohl sie einen Lastwagen nach Italien schickte, um Druck auf den Lieferanten auszuüben. Die Klägerin hatte ihrerseits einen Abnehmer für das TETA gefunden und mit diesem bereits einen Kaufvertrag geschlossen. Der Abnehmer hielt am Vertrag fest und tätigte die notwendigen Deckungskäufe. Die Preisdifferenz stellte er der Klägerin in Rechnung. Die Beklagte war nicht bereit, diesen Schaden zu ersetzten. Sie vertrat den Standpunkt, zwischen ihr und der Klägerin sei kein Vertrag zustande gekommen. D. Die Klägerin gelangte am 27. Juni 2002 an das Zivilgericht des Seebezirks und verlangte von der Beklagten Fr. 25'913.55 nebst Zins. Das Zivilgericht und auf Berufung der Klägerin auch das Kantonsgericht Freiburg, I. Appellationshof, schützten die Position der Beklagten und wiesen die Klage, welche die Klägerin vor Kantonsgericht auf Fr. 23'582.-- nebst Zins reduziert hatte, ab, da zwischen den Parteien kein Vertrag bestehe. D. Die Klägerin gelangte am 27. Juni 2002 an das Zivilgericht des Seebezirks und verlangte von der Beklagten Fr. 25'913.55 nebst Zins. Das Zivilgericht und auf Berufung der Klägerin auch das Kantonsgericht Freiburg, I. Appellationshof, schützten die Position der Beklagten und wiesen die Klage, welche die Klägerin vor Kantonsgericht auf Fr. 23'582.-- nebst Zins reduziert hatte, ab, da zwischen den Parteien kein Vertrag bestehe. E. Gegen das Urteil des Kantonsgerichts hat die Klägerin Berufung ein gelegt. Sie beantragt dem Bundesgericht, den angefochtenen Entscheid aufzuheben und hält (mit Ausnahme einer Präzisierung bezüglich des Zinsenlaufes) an den vor Kantonsgericht gestellten Begehren fest. Die Beklagte schliesst auf kostenfällige Abweisung der Berufung.