2016-05-29 15 views
0

Ich habe eine Schaltfläche "Drucken", ich möchte auch eine "E-Mail" -Taste. Ich möchte den Inhalt der Seite per E-Mail versenden, nachdem ich im Bestellformular auf "Click To Add" (input type = "image") geklickt habe. Es ist im Grunde nur ein Bestellformular mit mehreren Eingabetypen, die ich formatieren und per E-Mail versenden möchte. Muss ich zuerst die ganze Seite in PDF umwandeln? Ich werde mehrere Formen (Kleidungsstile) haben, die verarbeitet werden. Vielen Dank!Wie man eine bearbeitete Seite mit php emailiert und formatiert?

Link to test page: http://taketwodesigns.com/monkeypod/order/ 


    <!---------------------- 1ST STYLE BELOW -----------------------------> 
<form action="processors/process_xs-xxl.php" method="post" name="order_form1" class="margins"> 

<div class="item_image_container"> 
<span class="item_name">Item ~ MLTA107-101TEV</span> 
<a href="images/styles/large/mlta107_101tev_big.jpg" target="_blank"><img class="item_image" src="images/styles/thumbs/mlta107_101tev_thumb.jpg" /></a> 
<span class="click_full_image">Click image for full size</span> 
</div><!-- ITEM_IMAGE div CLOSE --> 

<table border="1" cellspacing="1"> 
<tr class="gridaddrows"> 
<td colspan=8 class="radius"> 
<div class="formtext"><b>You must click the "Add to Cart" button to place items in cart.</b></div> 
</td> 
</tr> 
<tr class="gridrows"> 
<td class="gridtitle">Add</td> 
<td class="gridtitle">XS</td> 
<td class="gridtitle">S</td> 
<td class="gridtitle">M</td> 
<td class="gridtitle">L</td> 
<td class="gridtitle"></td> 
<td class="gridtitle"></td> 
</tr> 

<td class="add_to_cart_btn"> 
<input type="image" src="../order/images/clicktoadd83pxfast.gif" name="mlta107_101tev" alt="Add to Cart" /></td> 

<td><span class="price">$11.25</span><br> 
<input type="number" name="xs" placeholder="Qty" min="0" max="288" autocomplete="off"></td> 

<td><span class="price">$11.25</span><br> 
<input type="number" name="sm" placeholder="Qty" min="0" max="288" autocomplete="off"></td> 

<td><span class="price">$11.25</span><br> 
<input type="number" name="md" placeholder="Qty" min="0" max="288" autocomplete="off"></td> 

<td><span class="price">$11.25</span><br> 
<input type="number" name="lg" placeholder="Qty" min="0" max="288" autocomplete="off"></td> 

<td><!-- span class="price">$11.25</span><br --> 
<input type="number" name="xl" placeholder="Qty" min="0" max="288" style="visibility: hidden;" autocomplete="off"></td> 

<td><!-- span class="price">$11.25</span><br --> 
<input type="number" name="xxl" placeholder="Qty" min="0" max="288" style="visibility: hidden;" autocomplete="off"></td> 

</table> 
</form> 



<!DOCTYPE html>    <!-- process_xs-xxl.php --> 
<html> 
<head> 
<title>MPK MLTA107-101TEV</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<meta content="width=device-width, initial-scale=1, user-scalable=yes" name="viewport" /> 
<link rel="stylesheet" href="../css/cart.css" type="text/css" /> 
<link href='https://fonts.googleapis.com/css?family=Open+Sans:700,600' rel='stylesheet' type='text/css'> 
<link rel="stylesheet" type="text/css" href="css/print.css" media="print"> 
</head> 
<body> 

<div id="divToPrint"> 

<h1>MONKEYPOD KITCHEN ONLINE ORDERING</h1> 

<?php 

date_default_timezone_set('Pacific/Honolulu'); 
$date = date("l, F jS Y g:i:s A"); 

$xs = $_POST['xs']; 
$sm = $_POST['sm']; 
$md = $_POST['md']; 
$lg = $_POST['lg']; 
$xl = $_POST['xl']; 
$xxl = $_POST['xxl']; 

    if($_POST['xs'] || 
     $_POST['sm'] || 
     $_POST['md'] || 
     $_POST['lg'] || 
     $_POST['xl'] || 
     $_POST['xxl']){ 

$xs = ltrim($xs, '0'); 
$sm = ltrim($sm, '0'); 
$md = ltrim($md, '0'); 
$lg = ltrim($lg, '0'); 
$xl = ltrim($xl, '0'); 
$xxl = ltrim($xxl, '0'); 

    echo '<h6 class="great">Thank you for your order!</h6>'; 

    echo "<hr>"; 

    echo "<h5>Your order date is:<br>$date<br>Hawaiian Time! Mahalo!</h5>"; 

    echo "<ul><h3>Ordered Items Below</h3><h4>Item# MLTA107-101TEV</h4>"; 

    echo "<li>" . $xs . "&nbsp; -&nbsp; X-Small" . "</li>"; 
    echo "<li>" . $sm . "&nbsp; -&nbsp; Small" . "</li>"; 
    echo "<li>" . $md . "&nbsp; -&nbsp; Medium" . "</li>"; 
    echo "<li>" . $lg . "&nbsp; -&nbsp; Large" . "</li>"; 
    echo "<li>" . $xl . "&nbsp; -&nbsp; X-Large" . "</li>"; 
    echo "<li>" . $xxl . "&nbsp; -&nbsp; XX-Large" . "</li>"; 

    echo "</ul>"; 

    }else{ 
      echo '<h2>Oppsiedasies! It looks like you didn\'t order anything!<br>Back to <a href=".">shop home</a></h2>'; 
     }    
?> 

<?php 
    echo '<div class="print_button_div"><input type="button" value="Print Order" onclick="PrintDiv();" /></div>'; 
?> 

<?php 

echo '<a href="mailto:[email protected]?subject=Summer%20Party&body=$xs%20You%20are%20invited%20to%20a%20big%20summer%20party!" target="_top">Send mail!</a>'; 

?> 

<h5>Test for echo....<br>Back to <a href=".">shop home</a></h5> 

</div><!-- TO PRINT div CLOSE --> 

<script type="text/javascript">  
    function PrintDiv() {  
     var divToPrint = document.getElementById('divToPrint'); 
     var popupWin = window.open('', '_blank', 'width=800,height=800,background-color=red'); 
      popupWin.document.open(); 
      popupWin.document.write('<html><head><style></style></head><body onload="window.print()">' + divToPrint.innerHTML + '</html>'); 
      popupWin.document.close(); 
    } 
</script> 

</body> 
</html> 
+1

Tutorial Sie Ausgabepufferung verwenden könnte und bekommen, was auf dem Bildschirm per e-Mail generiert wird - http://php.net/manual/en/book. outcontrol.php - http://php.net/manual/en/function.ob-start.php - so müssten Sie keine pdf –

+0

@ Fred-ii- generieren, danke für die Antwort! Ich habe etwas über die Ausgabepufferung gelesen und bin damit davon ausgegangen, dass die Codeausführung pausiert (gepuffert) wird oder dass der gesamte Inhalt einer Seite in eine einzige Variable umgewandelt wird. Letzteres ist, was ich hoffen würde, aber wie übermittle ich es dann an eine E-Mail? Erstelle ich eine separate Seite nur für das E-Mail-Scripting und füge die Variable irgendwo hinzu? – Bigfootbud

+1

Gern geschehen. Ja; Die Variable, die Sie verwenden würden, würde von der Ausgabepufferung zugewiesen werden und diese zugewiesene Variable als den Nachrichtentext verwenden. Sie müssen nur erfassen, was Sie gesendet haben möchten. Sie müssten es jedoch als HTML senden. Siehe das Handbuch zu 'mail()', wenn Sie diese Funktion verwenden möchten http://php.net/manual/en/function.mail.php oder phpmailer https://github.com/PHPMailer/PHPMailer –

Antwort

1

Wie ich in den Kommentaren erwähnt, können Sie output buffering verwenden, um Inhalte per E-Mail zu erfassen. Hierfür muss kein zusätzliches PDF erstellt werden.

  • Sie können jedoch mit FPDF http://www.fpdf.org/ suchen, wenn Sie es wünschen.
  • Sie einfach die zugewiesene Variable ob_get_contents() und verwenden Sie diese als Mail-Körper.

    Dies ist ein sehr einfaches Beispiel (gezogen von this page), aber Sie werden damit experimentieren müssen platzieren, indem Sie einfach, was Sie zwischen ob_start(); und ob_end_clean(); erfassen müssen.

    <?php 
    
        // Start buffering 
        ob_start(); 
    
        // Output stuff (probably not this simple, might be custom CMS functions... 
        echo 'Print to the screen!!!'; 
        echo "<br>Print this to screen also."; 
    
        // Get value of buffering so far 
        $getContent = ob_get_contents(); 
    
        // Stop buffering 
        ob_end_clean(); 
    
        // Do stuff to $getContent as needed 
    
        // Use it 
        echo 'Now: ' . $getContent; 
    
    ?> 
    

    Die $getContent Variable würde als Mail-Body-Parameter verwendet werden.

    Beispiel mit mail() Funktion PHP:

    mail($to, $subject, $getContent, $headers); 
    

    Referenz: als HTML zu senden,

    Und denken Sie daran, da Sie hier HTML verwenden.

    Sie haben einen nicht geschlossenen <h5> Tag in shop home</a></h5 < < < genau dort:

    Sie können auch phpmailer https://github.com/PHPMailer/PHPMailer

    Foonotes verwenden.

    Ich bemerkte, dass Sie Bilder verwenden. Sie müssen möglicherweise einen vollständigen HTTP-Aufruf für diese verwenden.

    d.h .:

    <a href="http://www.example.com/images/styles/large/mlta107_101tev_big.jpg" target="_blank"><img class="item_image" src="http://www.example.com/images/styles/thumbs/mlta107_101tev_thumb.jpg" /></a> 
    

    Mail von einem Formular senden, müssten Sie PHP dafür verwenden, anstatt die <a href="mailto:[email protected]?subject=Summer... Link hier Sie verwenden.

    Werfen Sie einen Blick auf die PHP-Formen

    +0

    Ich hatte viele schlechte Erfahrungen mit großen Unterschieden in der Art und Weise, wie verschiedene E-Mail-Clients HTML-Inhalte schlecht Rendern Layout. Alles jenseits der trivialsten Inline-CSS sieht selten genau richtig aus. Der beste Weg, den ich entdeckt habe, ist ein PDF zu erstellen und anzuhängen, also ein großes Lob für FPDF. Noch besser für Quittungen, im Voraus baue ich Formulare in Acrobat, erzeuge FDFs, fülle und fülle dann mit PDFTK. Es ist eine andere Anfangskurve, aber Sie werden auf lange Sicht viel mehr bekommen. –

    +0

    @JeffPuckettII Ich verstehe Jeff. Nun, ich hoffe, dass das, was ich vorgeschlagen habe, hilfreich sein wird. Das ist das Beste, was ich zu dieser Zeit anbieten kann. Ich habe die obige Methode einige Male benutzt und war erfolgreich für mich, und HTML formatierte Tabellen zu senden. TBH Jeff, ich habe nie als PDF-Dokumente verschickt. –

    Verwandte Themen