Moin,
einige Epson-Drucker sind kompatibel mit „Epson Connect“, beispielsweise der XP 970. Epson Connect ist ein kleines Tool von Epson. Ihr könnt euren Drucker dann kostenlos bei Epson Connect registrieren und der Drucker bekommt eine E-Mail-Adresse. Euer Drucker muss dazu natürlich mit eurem WLAN verbunden sein. Sendet ihr nun eine E-Mail mit Anhängen an den Drucker, druckt er diese automatisch aus. Das klappt auch ganz hervorragend. Aber wie kann man dies nun automatisieren?
Theoretisch mit einem E-Mail-Dienst der zeitgesteuert immer wieder die gleiche Mail versenden kann. Oder (und so habe ich es gemacht) per PHP-Script auf einem Webserver. Ich habe mir von Google Gemini ein PHP-Script schreiben lassen, das meine „Purge Print“ per E-Mail verschickt, sobald das Script aufgerufen wird. Jetzt habe ich dieses PHP-Script auf meinen Webserver geladen und mir einen kostenlosen „Cron-Job“ bei http://www.cron-job.org eingerichtet, der hier einmal die Woche meine PHP-Datei aufruft.
Und das wars. Meine beiden Drucker drucken zuverlässig eine Purge-Seite pro Woche. Das braucht man natürlich alles nicht, wenn man regelmäßig druckt, das ist klar 
Folgendes Script kann genutzt werden. Vielleicht hilft diese Lösung dem einen oder anderen weiter. 
<?php
$to = 'empfaenger@example.com'; // Ersetze dies durch die E-Mail-Adresse des Empfängers
$subject = 'Wichtige Informationen: Purge-Dokument';
$message = 'Sehr geehrte/r Empfänger/in,
im Anhang finden Sie das Dokument "purge.pdf".
Mit freundlichen Grüßen,
Ihr Absender';
$from_name = 'Ihr Name'; // Ersetze dies durch deinen Namen
$from_email = 'deine_email@example.com'; // Ersetze dies durch deine E-Mail-Adresse (Absender)
$file = 'purge.pdf'; // Der Name der Datei, die angehängt werden soll
// --- Dateiprüfung ---
if (!file_exists($file)) {
die("Fehler: Die Datei '$file' wurde nicht gefunden. Bitte stellen Sie sicher, dass 'purge.pdf' im selben Verzeichnis wie dieses PHP-Skript liegt.");
}
$file_size = filesize($file);
$handle = fopen($file, "r");
$content = fread($handle, $file_size);
fclose($handle);
$encoded_content = chunk_split(base64_encode($content));
$boundary = md5(time());
// --- Header für die E-Mail ---
$headers = "From: " . $from_name . " <" . $from_email . ">\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"" . $boundary . "\"\r\n";
// --- Nachrichtenteil (Text) ---
$body = "--" . $boundary . "\r\n";
$body .= "Content-Type: text/plain; charset=\"UTF-8\"\r\n";
$body .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$body .= $message . "\r\n\r\n";
// --- Anhangsteil ---
$body .= "--" . $boundary . "\r\n";
$body .= "Content-Type: application/pdf; name=\"" . basename($file) . "\"\r\n";
$body .= "Content-Transfer-Encoding: base64\r\n";
$body .= "Content-Disposition: attachment; filename=\"" . basename($file) . "\"\r\n\r\n";
$body .= $encoded_content . "\r\n\r\n";
$body .= "--" . $boundary . "--";
// --- E-Mail senden ---
if (mail($to, $subject, $body, $headers)) {
echo "E-Mail mit Anhang 'purge.pdf' erfolgreich an " . $to . " gesendet.";
} else {
echo "Fehler beim Senden der E-Mail.";
// Oft hilft es, hier auch mail() Fehlermeldungen zu loggen, wenn der Server dies zulässt.
}
?>
Alles anzeigen