2017-01-30 2 views
0

Ich versuche, ein paar SESSION-Variablen an die PHP-Mail-Funktion übergeben, so dass es an den Benutzer mit diesen Informationen gesendet werden kann. Das E-Mail-System funktioniert, aber die resultierende E-Mail, die beim Benutzer ankommt, hat leere Variablen.Ich versuche, Vars an PHP-Mail zu übergeben

//Start the session and add the variables to it (these are viewed on page before sending email out): 
<?php 
    session_start(); 
    // Continue the session 

    // retrieve session data 
    $amount = $_SESSION["vprice"]; 
    $type = $_SESSION["vtype"]; 
    $member = $_SESSION["vmember"]; 

//Variables viewed on the page: 
<p style="text-align: center;"> 
    Date: <?= date("Y/m/d")?><br> 
    Member ID: <?= $member?><br> 
    Order ID: <?= $abcOrderID?><br> 
    Order Type: <?= $type?><br> 
    Amount: <?= $amount?> &euro;</p> 

// Get users email address to send to: 
<form method="post" action="email.php"> 
    <p style="text-align: center;"> 
    Send Confirmation E-mail to: <input type="text" name="email" value="" /></p> 
    <p style="text-align: center;"><input type="submit" name="submit" value="Send" /></p> 
</form> 

//Send the email using PHP mail() 
<?php 
    //if "email" variable is filled out, send email 
    if (isset($_REQUEST['email'])) { 

    //Email information 
    $email = $_REQUEST['email'] ; 
    $message = "Thank you for ......" ; 

    // here we use the php mail function 
    // to send an email to: 
    // [email protected] 
    mail("[email protected]", "Online Submission",$message, "From: $email"); 
    } 
?> 

//In email.php I use the following to build the message: 
$mail->Body = "<p>Dear Member {$member1},</p><p>We have received your<strong> ABC payment</strong> and the purchased amount of {$amount1} in EUR will appear in your bank statement under the name ABC Ltd. Please keep this e-mail as a receipt for your records.</p><p>If you have any concern regarding this transaction, please do not hesitate to contact us</a>.</p><p>&nbsp;</p><p>Thank you,<br>ABC-Gym</p>"; 

Ich habe versucht, alle möglichen Dinge zu beheben, aber nichts. Irgendwelche Ratschläge was schief läuft?

Danke, Andreas M.

+2

Spoofing E-Mail mit einem beliebigen From-Feld ist eine gute Möglichkeit, Ihre sendende Reputation zu zerstören. Sie sollten immer von einer Adresse senden, die Sie steuern, und Sie können SPF-Datensätze für festlegen. Legen Sie ein Feld "Antwort an" fest, wenn Sie dem ursprünglichen Absender antworten möchten. – tadman

Antwort

0

Ok ich diese nach einiger aus Versuch und Irrtum herausgefunden haben. Ich habe die mail() -Funktion von PHP und die hinzugefügten PHPMailer-Optionen in email.php gemischt und ich sollte auch beachten, dass ich die E-Mail an die E-Mail-Adresse sende, die von der Benutzereingabe erfasst wurde.

Dies ist, was ich in meiner response.php Seite für "Form" geändert und "mail()":

<form method="post" action="email.php"> 
    <p style="text-align: center;"> 
     Send Confirmation E-mail to: <input type="text" name="email" value="" /> 
    <textarea style="visibility: hidden" name="message" id="message" rows="1" cols="1"> 
    <p>Dear Member (ID <?= $member ?>),</p><p>We have received your <strong>ABC payment</strong> for order #<?= $abcOrderID ?>|<?= $type ?> and the charged amount of <?= $amount ?> EURO will appear on your bank statement under the name ABC Ltd. Please keep this e-mail as a receipt for your records.</p><p>If you have any concern regarding this transaction, please do not hesitate to contact us</a>.</p><p>Thank you,<br>ABC Payments</p></textarea></p> 
     <p style="text-align: center;"><input type="submit" name="submit" value="Send" /></p> 
    </form> 
    <?php 
     //if "email" variable is filled out, send email 
     if (isset($_REQUEST['email'])) { 

     //Email information 
     $email = $_REQUEST['email'] ; 
     $message = $_REQUEST['message'] ; 

     // here we use the php mail function 
     // to send an email to: 
     // [email protected] 
     mail("$email", "ABC Payment Submission", $message, "From: [email protected]"); 
     } 
    ?> 

Jetzt in meinem email.php von PHPMailer, hier sind die einzigen Änderungen (siehe Kommentare):

// $email and $message are the data that is being 
// posted to this page (email.php) from our php form (response.php) 
$email = $_REQUEST['email']; 
$message = $_REQUEST['message']; 
//... 
// $message is the forms message we have set in response.php 
// page. We set this variable at the top of this page with: 
// $message = $_REQUEST['message']; 
$mail->Body = $message; 
$mail->AltBody = $message; 

Arbeiten jetzt!

+0

Verwenden Sie 'mail()' und phpMailer gleichzeitig? Der springende Punkt von phpMailer ist sicherlich, Sie davor zu bewahren, jemals die alte klobige 'mail()' Funktion benutzen zu müssen. Wenn du phpMailer in deinem Code hast, benutze ihn für alles. – Simba

+0

@simba, nun, das ist mir jetzt klar geworden. Aus Fehlern lernen, danke. – Gumstic

0

In Ihrem Code

<?php 
    //if "email" variable is filled out, send email 
    if (isset($_REQUEST['email'])) { 

    //Email information 
    $email = $_REQUEST['email'] ; 
    $message = "Thank you for ......" ; 

    // here we use the php mail function 
    // to send an email to: 
    // [email protected] 
    mail("[email protected]", "Online Submission",$message, "From: $email"); 
    } 
?> 

Sie zuweisen "Vielen Dank für ......" zu $ ​​message Variable und sendet, dass an mail() Funktion welches sendet mail.

$ mail-> Textzeile in nicht ausgeführt und das ist der Grund für leere Variablen. Verwendung

$message = "<p>Dear Member {$member1},</p><p>We have received your<strong> ABC payment</strong> and the purchased amount of {$amount1} in EUR will appear in your bank statement under the name ABC Sports Center Ltd. Please keep this e-mail as a receipt for your records.</p><p>If you have any concern regarding this transaction, please do not hesitate to contact us</a>.</p><p>&nbsp;</p><p>Thank you,<br>ABC-Gym</p>"; 
+0

Mohd, Ich habe versucht, was Sie vorgeschlagen, aber immer noch die gleichen -leere Variablen. Lassen Sie mich bemerken, dass ich $ Nachricht jetzt sowohl in der response.php (Absender) -Seite als auch in der email.php selbst habe (wenn das etwas hilft). – Gumstic

+0

Können Sie auf $ member1 und alle anderen Variablen in email.php zugreifen? Schau dir meinen mail.php code an http://pastebin.com/bfCLFhWe –

+0

Nein, ich bekomme die Variablen nicht in email.php - meine Datei sind auch alle Einträge mit $ mail-> From = $ email; usw. Es ist verwirrend, nachdem du deine gesehen hast. Was sollte ich bevorzugen? – Gumstic

Verwandte Themen