PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mailto-Link z. B. per JS nachladen oder als Meta-Tag?


tapferesschneid
09.03.2005, 14:38:11
Hallo,

ich habe auf einer Seite mehrere E-Mail-Vorlagen zum Anklicken in dieser Form: <?php
echo
'<a href="mailto:name@domain.tld' .
'?subject=' . rawurlencode($subject) .
'&amp;body=' . rawurlencode($sehr_langer_mailbody) .
'">Link</a>';
?>
Das funktioniert, ist aber unheimlich viel Quelltext.

Ich habe probiert, das auszulagern und die angeklickte E-Mail über

<?php
header('Location: mailto:...');
?> aufzurufen. Das hat zwei Nachteile: Erstens verschwindet die eigentliche Seite mit der Übersicht und die mailto:-Zeile steht in der Adressleiste, zweitens funktioniert es bei Zeilenumbrüchen im Body nicht (hab' jedenfalls nicht rausgefunden, wie).

Gibt es eine JS-Möglichkeit, bei Klick den eigentlichen Link erst per url() oder so nachzuladen? Oder gibt es ein HTML-Meta-Tag, das einen mailto-Aufruf auslösen kann und das ich nach Klick und Reload der Original-Seite einfach mitschicken kann?

Schneiderlein

xabbuh
09.03.2005, 15:20:53
Könntest du dein Problem etwas genauer, möglichst an einem Beispiel, erläutern?

tapferesschneid
09.03.2005, 20:51:55
Ich ergänze obigen Code für ein Beispiel:
<?php

$subject = 'Re: Ihre Mail vom 31.02.2005 - Seite von selfphp';
$sehr_langer_mailbody =
'Hinweise zum Dokument

Haftung
Themenumfang
Zielgruppe und Ziel
Copyright
Versionenkontrolle
SELFPHP im WWW
Schreibweise der PHP-Syntax
SELFPHP optisch an eigene Bedürfnisse anpassen



Haftung

Dieses Dokument ist keine Publikation einer offiziellen Stelle. Das Dokument erhebt weder den Anspruch auf Vollständigkeit noch auf Fehlerfreiheit. Für Fehler in kommerziellen WWW-Seiten, die auf falsche oder falsch verstandene Beschreibungen in diesem Dokument zurückzuführen sind, übernimmt der Autor keine Haftung.

Themenumfang

Dieses Dokument beschreibt ca. 560 Funktionen von PHP 3/4. Dabei wurden die am häufigsten genutzten Befehle von PHP innerhalb einer vorgegebenen Gruppenstruktur in alphabetischer Reihenfolge geordnet und ausführlich erklärt.
Desweiteren wird zu jeden Befehl mindestens ein Beispiel und die dazugehörige Ausgabe im Browser angezeigt. So kann man schon beim Lesen des Dokuments die Befehle nachvollziehen ...
' .

// Edit: hatte die Mailbodylänge anfangs etwas übertrieben ;-)

'... in dem Sie SELFPHP abgelegt haben, die Datei self.css (im Verzeichnis src) mit einem Texteditor auf, unter MS Windows beispielsweise mit dem Notepad Editor. Die Datei enthält zentrale Style-Sheet-Definitionen für SELFPHP. Die einzelnen Einträge sind auskommentiert.';




echo
'<a href="mailto:name@domain.tld' .
'?subject=' . rawurlencode($subject) .
'&amp;body=' . rawurlencode($sehr_langer_mailbody) .
'">Link</a>';
?>

Von solchen Links könnte ich auf einer Seite auch 20 bis 30 haben, was in Summe einen riesigen Quelltext ergäbe.

Die Idee ist jetzt, diese langen durch kurze Links zu ersetzen, die z. B. eine JS-Funktion ausführen, die wiederum den eigentlichen mailto-Link erst nachlädt.

Versucht hatte ich es über einen HTTP-Redirect, der aber mit Zeilenumbrüchen nicht klarkam und auch sonst relativ ungeeignet war.

Inzwischen hatte ich die Idee, durch Klick auf den Link (auch per JS) ein weiteres Fenster öffnen zu lassen, das dann einen Refresh auf mailto ausführt und sich dann selbst schließt. Ich schreib's mal in Idioten-Skript:

Basis-Seite: <a href="mail_template.php" target="_blank"
oder window.popup("mail_template.php")>

mail_template.php: <meta reload=<?php echo '"mailto:name@domain.tld' .
'?subject=' . rawurlencode($subject) .
'&amp;body=' . rawurlencode($sehr_langer_mailbody) . '"'; ?>
>
self.close();

Von JS habe ich keinen blassen ... Geht sowas? Wenn ja, kann mir jemand Hinweise auf die korrekten JS-Funktionen geben?

Danke

xabbuh
09.03.2005, 20:56:52
Muss es zwingend mit JavaScript sein? Kannst du nicht besser das ganze mit PHP und einer Datenbank verwalten?

tapferesschneid
09.03.2005, 21:45:27
Natürlich muß es nicht JavaScript sein (wovon ich ja keine Ahnung habe). Ich suche eben eine gute Idee. Dahinter steckt natürlich schon PHP/MySQL, aber die E-Mail-Vorlagen werden eben z. Z. *alle* mit dem Quelltext mitgeschickt.

|Coding
09.03.2005, 21:54:25
darf man mal fragen was du da versendest? ich lese da was von SELFPHP...

tapferesschneid
10.03.2005, 08:59:04
Oh ja, ich versende regelmäßig Eure ganzen SelfPHP-Seiten ... ;-)

Nee, Quatsch, ich versende relativ lange Mails, von denen ich jetzt natürlich keine hier reinkopieren wollte, und habe deshalb einfach einen schnell verfügbaren langen »Blindtext« genommen ...

|Coding
10.03.2005, 14:33:30
aso :-)
ich dachte schon...

xabbuh
11.03.2005, 15:22:17
Mein Vorschlag, falls sich das Ganze noch nicht erledigt hat: Speicher die E-Mailadressen mit allen zugehörigen Informationen in einer Datenbank. In deine Seiten baust du dann Links nach diesem Muster ein: mail.php?mailid=20
Auf der Seite mail.php suchst du dann alle Informationen aus der Datenbank zu dem Datensatz mit der mailid die dem per URL übermittelten Parameter entspricht und verschickst dann die Mail per PHP oder generiere ein entsprechendes Formular.

tapferesschneid
12.03.2005, 13:33:35
Danke, xabbuh, aber ich brauch's genau so wie oebn beschrieben (auf die andere Möglichkeit bin ich natürlich auch schon gekommen).

Ja, die Mailadressen und Texte sind selbstverständlich in einer Datenbank, ich muß nur jedem Nutzer die Flexibilität des eigenen MUA lassen.

Ich habe mich ein bißchen in JavaScript reingelesen und jetzt das hier:

auf der eigentlichen Seite: <a onclick="window.open('mail.php?id=1', 'temp')">Mail 1</a>
<a onclick="window.open('mail.php?id=2', 'temp')">Mail 2</a>
<a onclick="window.open('mail.php?id=3', 'temp')">Mail 3</a>
<!-- usw. -->

in der mail.php: <script language="javascript">
window.location.href = "mailto:name@domain.tld<?php
echo '?subject=' . rawurlencode($subject) .
'&amp;body=' . rawurlencode($sehr_langer_mailbody);
?>";
self.close();
</script>
Und das funktioniert tatsächlich ;-)

xabbuh
12.03.2005, 19:47:27
Danke, xabbuh, aber ich brauch's genau so wie oebn beschrieben (auf die andere Möglichkeit bin ich natürlich auch schon gekommen).
Das ist natürlich ärgerlich und so bleibt wohl wirklich nur noch die von dir beschriebene JavaScript-Lösung. Allgemein finde ich E-Mailversand über Formulare wesentlich besser, da man so auch die Benutzer nicht aussperrt, die kein E-Mailprogramm auf ihrem Rechner installiert haben.

tapferesschneid
13.03.2005, 14:52:55
Das hängt natürlich vom Anwendungsfall ab und ist hier (ein Intranet) völlig ok.

xabbuh
13.03.2005, 15:05:59
Das hängt natürlich vom Anwendungsfall ab und ist hier (ein Intranet) völlig ok.
Stimmt auch wieder. Da war ich wohl zu vorlaut... :-)