Barcode mit PHP Mail

Hallo,

ich habe ein PHP Mailformular dort gibt der User in ein Formularfeld eine Reihe Zahlen ein, diese möchte ich gerne in der Mail die nach absenden bei mir ankommt als Barcode haben. Zum Drucken und Scannen.

Geht das als HTML -Mail?
im Header habe ich bisher
$header .= “Content-type: text/plain; charset=iso-8859-1\r\n”;

Ist so was möglich?
Danke Gucks Du

Kennst du denn das Kodierungsverfahren, wie man also aus den
Zeichen die Balken macht? Es gibt ja offenbar verschiedene
Methoden:
de.wikipedia.org/wiki/Strichcode

Offenbar können die Balken unterschiedlich breit sein, deshalb
fällt eine simple Kennzeichnung schon mal weg. Mit HTML
allein sollte das also schwierig werden, man könnte aber mal
gucken, ob es Glyphen gibt, die sich für sowas eignen könnten.

Etwas eleganter könnte es gehen, wenn man CSS dazunimmt,
dort kann man ja Höhe und Breite von Objekten angeben, die
zudem auch immer Rechtecke sind. In HTML bastelt man dann
leere span-Elemente, wohl am besten mit dem unkodierten
Zeichen im title-Attribute und gibt denen dann die erforderliche
unterschiedliche Breite per CSS.

Generell ist es natürlich besser, das mit Graphik statt HTML zu
erledigen, also etwa SVG ist ähnlich einfach zu erstellen wie
HTML und in XHTML kann man es sogar direkt integrieren.
Mittels PHP und der GD-Bibliothek kann man das dann auch als
Pixelgraphik realisieren, wenn das erwünscht ist.

Sofern man die Kodierung genau kennt, sollte die Umsetzung in
allen genannten Fällen recht einfach sein und erfordert nur ein
simples PHP-Skript.

Ansonsten ist text/plain allerdings auch kein HTML sondern eben
Klartext, da paßt schon dein header nicht.

Hallo Hoffmann,

zuerst, $header .= “Content-type: text/plain; charset=iso-8859-1\r\n”;
bisher habe ich ja auch keine html mail.

Es scheint doch nicht so einfach zu sein.
Ich verwende Schrift “Code 39” diese ist lokal auf meinem Rechner installiert.

Für analoge Formulare (die gedruckt und mit der Post versendet werden) nutze ich die Windows Schrift Code 39.
Unsere Mitglieder füllen dann das Formular aus, schicken es zurück und ich scanne es ein.

Ich habe gedacht, das der Teil des Textes der in Barcode dargestellt werden soll, beim öffnen der Mail auf meinem Rechner in Barcode umgewandelt wird. Es handelt sich um eine Ziffernfolge.
Für den User der das Formular ausfüllt ist dies nicht relevant.

Gruß
Guckst Du

Wenn du eine Schriftart hast, welche die Kodierung representiert,
so müßtest du die wohl einfach auf den zu kodierenden Text
anwenden.
Kannst du auch mit CSS machen, mit HTML allein eher nicht,
also dort das CSS dann entweder im style-Element oder im
style-Attribut notieren (letzteres ist wohl bei einer email an dich
selbst unbedenklich).
Wenn die bei dir installierte Schriftart ‘Code 39’ heißt, so
könntest du etwa in einer HTML-Ausgabe den betreffenden
Inhalt so formulieren:

<div style="font-family: 'Code 39', sans-serif">
01234567890ABC... (der zu kodierende Text)
</div>

Wenn das HTML- und CSS-fähige Darstellungsprogramm die
Schriftart ‘Code 39’ installiert hat, sollte das auch damit
dargestellt werden, sonst eben mit der gewöhnlichen
serifenlosen Schriftart.

Achso - vermutlich mußt du noch das passende Start- und
Stoppzeichen hinzufügen, damit ein Scanner das auch lesen kann,
laut wikipedia ist das bei ‘Code 39’ wohl *

oK Ich teste das, am WE.

Vielen Dank.

PS: die * werden automatisch gesetzt , wenn Du eine Zeichenkette mit Code 39 formatierst.

In dem Falle wird ja nur zur Darstellung diese Schriftart verwendet,
es wird nichts formatiert, insofern kann es durchaus sein, daß
du die Sterne selber setzen mußt. Das Ergebnis sieht also nur so
aus wie eine Strichkodierung. Solange es für den scanner auch so
aussieht, ist es ja ausreichend ;o)
Wird man ja durch probieren schnell herausfinden, ob oder ob
nicht Stern.
Beim Namen sollte man jedenfalls sehr genau nachgucken und
korrekt hinschreiben, wie die Schriftart heißt, sonst erkennt das
Darstellungsprogramme das nicht und stellt alles mit der
normalen Schriftart dar.

Vermutlich ist es sinnvoller die Barcodes mit PHP in Pixelgrafik zu erstellen. Somit müsste die Schriftart auf dem User-PC nicht installiert sein

das dürfte eigentlich garnicht so schwer zu realisieren sein in php, wenn du das font-file besitzt.
du erstellst einfach ein bild mit der GD-Lib (imagecreate) und schreibst den Text drauf unter verwendung dieses font-files…

du müsstest dann deine mails als HTML versenden und die Grafik per img-tag einbinden oder kann man die auch so in die mail packen ? nee oder ?

grüße

aber selbstverständlich kann man  :slight_smile: (oder hast du noch nie eine Datei ohne Anhang gesendet?)

aber selbstverständlich kann man :slight_smile: (oder hast du noch nie eine Datei ohne Anhang gesendet?)

nicht generiert aus php heraus^^

Aber selbstvernatürlich :slight_smile:

könntest du vllt ein sample schicken :wink: wäre nett!

<?php

$filename = "test.jpg";
$filecont = chunk_split(base64_encode(file_get_contents("test.jpg"));

$text = "<img src='test.jpg'>"

$from_name = "michi7x7";
$from_name = "michi@7x7";

$trenner = md5(uniqid());

$header = <<<EOF
From: $from_name <$from_mail>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=$trenner 

This is a multi-part message in MIME format
--$trenner
Content-Type: text/html
Content-Transfer-Encoding: 8bit

$text


--$trenner
Content-Type: application/octet-stream; name=$filename
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=$filename
			
$filecont
--$trenner--
EOF;

mail("hi@all", "Test", "", $header);

ungetestet ^^

Steht doch oben, der Empfänger der email ist der Autor des
Skriptes, welches die email versendet, der sollte doch schon
selber wissen, was auf seinem Rechner installiert ist, insofern
braucht man da nicht mit der GD eine Pixelgraphik zu erstellen.
Dazu wiederum bräuchte man ja auch entweder die passende
Schriftart auf dem server und in die GD einbindbar (sowohl
technisch als auch rechtlich) oder man darf die Konversion
im Skript vornehmen und dann eben viele Rechtecke malen.

@michi7x7: Danke :wink:

Wenn du E-Mail nur an den Autor geht, dann ist der Aufwand der Pixelgrafik wirklich unnötig…
Ansonsten Schriftarten einbinden ist (technisch) problemlos und einfach…
http://de.php.net/imagettftext