Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 18 su 18

Discussione: Headers per email

  1. #11
    Utente di HTML.it L'avatar di *pragma
    Registrato dal
    Sep 2001
    Messaggi
    1,087
    chiedo scusa se m'intrometto con una richiesta non inerente con quella di carlostefano, ma non riesco assolutamente a spedire mail in locale nel senso che se non sono connesso ad internet non da alcun tipo di errore, se tento di spedire veramente mi restituisce
    Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()
    ed in php.ini sono settati correttamente sia SMTP = localhost che smtp_port = 25 e lo stesso risulta con phpinfo().
    Lo chiedo a voi e non apro un nuovo 3D perchè l'ho già fatto, ma nessuno mi ha mai dato una risposta.
    Chiedo nuovamente scusa
    grazie

  2. #12
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    6,034
    ciao
    i principali headers (testati con successo in locale e online) da aggiungere alla funzione mail possono essere:

    codice:
    $header = "From: Nome Mittente <mittente@mittente.tld>\n";
    $header .= "Reply-To: mittente@mittente.tld\n";
    $header .= "X-Mailer: PHP/".phpversion()."\n";
    $header .= "MIME-Version: 1.0\n"; 
    $header .= "Content-type: text/plain; charset=iso-8859-1\n";
    $header .= "Content-Transfer-encoding: 7bit\n"; 
    mail("destinatario@destinatario.tld","Soggetto","Corpo",$header);

  3. #13
    Sempre nella pagina del manuale php c'è però anche questa nota:


    Il parametro a non può essere un indirizzo nella forma "Qualcosa <qualcuno@example.com>". Il comando di mail non sarebbe in grado di effettuare correttamente il parsing mentre dialoga con il MTA (in particolare sotto Windows).

  4. #14
    Originariamente inviato da meganoide
    ciao
    i principali headers (testati con successo in locale e online) da aggiungere alla funzione mail possono essere:

    codice:
    $header = "From: Nome Mittente <mittente@mittente.tld>\n";
    $header .= "Reply-To: mittente@mittente.tld\n";
    $header .= "X-Mailer: PHP/".phpversion()."\n";
    $header .= "MIME-Version: 1.0\n"; 
    $header .= "Content-type: text/plain; charset=iso-8859-1\n";
    $header .= "Content-Transfer-encoding: 7bit\n"; 
    mail("destinatario@destinatario.tld","Soggetto","Corpo",$header);
    Ciao Meganoide. Grazie...però qui si parla del primo parametro. Non capisco bene perchè ci sia un esempio con il destinatario nella forma "nome <nome@miodominio.it>" se poi nella nota dice che messo così non va bene... e soprattutto non capisco perchè a Linux2004 funziona ed a me no!!
    Puoi fare una prova anche tu?

  5. #15
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    6,034
    se vedi gli esempi su http://it2.php.net/mail noterai che è presente il formato:
    "nome <nome@miodominio.it>"

    A me funziona, provando su Linux

  6. #16
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    6,034
    in più si potrebbe aggiungere anche return-path (se non c'è, viene aggiunto, in automatico, dal mail server) e message-id:

    codice:
    $header = "From: Nome Mittente <mittente@mittente.tld>\n";
    $header .= "Reply-To: mittente@mittente.tld\n";
    $header .= "Return-Path: <mittente@mittente.tld>\n";
    $header .= "X-Mailer: PHP/".phpversion()."\n";
    $header .= "Message-ID: <" . md5(time()) . "@" . $_SERVER['SERVER_NAME'] . ">\n";
    $header .= "MIME-Version: 1.0\n"; 
    $header .= "Content-type: text/plain; charset=iso-8859-1\n";
    $header .= "Content-Transfer-encoding: 7bit\n"; 
    mail("destinatario@destinatario.tld","Soggetto","Corpo",$header);

  7. #17
    Ok,
    allora sembra proprio che il problema sussista usando windows. Nella pagina ci sono anche commenti sullo stesso problema, del tipo:

    In addition to the $to parameter restrictions on Windows (ie. address can not be in "name <user@example.com>" format), the same restrictions apply to the parsed Cc and Bcc headers of the $additional_headers parameter.

    However, you can include a To header in $additional_parameters which lists the addresses in any RFC-2822 format. (For display purposes only. You still need to list the bare addresses in the $to parameter.)

    Quindi in pratica dice di mettere nel primo parametro solo l'indirizzo di posta e nel quarto anche i nomi dei destinatari. Io uso easyphp, che però ho installato su un server windows. Quindi credo che il sistema smtp si poggi sul server windows e non linux.

    C'è un modo per sapere tramite script su che server ci si trovi e programmare così due soluzioni distinte nello script?

  8. #18
    ho risolto con questa simpatica funzioncina:

    codice:
    // Strip names and let mail addresses.
    	protected function stripNames($str_mailNames){
    	
    		if(stripos($_SERVER['SERVER_SOFTWARE'], 'win')){
    
    			$arr_strTo = explode(' ', $str_mailNames);
    			
    			foreach($arr_strTo as $str_value){
    				
    				if(preg_match("#<(.*)>#i", $str_value, $matches)){
    					
    					if(!isset($str_to)){
    						
    						$str_to = $matches[1];
    						
    					}else{
    						
    						$str_to.= ', ' . $matches[1];
    					}
    				}
    			}
    			
    			return $str_to;
    		}
    	}
    Essa riesce ad individuare se si è un server windows o linux ed a comportarsi di conseguenza, togliendo eventualmente i nomi dai destinatari

    Alcune cose non mi sono ancora chiare però
    Qual'è la differenza tra reply-to e returned-path?
    A cosa serve "Content-Transfer-encoding: 7bit\n" per un messaggio privo di allegati?
    il message ID non viene automaticamente impostato dal server?

    Grazie di tutto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.