Avatar billede ujo33 Nybegynder
11. september 2003 - 17:15 Der er 14 kommentarer og
1 løsning

Ordremail med smtp.php forbindelse

Jeg har problemer med min ordremail der skulle have forbindelse med smtp.php forbindelse.
Efter en kunder har godkendt sin bestilling kommer der en ordre oversigt, men den siger serverfejl: Warning: Server Error in D:\ateamweb\k_site\kalaaleq.gl\www.kalaaleq.gl\pisi\vsadmin\inc\incthanks.php on line 107

Jeg havde det samme problem med "email to a friend" men blev løst af zeled. Tak til zeled. Spørgsmållink: http://www.eksperten.dk/spm/399362

Dvs. incthanks.php skal også have denne smtp.php forbindelse.
Hvordan gør jeg ?

Jeg paste'r lige koderne:

<?php
function do_stock_management($smOrdId){
    global $stockManage;
    if($stockManage != 0){
        $sSQL="SELECT cartProdID, cartQuantity FROM cart WHERE cartCompleted=0 AND cartOrderID=" . $smOrdId;
        $result = mysql_query($sSQL) or print(mysql_error());
        while($rs = mysql_fetch_array($result)){
            $sSQL = "UPDATE products SET pInStock=pInStock-" . $rs["cartQuantity"] . " WHERE pID='" . $rs["cartProdID"] . "'";
            mysql_query($sSQL) or print(mysql_error());
        }
        mysql_free_result($result);
    }
}
function order_success($sorderid,$sEmail,$bSendEmail){
global $maintablebg,$innertablebg,$maintablewidth,$innertablewidth,$maintablespacing,$innertablespacing,$maintablepadding,$innertablepadding;
global $xxOrdId,$xxCusDet,$xxEmail,$xxPhone,$xxShpDet,$xxShpMet,$xxAddInf,$xxPrId,$xxPrNm,$xxQuant,$xxUnitPr,$xxOrdTot,$xxStaTax,$xxCntTax,$xxShippg,$xxGndTot,$xxOrdStr,$xxTnxOrd,$xxTouSoo,$xxAff1,$xxAff2,$xxAff3,$xxThnks,$xxThkYou,$xxRecEml,$xxHomeURL,$xxCntShp;
$affilID = "";
$sSQL = "SELECT ordID,ordName,ordAddress,ordCity,ordState,ordZip,ordCountry,ordEmail,ordPhone,ordShipName,ordShipAddress,ordShipCity,ordShipState,ordShipZip,ordShipCountry,ordPayProvider,ordAuthNumber,ordTotal,ordDate,ordStateTax,ordCountryTax,ordShipping,ordAffiliate,ordAddInfo,ordShipType FROM orders LEFT JOIN payprovider ON payprovider.payProvID=orders.ordPayProvider WHERE ordID=" . $sorderid;
$result = mysql_query($sSQL) or print(mysql_error());
if(mysql_num_rows($result) > 0){
    $rs = mysql_fetch_assoc($result);
    $orderText = $xxOrdId . ": " . $rs["ordID"] . "<br>\r\n";
    $orderText .= $xxCusDet . ": " . "<br>";
    $orderText .= $rs["ordName"] . "<br>";
    $orderText .= $rs["ordAddress"] . "<br>";
    $orderText .= $rs["ordCity"] . ", " . $rs["ordState"] . "<br>";
    $orderText .= $rs["ordZip"] . "<br>";
    $orderText .= $rs["ordCountry"] . "<br>\r\n";
    $orderText .= $xxEmail . ": " . $rs["ordEmail"] . "<br>";
    $custEmail = $rs["ordEmail"];
    $orderText .= $xxPhone . ": " . $rs["ordPhone"] . "<br>";
    if(trim($rs["ordShipName"]) != "" || trim($rs["ordShipAddress"]) != ""){
        $orderText .= $xxShpDet . ": " . "<br>";
        $orderText .= $rs["ordShipName"] . "<br>";
        $orderText .= $rs["ordShipAddress"] . "<br>";
        $orderText .= $rs["ordShipCity"] . ", " . $rs["ordShipState"] . "<br>";
        $orderText .= $rs["ordShipZip"] . "<br>";
        $orderText .= $rs["ordShipCountry"] . "<br>\r\n";
    }
    $ordShipType = $rs["ordShipType"];
    if($ordShipType != "")
        $orderText .= "<br>" . $xxShpMet . ": " . $ordShipType . "<br>";
    $ordAddInfo = trim($rs["ordAddInfo"]);
    if($ordAddInfo != ""){
        $orderText .= "<br>" . $xxAddInf . ": " . "<br>\r\n";
        $orderText .= $ordAddInfo . "<br>\r\n";
    }
    $ordTotal = $rs["ordTotal"];
    $ordDate = $rs["ordDate"];
    $ordStateTax = $rs["ordStateTax"];
    $ordCountryTax = $rs["ordCountryTax"];
    $ordShipping = $rs["ordShipping"];
    $affilID = trim($rs["ordAffiliate"]);
}else{
    $orderText = "Cannot find customer details<br>";
}
mysql_free_result($result);

$sSQL = "SELECT cartProdId,cartProdName,cartProdPrice,cartQuantity,cartID FROM cart WHERE cartOrderID=" . $sorderid;
$result = mysql_query($sSQL) or print(mysql_error());
if(mysql_num_rows($result) > 0){
    while($rs = mysql_fetch_assoc($result)){
        $orderText .= "--------------------------" . "<br>\r\n";
        $orderText .= $xxPrId . ": " . $rs["cartProdId"] . "<br>\r\n";
        $orderText .= $xxPrNm . ": " . $rs["cartProdName"] . "<br>\r\n";
        $orderText .= $xxQuant . ": " . $rs["cartQuantity"] . "<br>\r\n";
        $orderText .= $xxUnitPr . ": " . FormatEmailEuroCurrency($rs["cartProdPrice"]) . "<br>\r\n";

        $optPriceDiff=0;
        $sSQL = "SELECT coOptGroup,coCartOption,coPriceDiff FROM cartoptions WHERE coCartID=" . $rs["cartID"];
        $result2 = mysql_query($sSQL) or print(mysql_error());
        while($rs2 = mysql_fetch_assoc($result2)){
            $orderText .= "    > " . $rs2["coOptGroup"] . " : " . $rs2["coCartOption"];
            if($rs2["coPriceDiff"]==0)
                $orderText .= "<br>";
            else{
                $orderText .= " (";
                if($rs2["coPriceDiff"] > 0) $orderText .= "+"; else $orderText .= "-";
                $orderText .= FormatEmailEuroCurrency($rs2["coPriceDiff"]) . ")" . "<br>\r\n";
            }
        }
        mysql_free_result($result2);
    }
    $orderText .= "--------------------------" . "<br>\r\n";

    $orderText .= $xxOrdTot . " : " . FormatEmailEuroCurrency($ordTotal) . "<br>\r\n";
    $orderText .= $xxStaTax . " : " . FormatEmailEuroCurrency($ordStateTax) . "<br>\r\n";
    $orderText .= $xxCntTax . " : " . FormatEmailEuroCurrency($ordCountryTax) . "<br>\r\n";
    $orderText .= $xxShippg . " : " . FormatEmailEuroCurrency($ordShipping) . "<br>\r\n";
    $orderText .= $xxGndTot . " : " . FormatEmailEuroCurrency($ordTotal+$ordStateTax+$ordCountryTax+$ordShipping) . "<br>\r\n";
}else{
    $orderText .= "Cannot find order details" . "<br>";
}
mysql_free_result($result);
if($bSendEmail){
    $headers = "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
    $headers .= "From: " . $sEmail . " <" . $sEmail . ">\r\n";
    $headers .= "To: " . $sEmail . " <" . $sEmail . ">\r\n";
    mail($sEmail, $xxOrdStr, $orderText, $headers);
}
// And one for the customer
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: " . $sEmail . " <" . $sEmail . ">\r\n";
$headers .= "To: " . $custEmail . " <" . $custEmail . ">\r\n";
mail($custEmail, $xxTnxOrd, $xxTouSoo . "<br><br>" . $orderText, $headers);
if($affilID != ""){
    $sSQL = "SELECT affilEmail,affilInform FROM affiliates WHERE affilID='" . mysql_escape_string($affilID) . "'";
    $result = mysql_query($sSQL) or print(mysql_error());
    if($rs = mysql_fetch_assoc($result)){
        if((int)$rs["affilInform"]==1){
            $affiltext = $xxAff1 . " " . FormatEmailEuroCurrency($ordTotal) . ".<br><br>".$xxAff2."<br><br>".$xxThnks."<br>";
            $headers = "MIME-Version: 1.0\r\n";
            $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
            $headers .= "From: " . $sEmail . " <" . $sEmail . ">\r\n";
            $headers .= "To: " . trim($rs["affilEmail"]) . " <" . trim($rs["affilEmail"]) . ">\r\n";
            mail(trim($rs["affilEmail"]), $xxAff3, $affiltext, $headers);
        }
    }
    mysql_free_result($result);
}
?>
      <table border="0" cellspacing="<?php print $maintablespacing?>" cellpadding="<?php print $maintablepadding?>" width="<?php print $maintablewidth?>" bgcolor="<?php print $maintablebg?>" align="center">
        <tr>
          <td width="100%">
            <table width="<?php print $innertablewidth?>" border="0" cellspacing="<?php print $innertablespacing?>" cellpadding="<?php print $innertablepadding?>" bgcolor="<?php print $innertablebg?>">
              <tr>
                <td width="100%" align="center"><?php print $xxThkYou?>
                </td>
              </tr>
              <tr>
                <td width="100%"><?php print str_replace(" ","&nbsp;",$orderText)?>
                </td>
              </tr>
              <tr>
                <td width="100%" align="center"><br><br>
                <?php print $xxRecEml?><br><br>
                <a href="<?php print $xxHomeURL?>"><b><?php print $xxCntShp?></b></a><br>
                <img src="images/clearpixel.gif" width="350" height="3">
                </td>
              </tr>
            </table>
          </td>
        </tr>
      </table>
<?php
}
function order_failed(){
    global $maintablebg,$innertablebg,$maintablewidth,$innertablewidth,$maintablespacing,$innertablespacing,$maintablepadding,$innertablepadding;
    global $xxThkErr,$xxHomeURL,$xxCntShp;
?>
      <table border="0" cellspacing="<?php print $maintablespacing?>" cellpadding="<?php print $maintablepadding?>" width="<?php print $maintablewidth?>" bgcolor="<?php print $maintablebg?>" align="center">
        <tr>
          <td width="100%">
            <table width="<?php print $innertablewidth?>" border="0" cellspacing="<?php print $innertablespacing?>" cellpadding="<?php print $innertablepadding?>" bgcolor="<?php print $innertablebg?>">
              <tr>
                <td width="100%" colspan="2" align="center"><?php print $xxThkErr?>
                <a href="<?php print $xxHomeURL?>"><b><?php print $xxCntShp?></b></a><br>
                <img src="images/clearpixel.gif" width="350" height="3">
                </td>
              </tr>
            </table>
          </td>
        </tr>
      </table>
<?php
}
$sSQL="SELECT adminEmail,adminEmailConfirm,countryLCID,countryCurrency,adminStockManage FROM admin LEFT JOIN countries ON admin.adminCountry=countries.countryID WHERE adminID=1";
$result = mysql_query($sSQL) or print(mysql_error());
$rs = mysql_fetch_array($result);
$emailAddr = $rs["adminEmail"];
$sendEmail = ((int)$rs["adminEmailConfirm"]==1);
$adminLocale = $rs["countryLCID"];
$useEuro = ($rs["countryCurrency"]=="EUR");
$stockManage = (int)$rs["adminStockManage"];
mysql_free_result($result);
if(@$_POST["custom"] != ""){
    order_success(@$_POST["custom"],$emailAddr,$sendEmail);
}elseif(@$_POST["cart_order_id"] != "" && @$_POST["order_number"] != ""){ // 2Checkout Transaction
    if(trim(@$_POST["credit_card_processed"])=="Y"){
        do_stock_management(trim(@$_POST["cart_order_id"]));
        $sSQL="UPDATE cart SET cartCompleted=1 WHERE cartOrderID=" . trim(@$_POST["cart_order_id"]);
        mysql_query($sSQL) or print(mysql_error());
        $sSQL="UPDATE orders SET ordAuthNumber='" . trim(@$_POST["order_number"]) . "' WHERE ordID=" . trim(@$_POST["cart_order_id"]);
        mysql_query($sSQL) or print(mysql_error());
        order_success(@$_POST["cart_order_id"],$emailAddr,$sendEmail);
    }else{
        order_failed();
    }
}elseif(@$_POST["emailorder"] != ""){
    do_stock_management(trim(@$_POST["emailorder"]));
    $sSQL="UPDATE cart SET cartCompleted=1 WHERE cartOrderID=" . trim(@$_POST["emailorder"]);
    mysql_query($sSQL) or print(mysql_error());
    $sSQL="UPDATE orders SET ordAuthNumber='Email Only' WHERE ordID=" . trim(@$_POST["emailorder"]);
    mysql_query($sSQL) or print(mysql_error());
    order_success(@$_POST["emailorder"],$emailAddr,$sendEmail);
}else{
    order_failed(); // If not match any
}
?>
Avatar billede zeled Nybegynder
11. september 2003 - 20:49 #1
Ahhh... linie 107.... mail ( ...);

Du bruger windows, og skal huske at angive en smtp host i php.ini.
Avatar billede ujo33 Nybegynder
12. september 2003 - 12:25 #2
Ja, det ved jeg godt.
Men  jeg ved så bare ikke hvordan den skal udfyldes korrekt...
Avatar billede ujo33 Nybegynder
12. september 2003 - 12:59 #3
Jeg har ændret linie 107 til denne her:

$smtp = new smtp_client();
$smtp->email("admin@kalaaleq.gl", $custEmail, $xxTnxOrd, $xxTouSoo . "<br><br>" . $orderText, $headers);
$smtp->send();

Men får stadig fejl på mailen.

Jeg får mailen men subject siger: MIME-Version: 1.0
Og indholdet (body) starter med tekst der siger ->  To:

Hvad er det jeg mangler ?

Log-filen siger:


-------------------------------------------
Sent 2003-09-12 09:00:34
-------------------------------------------
    220 MERCUR SMTP-Server (v4.01.08 MTE4My0xMDI0MS0xNzQyMA==) for Windows NT ready at Fri, 12 Sep 2003 09:00:34 -0200

HELO xyz

    250 acwebs.ateam.gl Hello 127.0.0.1

MAIL FROM:admin@kalaaleq.gl
    250 <admin@kalaaleq.gl>, sender ok

RCPT TO:jom@ral.gl
    250 User not local; will forward to <jom@ral.gl>

DATA
    354 Start mail input, terminate with '<CRLF>.<CRLF>'

Subject: MIME-Version: 1.0
Content-type: text/html; charset=iso-8859-1
From: shop@kalaaleq.gl <shop@kalaaleq.gl>
To: jom@ral.gl <jom@ral.gl>

To: Tak for din ordre
Du vil høre fra os indenfor kort tid. Du kan også ringe til os på 22 01 24 og høre nærmere. <br> Din ordre information ser således ud:<br><br>Ordre ID: 544<br>
Kunde information: <br>Johannes Müller<br>Postbox 1833<br>Nuuk, <br>3900<br>Grønland<br>
Email: jom@ral.gl<br>Tlf.: 485933<br>--------------------------<br>
Produkt ID: gigaset85A100<br>
Produkt Navn: Siemens A100<br>
Antal: 1<br>
Pris pr. enhed: 423.00<br>
--------------------------<br>
Total : 423.00<br>
Andet : 0.00<br>
Andet : 0.00<br>
Porto : 0.50<br>
Samlede resultat : 423.50<br>



.
    250 742 bytes received in 0,31 seconds; Message accepted for delivery
Avatar billede zeled Nybegynder
12. september 2003 - 13:13 #4
Prøv denne:

$smtp->email("admin@kalaaleq.gl", $custEmail, xxTnxOrd, $headers, "Ordre status", $headers);

$xxTnxOrd, $xxTouSoo <<-- hvad er disse til?
Avatar billede ujo33 Nybegynder
12. september 2003 - 14:51 #5
Disse er :

$xxTnxOrd="Tak for din ordre.";

$xxTouSoo="Du vil høre fra os indenfor kort tid. Evt. kan du også ringe til 48 59 33 og høre nærmere. <br> Din ordre information ser således ud:";

den henter fra languagefile.php

----

Lige nu får jeg mail med "Ordre status" som subject og korrekt mail afsender.
MEN Indholdet (body) ser således ud :

MIME-Version: 1.0 Content-type: text/html; charset=iso-8859-1 From: shop@kalaaleq.gl To: jom@ral.gl

OG

Modtagerens email ser således ud:

xxTnxOrd, jom@ral.gl <jom@ral.gl>
Avatar billede zeled Nybegynder
12. september 2003 - 15:47 #6
Prøves:

$smtp->email("admin@kalaaleq.gl", $custEmail, $xxTnxOrd, $headers, "Ordre status", $custEmail."\n".$xxTouSoo);
Avatar billede ujo33 Nybegynder
12. september 2003 - 15:59 #7
Nu står modtager email sådn' her: Tak for din ordre, jom@ral.gl <jom@ral.gl>

og inde i body starter email adressen (modtager) først og så teksten bagefter.

Og så mangles der ordre info nederst i body.


Sådn' ser den ud (body)
jom@ral.gl Du vil høre fra os indenfor kort tid. Du kan også ringe til os på 22 01 24 og høre nærmere.
Din ordre information ser således ud:


----
Jeg tror, den der $xxTnxOrd, skal ellers være subject...
Avatar billede zeled Nybegynder
12. september 2003 - 16:10 #8
Prøv:
$smtp->email("admin@kalaaleq.gl",$custEmail,$custEmail,$headers,$xxTnxOrd,$xxTouSoo."<br><br>".$orderText);
Avatar billede ujo33 Nybegynder
12. september 2003 - 16:16 #9
Ja det virker !

Men jeg undrer mig lidt over hvorfor der er 2 ens modtager email adresser på toppen ?
Avatar billede zeled Nybegynder
12. september 2003 - 16:21 #10
Syntax for email.
$smtp->email(Afsender mail,Modtager mail,Modtager Navn, eMail Header, Emne (subject), Selve beskeded)

Den anden $custEmail kan evt. rettes til det felt som tager kundens navn.....
Avatar billede ujo33 Nybegynder
12. september 2003 - 16:28 #11
Ja, det vil være smartere hvis man kunne have navnet med...
Er det muligt her ?
Avatar billede zeled Nybegynder
12. september 2003 - 16:41 #12
$orderText .= $rs["ordName"] . "<br>";

rettes til:
$orderText .= $rs["ordName"] . "<br>"; $email_name=$rs["ordName"];


og emailen
$smtp->email("admin@kalaaleq.gl",$custEmail,$email_name,$headers,$xxTnxOrd,$xxTouSoo."<br><br>".$orderText);
Avatar billede ujo33 Nybegynder
12. september 2003 - 16:49 #13
SUPER ! Du er bare god til det her !
Jeg vil sige 1000 tak for hjælpen for anden gang.

Og vil give 60 point igen til dig !

Må jeg spørge hvordan du har lært PHP programmering ? Har du været til kursus eller... ?
Avatar billede zeled Nybegynder
12. september 2003 - 16:56 #14
Selvlært....

Eller rettere ... i tidernes morgen (ca. 93-95) gik jeg på Informatik assisten uddannelsen, her lærte vi om C/C++ og PHP er meget ens med C/C++.

Og jeg har fejlsøgt i rigtig mange scripts efterhånden.

Jeg roder med PHP næsten hverdag, både på job og i privaten....
Avatar billede ujo33 Nybegynder
12. september 2003 - 17:08 #15
Ok, det lyder spændende. Jeg er lige begyndt at lære PHP, og læser "PHP trin for trin". Så jeg håber jeg kan blive en god PHP programmør ligesom dig ;-)

Har du nogle gode råd omkring php programmering som jeg kan måske bruge i fremtiden?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester