# Email per Button aus PHP heraus öffnen



## wal (3. Mai 2004)

Hallo,

per HTML ist es möglich mittels Mailto eine Mail inclusive Betraff, Body etc. zu erstellen. Daraufhin wird dann von dem installierten Mailclient (z.B. Outlook) ein neues Mailfenster geöffnet.

Meine HTML Seite wird von einer PHP Seite erstellt und ausgewertet. Demzufolge müsste mittels einem Klick auf den Button eine PHP Funktion aufgerufen werden, welche mir direkt aus dem Mailclient eine neue Mail öffnet.

Nun meine Frage, ist dies möglich? 

Was ich bis jetzt machen kann, ist das die Funktion eine weitere HTML Seite generiert, die dann das mailto etc. beinhaltet und der User kann dann auf einen Link klicken, damit das neue Mailfenster aufgeht. Ich möchte, das aber sofort das Mailfenster ausgeht ohne diese "Zwischenseite".

Anbei mal der HTML Code den ich meine:

```
<a href=\"mailto:name@company.de?subject=... hier den Betreff einsetzen&amp;body=Hier den Textkoerper einsetzen:%0D".$_REQUEST['suche']."\">Neue Mail</a>
```

Jetzt suche ich eine Möglichkeit genau diese Funktionalität direkt von und mittels PHP aufzurufen. 

Hintergrund ist:
Ich möchte *kein* Mail() einsetzen. Da ich keine Anhänge oder Scrennshot dann einfügen oder anhängen kann. Ich habe die Threads diesbezüglich bereits hier im Board gelesen und denke wenn möglich, ist dies meine einfachste Lösung dafür.

Ich hoffe es verständlich erklärt zu haben, aber man weiss ja nie, also sollten Fragen sein, bitte meldet euch nochmals.

Vielen Dank schon mal vorab für Tipps, Hilfen und Anregungen!

P.S.: Eventuell gibt es ja noch einen einfacheren Weg?


----------



## Karl Förster (3. Mai 2004)

Also da du mit PHP ja auch nur HTML-Quellcode erstellst und den an den Browser schickst, und eine Verlinkung auf mailto:me@domain.de automatisch den eMail-Client öffnet, müsste also evtl. ein Link genügen:

```
// Hier bin ich mir nicht sicher:
header ("Location: mailto:me@domain.de");

// ... aber das müsste gehen:
echo "<meta http-equiv=\"refresh\" content=\"0; url=mailto:me@domain.de\" />";
```

Aber warum solltest du die mail(); Funktion nicht nutzen können? Damit kann man doch Anhänge verschicken. Ist nur etwas umständlicher zu Programmieren, weil du sie erst per Formular hochladen musst.


----------



## wal (3. Mai 2004)

Hi Karl,

ja du hast recht, es ist mit Mail() möglich Anhänge zu verschicken. Aber wie du bereits gesagt hast, ist es doch schwerer zu realisieren. Ich habe dazu noch leider kein für mich geeignetes Tut gefunden, dass es mir auf einfache Weise erklärt. Auch bin ich mir nicht sicher, da ich das alles intern für das Intranet benutze, ein Hochladen immer brauche und wenn ja wohin - auf den Exchange Server? Mit Mail() verschicke ich alle Formulare, wenn keine Anhänge dabei sind.
Wenn du aber ein tolles Tut kennst, würde ich mich über einen Link freuen!   

So, nun nochmals zu deinen Antworten:

Vielen Dank beide funktionieren, wobei die zweite Version meine Wahl war. Dort ist es einfacher gewesen subject, body etc. einzubauen  

Jetzt habe ich aber nochmals eine Frage:
Da ich den body per String in PHP zusammenbaue, steht in der geöffneten Mail der Gesamte Body als String:

Beispiel:





> **********  Daten Call Verfasser **********vorname                  : maxnachname                 : mustermannslx                      : 001rechner                  : 4711bereich                  : teamdurchwahl                : 0815 **********  Informationsanfrage **********Anfrage:                 : was geht?



Aber aussehen sollte es wie folgt:


> **********  Daten Call Verfasser **********
> vorname                  : max
> nachname                 : mustermann
> slx                      : 001
> ...



Ich habe bereits geschaut ob es an der Einstellung des Emailformates in Emailclient hängt, ist es aber nicht. Auch habe ich versucht mit HTML <br> was zu machen, ging aber auch nicht.

Hast du eventuell noch ein Idee oder Tipp?

Vielen Dank schon mal im voraus.


----------



## JocalAreaNetwork (3. Mai 2004)

Benutze "text\ntext2", \n ist der Zeilenumbruch.


----------



## wal (4. Mai 2004)

Hi JocalAreaNetwork,

danke für den Tipp, leider funktioniert es immer noch nicht. Schreibe ich HTML Tags rein, werden diese wie normaler Text mit im String ausgegeben, wenn ich das mit \n probiere funktioniert dies ebenfalls nicht.

Anbei mal der Code-Auschnitt:


```
$s_Message=" ".chr(10).chr(10);
  $s_Message.="**********  Daten Call Verfasser **********".chr(10).chr(10);
   for ($i=0; $i<sizeof($mailfields_Daten_Verfasser); $i++) {
   	    if (isset($_REQUEST[$mailfields_Daten_Verfasser[$i]])){
			$s_Message.="\n";
			$s_Message.=substr($mailfields_Daten_Verfasser[$i]."                              ",0,25).": ".$_POST[$mailfields_Daten_Verfasser[$i]]."\n".chr(10);
		}
   }
```

Das \n wird anscheinend ignoriert, jedenfalls zeigt es keine Wirkung. Muss ich eventuell noch irgendeine Funktion einbauen, dass es überhaupt in dieser Konstellation funktioniert (z.B. wie für HTML soetwas wie htmlentities)?

Hast du noch eine Idee?


----------



## Nils Hitze (4. Mai 2004)

LIES DAS BITTE BITTE ....

Sollte deine Fragen grundlegend beantworten :

http://de.php.net/manual/de/function.mail.php


----------



## wal (5. Mai 2004)

Hi Nils,

danke für den Link. Ok, da habe ich nochmals nachgeschaut, aber dies betrifft das Mailversenden mittels Mail() aus PHP raus. 

Ich baue zwar das PHP Gerüst - also die Message zusammen, rufe aber dann die Mail/den Mailversand mittels HTML auf:


```
echo "<meta http-equiv=\"refresh\" content=\"0; url=mailto:name@domain.de?subject=Hardwareproblem ".date("d.m.Y")."&amp;body=".$s_Message."\" />";
```

Somit habe ich keine Möglichkeiten einen Header etc. mitzugeben. Weiter kann ich beim Zusammenbauen des Strings mit \n oder \r\n arbeiten und es bleibt leider wirkungslos.

Habe ich denn nun etwas übersehen? 

P.S.: ich weiss was du mit BITTE BITTE meinst, ahbe auch bevor ich den Thread eröffnet hatte dort reingeschaut - aber anscheinend bin ich blind oder sehe den Wald vor lauter Bäumen nicht! Sorry! :-(


----------



## Eiszwerg (7. Mai 2004)

Wenn Du Variablen benutzt und dazwischen einen Zeilen-Umbruch machen möchtest, dann:


```
$message=$Nachricht."\n".$Name."\n".$Email;
```

Hoffe es war ein Anstoss


----------



## wal (7. Mai 2004)

Hallo,

vielen Dank für die Antworten ...  

Manchmal sieht man den Wald vor Bäumen nicht ... jetzt funktioniert es   

Anbei die Begründung:
http://www.selfhtml.net/html/verweise/email.htm#optionen


----------

