Newsgroup: it.lavoro.professioni.webmaster
Titolo: Problemi con spedizioni email con php

Perche' la funzione seguente non mi
permette di spedire le mail?
function send_mail($fromname, $fromaddress, $toname, $toaddress, $subject, $message)
{
   $headers  = "MIME-Version: 1.0\n";
   $headers .= "Content-type: text/plain; charset=iso-8859-1\n";
   $headers .= "X-Priority: 3\n";
   $headers .= "X-MSMail-Priority: Normal\n";
   $headers .= "X-Mailer: php\n";
   $address=$fromaddress;
   $newaddress="<\n".$address."\n>";
   $from="From: "."\"".$fromname."\" ";
   $headers .=$from;
   $headers .=$newaddress."\r\n";
   return mail("$toaddress", "$subject", "$message", "$headers");
}
Ho aggiunto le virgolette agli argomenti di mail, perche' ho visto un
esempio su 
html.it
, ma con o senza i messaggi non arrivano a destinazione.
Grazie per l'aiuto

Lampa Dario wrote:

A mio avviso manca il progamma per spedire, che non ricordo ma in linux 
dovrebbe essere /bin/mail

 dovrebbe essere /bin/mail
No, il programma mail esiste, l'ho provato da riga di comando.
Frank

Lampa Dario wrote:

Intendevo manca da essere richiamato nel tuo programmino ed inviati i dati.
In alternativa non ne puoi trovare uno già fatto?
Se non erro ne ho usato uno in php e flash per un sito.

 Se non erro ne ho usato uno in php e flash per un sito.
Io ho provato anche con altri script, ma lo stesso non funziona. Ma e'
strano, avevo provato la funzione send_mail di questo script qualche
settimana fa, e mi inviava correttamente i messaggi. Quindi non so che
fare. HO anche usato un altro script che ho trovato sul sito di php:
<?
 class clsMail 
 {
    var $to;
    var $from;
    var $cc;
    var $bcc;
    var $subject;
    var $message;
    var $contentType;
    function clsMail() //init
    {
        $this->to        =    "";
        $this->from    =    "";
        $this->cc    =    "";
        $this->bcc    =    "";
        $this->subject    =    "";
        $this->message    =    "";
        $this->contentType = "html"; // text, html
    }
    function isemail($email)
    {
        // regx to test for valid e-mail adres
        $regex = '^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]{2,})+$';
        if (eregi($regex, $email)) return true;
        else return false;
    }
    function send()
    {
        // check if e-mail adresses are valid.
        if (!clsMail::isemail($this->to)) die('ERROR: Invalid To e-mail address');
        if (!clsMail::isemail($this->from)) die('ERROR: Invalid From e-mail asdress');
        if (!clsMail::isemail($this->cc) && !$this->cc=="") die('ERROR: Invalid CC e-mail address');
        if (!clsMail::isemail($this->bcc) && !$this->bcc=="") die('ERROR: Invalid BCC e-mail addresd');
        // To send HTML mail, you can set the Content-type header. html is the default
        $headers  = "MIME-Version: 1.0\r\n";
        if ($this->contentType=="html") $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
        else $headers .= "Content-type: text/plain; charset=us-ascii\r\n";
        // additional headers  for From, Cc and Bcc
        $headers .= "From: ".$this->from."\r\n";
        if (!$this->cc=="")  $headers .= "Cc: ".$this->cc."\r\n";
        if (!$this->bcc=="") $headers .= "Bcc: ".$this->bcc."\r\n";
        // send the e-mail
        return mail($this->to, $this->subject, $this->message, $headers);
    }
 }
 ?>
che ho poi richiamato con
 $mail = new clsMail();
 $mail->to=$Emailamico;
 $mail->from=$Tuaemail;
 $mail->subject="Leggi l'articolo ".$Titolo;
  $messaggio="Inviato da ". $Tuonome."\n";
$messaggio.="Email". $Tuaemail."\n";
$messaggio.="Ciao, ho trovato molto interessante l'articolo ";
$messaggio.='<a href="
www.dominio.it/articolo.php?IdArticolo='.$IdArticolo.
'"'.$Titolo.'</a>';
$mail->message=$messaggio;
echo $mail->send()
E lo stesso non funziona...
Francesco


#     Licensed under the GNU GPL.
#     
http://tangible.new21.org
 
############################################################################
#     Installation
############################################################################
#    -flash movie
#     1.set the variable "cgilocation" at frame 1 to identify the 
location of
#		this script on 	your server if you can.
#     2.if you are not able to edit the flash movie, use following html 
script.
#         You should replace both [value = "http://..."] and [src = 
"http://.."] with
#			the location of swf file on your server.
#
#	    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
#	 
codebase="
http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0
" 
#	      width="260" height="200" align="middle">
#            <param name=movie 
value="
http://your_domain/shflashform.swf?cgilocation=http://your_domin/shformml.php
">
#            <param name=quality value=high>
#	     <param name=SCALE value=noborder>
#            <embed 
src="
http://your_domain/shflashform.swf?cgilocation=http://your_domin/shformml.php
" 
#			   quality=high
#			 
pluginspage="
http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash
" 
type="application/x-shockwave-flash"
#		           width="260" height="200" scale="noborder" align="middle">
#           </embed>
#          </object>
#	
# -cgi file
#
#	$SENDMAIL 	identifies the location of the send mail program on
#			your server.  Verify this with your webmaster or isp.
#	@auth_domain 	identifies the URL's that are authorized to use this
#			CGI Script.  if you don't care of it or want to disable it,
#			simply comment &authorize or delete &authorize
#			you can have more than 1 auth_domains. Separate them with ",";
#	$to 		modify it to your email address or the email where the form data 
will be sent.
#	$subject 	the subject of the email.
#######################################################################
$auth_domain = 
array("
xxxxx.com
","
xxxxx.it
","
www.xxxxxx.com
","
www.xxxxx.it
");
$to       = "_
m_...@post.com
";
$subject  = "Hai ricevuto una Email da un visitatore del tuo sito.";
if (isset($HTTP_REFERER)) {
	foreach ($auth_domain as $line) {
		if (eregi($line,$HTTP_REFERER)) {
			$check_url = 1;	   	
			continue;
		}
	}
}else{
	$check_url = 1;
}
if ($check_url != 1) {
	echo "errore=questo invio form non ha il permesso per il tuo sito";
	exit;
}
$date = getdate(time());
$date = sprintf("%s %s %s %s:%s:%s", 
$date["mday"],$date["month"],$date["year"],$date["hours"],$date["minutes"],$date["seconds"]);
$from = "$name<$email> ";
$header =  "Da:$from\n";
$header .= "Rispondi a:$from\n";
$body = "I commenti seguenti sono stati inviati da: \n";
$body .= "$name on $date\n\n";
$body .= 
"---------------------------------------------------------------\n\n";
$body .= "$comments\n\n";
$body .= 
"---------------------------------------------------------------\n\n";
$body .= "<REMOTE HOST> $REMOTE_HOST\n";
$body .= "<REMOTE ADDRESS> $REMOTE_ADDR\n";
$body .= "<USER AGENT> $HTTP_USER_AGENT\n";
 
$header=trim($header);
mail($to, $subject, $body, $header) or die("errore=invio Email fallito");
echo "&error=E-mail inviata regolarmente";

Ti ringrazio per la tua gentilezza. Pero' ho scoperto perche' i miei
script non funzionavano. Avevo postfix disattivato e quindi i messaggi non
vevivano spediti.
Grazie
Francesco