Page 1 of 2

[Solved] mail ()

Posted: Tue Mar 20, 2007 6:03 pm
by abeterosso
feyd | Please use

Code: Select all

,

Code: Select all

and [syntax="..."] tags where appropriate when posting code. Your post has been edited to reflect how we'd like it posted. Please read:  [url=http://forums.devnetwork.net/viewtopic.php?t=21171]Posting Code in the Forums[/url] to learn how to do it too.[/color]


Hi,
I am sending an order confirmation by following code:

Code: Select all

<?php
@mail("my_email@gmail.com ", "ORDER CONFIRMATION",
"
ORDER INSERTED FROM $_SESSION[textfield]  $_SESSION[textfield2] \r\n
ADRESS $_SESSION[textfield3] NUMBER $_SESSION[textfield4] \r\n
CITY $_SESSION[textfield7] \r\n
TELEPHONE $_SESSION[textfield5] \r\n
EMAIL $_SESSION[textfield6] \r\n
CODE\t   Q\t   UNIT PRICE\t   Total\r\n 
P001\t   $_SESSION[select]\t   (EUR) $c_p001\t   (EUR) $_SESSION[tot1]\r\n
P002\t   $_SESSION[select2]\t   (EUR) $c_p002\t   (EUR) $_SESSION[tot2]\r\n
P003\t   $_SESSION[select3]\t   (EUR) $c_p003\t   (EUR) $_SESSION[tot3]\r\n
P004\t   $_SESSION[select4]\t   (EUR) $c_p004\t   (EUR) $_SESSION[tot4]\r\n
P005\t   $_SESSION[select5]\t   (EUR) $c_p005\t   (EUR) $_SESSION[tot5]\r\n
TOTAL ORDER (EUR) $_SESSION[totale_ordine]"

,"From: MY_SYTE");
?>
When I receive the email, the values corresponding to $_SESSION[tot2], $_SESSION[tot3], $_SESSION[tot4] and $_SESSION[tot5] are not displayed..... all the other values are displayed without problem... what is it wrong? thanks


feyd | Please use

Code: Select all

,

Code: Select all

and [syntax="..."] tags where appropriate when posting code. Your post has been edited to reflect how we'd like it posted. Please read:  [url=http://forums.devnetwork.net/viewtopic.php?t=21171]Posting Code in the Forums[/url] to learn how to do it too.[/color]

Posted: Tue Mar 20, 2007 6:04 pm
by Chris Corbyn
session_start() hasn't been called?

Posted: Tue Mar 20, 2007 6:13 pm
by abeterosso
session_start() hasn't been called?

yes!

Posted: Thu Mar 22, 2007 2:10 am
by abeterosso
...any advices?

Posted: Thu Mar 22, 2007 2:12 am
by dude81
use session_start(); on the top of the file like this

Code: Select all

<?php
session_start();
@mail("my_email@gmail.com ", "ORDER CONFIRMATION", 
" 
ORDER INSERTED FROM $_SESSION[textfield]  $_SESSION[textfield2] \r\n 
ADRESS $_SESSION[textfield3] NUMBER $_SESSION[textfield4] \r\n 
CITY $_SESSION[textfield7] \r\n 
TELEPHONE $_SESSION[textfield5] \r\n 
EMAIL $_SESSION[textfield6] \r\n 
CODE\t   Q\t   UNIT PRICE\t   Total\r\n 
P001\t   $_SESSION[select]\t   (EUR) $c_p001\t   (EUR) $_SESSION[tot1]\r\n 
P002\t   $_SESSION[select2]\t   (EUR) $c_p002\t   (EUR) $_SESSION[tot2]\r\n 
P003\t   $_SESSION[select3]\t   (EUR) $c_p003\t   (EUR) $_SESSION[tot3]\r\n 
P004\t   $_SESSION[select4]\t   (EUR) $c_p004\t   (EUR) $_SESSION[tot4]\r\n 
P005\t   $_SESSION[select5]\t   (EUR) $c_p005\t   (EUR) $_SESSION[tot5]\r\n 
TOTAL ORDER (EUR) $_SESSION[totale_ordine]" 

,"From: MY_SYTE"); 
?>

Posted: Thu Mar 22, 2007 3:19 am
by abeterosso
use session_start(); on the top of the file like this
session_start() has been called properly on the top of my page.... I do not post all the code on my page....

Posted: Thu Mar 22, 2007 3:34 am
by dude81
Ok, I see your problem now

Code: Select all

<?php 
session_start(); 
@mail("my_email@gmail.com ", "ORDER CONFIRMATION", 
" 
ORDER INSERTED FROM ' ".$_SESSION['textfield']." '  '".$_SESSION['textfield2']." '. ' \r\n '
?>
something of this sort. Add the php variables to the strings with dot(.) . Also use quotes for the session indices or keys.

Posted: Thu Mar 22, 2007 3:41 am
by volka
try

Code: Select all

error_reporting(E_ALL);
ini_set('display_errors', true);

echo '<pre>Session: '; var_export($_SESSION); echo "</pre>\n";
$fields = array(
		'textfield','textfield2','textfield3','textfield4','textfield7','textfield5','textfield6',
		'select','tot1','select2','tot2','select3','tot3','select4',
		'tot4','select5','tot5','totale_ordine'
	);
foreach($fields as $f) {
	if (!isset($_SESSION[$f])) {
		echo 'not set: ', $f, "<br />\n";
	}
}

$ordertext = 
	"ORDER INSERTED FROM $_SESSION[textfield]  $_SESSION[textfield2] \r\n" .
	"ADRESS $_SESSION[textfield3] NUMBER $_SESSION[textfield4] \r\n" .
	"CITY $_SESSION[textfield7] \r\n" .
	"TELEPHONE $_SESSION[textfield5] \r\n" .
	"EMAIL $_SESSION[textfield6] \r\n" .
	"CODE\t   Q\t   UNIT PRICE\t   Total\r\n" .
	"P001\t   $_SESSION[select]\t   (EUR) $c_p001\t   (EUR) $_SESSION[tot1]\r\n" .
	"P002\t   $_SESSION[select2]\t   (EUR) $c_p002\t   (EUR) $_SESSION[tot2]\r\n" .
	"P003\t   $_SESSION[select3]\t   (EUR) $c_p003\t   (EUR) $_SESSION[tot3]\r\n" .
	"P004\t   $_SESSION[select4]\t   (EUR) $c_p004\t   (EUR) $_SESSION[tot4]\r\n" .
	"P005\t   $_SESSION[select5]\t   (EUR) $c_p005\t   (EUR) $_SESSION[tot5]\r\n" .
	"TOTAL ORDER (EUR) $_SESSION[totale_ordine]";

mail("my_email@gmail.com ", "ORDER CONFIRMATION", $ordertext, "From: MY_SYTE");
and post the relevant output.

Posted: Thu Mar 22, 2007 5:41 pm
by abeterosso
...problem is still present :?

this is the body of the email I receive:
ORDER INSERTED FROM ' Tina ' ' Turner '

ADRESS ' Square Plaza ' NUMBER ' 3333 '

CITY ' Honolulu '

TELEPHONE ' 34343434343434 '
- Hide quoted text -

EMAIL ' emailaddress@email.com '

Code Q Price Total

P001 ' 4 ' (EUR) 1000 (EUR) ' 4000 '

P002 ' 5 ' (EUR) 2000 (EUR) ' '

P003 ' 3 ' (EUR) 3000 (EUR) ' '

P004 ' 2 ' (EUR) 4000 (EUR) ' '

P005 ' 1 ' (EUR) 5000 (EUR) ' '

TOTAL ORDER (EUR) ' 36000 '

Posted: Thu Mar 22, 2007 5:52 pm
by volka
...and what does my script version print?

Posted: Thu Mar 22, 2007 5:59 pm
by feyd
The data is there because those single quotes aren't in the original string.

Posted: Thu Mar 22, 2007 6:03 pm
by abeterosso
...and what does my script version print?
...my previous reply shows you the result of your scritp....

Posted: Thu Mar 22, 2007 6:28 pm
by abeterosso
I tried many times this evening to send email by my original script....

since 15 minutes my original script works well and the problem is not more present!!!

can a web server go crazy sometimes?

THANK YOU very much for your assistance..

Posted: Thu Mar 22, 2007 6:32 pm
by feyd
sounds like a caching problem, maybe.

Posted: Thu Mar 22, 2007 6:44 pm
by RobertGonzalez
Just for cleanliness sake, you could do something like...

Code: Select all

<?php
$sendto = 'my_email@gmail.com';
$sendsubject = 'ORDER CONFIRMATION';
$sendmessage = ''; 
$sendmessage .= "ORDER INSERTED FROM {$_SESSION['textfield']}  {$_SESSION['textfield2']}\n";
$sendmessage .= "ADRESS {$_SESSION['textfield3']} NUMBER {$_SESSION[textfield4]}\n";
$sendmessage .= "CITY {$_SESSION['textfield7']}\n";
$sendmessage .= "TELEPHONE {$_SESSION['textfield5']}\n";
$sendmessage .= "EMAIL {$_SESSION['textfield6']}\n";
$sendmessage .= "CODE\t   Q\t   UNIT PRICE\t   Total\n";
$sendmessage .= "P001\t   {$_SESSION['select']}\t   (EUR) $c_p001\t   (EUR) {$_SESSION['tot1']}\n";
$sendmessage .= "P002\t   {$_SESSION['select2']}\t   (EUR) $c_p002\t   (EUR) {$_SESSION['tot2']}\n";
$sendmessage .= "P003\t   {$_SESSION['select3']}\t   (EUR) $c_p003\t   (EUR) {$_SESSION['tot3']}\n";
$sendmessage .= "P004\t   {$_SESSION['select4']}\t   (EUR) $c_p004\t   (EUR) {$_SESSION['tot4']}\n";
$sendmessage .= "P005\t   {$_SESSION['select5']}\t   (EUR) $c_p005\t   (EUR) {$_SESSION['tot5']}\n";
$sendmessage .= "TOTAL ORDER (EUR) {$_SESSION['totale_ordine']}";
$sendheaders = "From: me@mymail.com";

if (!mail($sendto, $sendsubject, $sendmessage, $sendheaders))
{
    echo 'There was a problem sending the message.';
}
else
{
    echo 'Everything seems ok.';
}
?>