non invio mail da locale

nephilim89

Utente Attivo
24 Mar 2010
64
5
0
ciao!ho problemi col mio script per l'invio mail.i dati vengono presi da un form:
codice PHP:

if (isset($_POST['a']))
$dest = $_POST['a'];
else if(isset($_POST['cc']))
$dest = $_POST['cc'];

$obj = $_POST['obj'];
$msg = $_POST['msg'];
$from = $_POST['from'];
$data = date('r');

$mail=<<<MAIL
--asefawsd121213
content-type:text/plain

{$msg}

--asefawsd121213--

MAIL;

$headers=<<<HD
from:{$from}
date: {$data}
content-type: multipart/mixed;
boundary="asefawsd121213"
MIME-Version:1.0
x-priority:2

HD;



if (mail ($dest,$obj,$mail,$headers))
echo "inviato";
else
echo "non inviato";


l'errore è:

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()

sono in locale
 
apri php.ini e inserisci i dati di server SMTP e email, ad esempio:
PHP:
[mail function]
; For Win32 only.
SMTP = mail.libero.it
smtp_port = 25

; For Win32 only.
sendmail_from = [email protected]
poi riavvia Apache e riprova
 
ciao
invece di modificare php.ini puoi usare la classe phpmailer

PHP:
<?
require_once("class.phpmailer.php");//richiamo la classe
$mail = new PHPMailer();//creo un oggetto PHPmailer e setto le cariabile
$mail->IsSMTP();  // attiva l'invio tramiteSMTP
$mail->Host     = "smtp.serverposta.it"; // indirizzo smtp posta in uscita
//ecc......

sempre se il tuo server in uscita accetti
 
eliox nel php.ini ho messo out.alice.it e mi da questo:
Warning: mail() [function.mail]: SMTP server response: 553 <administrator> Invalid mail address, must have a domain part in ...

alice è la mia linea,però (non so se c'entra) non mando email direttamente dal pc,uso caselle online tipo gmail o yahoo.
nel commento del php.ini c'è scritto for win32 only.io ho w7 a 64 bit.cambia qualcosa?
 
non è che hai indicato il server smtp dove invece andava inserita la mail?
 
ciao
dimenticavo, a parziele correzione dela mia risposta all'utilizzo della classe phpmailler:
necessita il file class.smtp.php.

si peuò trovare in internet,
ma se a qualcuno serve lo posto.
 
ciao
in locale faccio così
PHP:
<?php
//.....
		require "phpmailler/class.phpmailer.php";//richiamo la classe
		$Emailmessaggio = new PHPmailer();
		//e la instanzio
		$Emailmessaggio->SetLanguage('it','language/'); //messo italiano, ma la scelta è vasta
		//per inviare da locale *** INIZIO*****
		$Emailmessaggio->IsSMTP();                                   // send via SMTP
		$Emailmessaggio->Host     = "smtp.pinco_pallo.it"; // SMTP servers
		//se guardi su otlook (o simile) ricavi il tuo smtp della psta in uscita
		$Emailmessaggio->SMTPAuth = true;     //SMTP autentificazione
		$Emailmessaggio->Username = "il_tuo_user";  // SMTP username
		$Emailmessaggio->Password = "xYz"; // SMTP password
		//per inviare da locale *** FINE*****
		$Emailmessaggio->IsHTML(true); // invio l'email in formato HTML
		$Emailmessaggio->FromName= $nome;
		$Emailmessaggio->From=$email_mittente;
		$Emailmessaggio->AddAddress($destinatario);
		$Emailmessaggio->Subject=$oggetto;
		$Emailmessaggio->Body=$invio_il_testo;
		//----invio l'email-------------------------------------------
		if(!$Emailmessaggio->Send()){ //errore di trasmissione
  			$messaggio_OK_KO="<h2>ERRORE DI TRASMISSIONE, riprova più tardi</h2>";
		}else{ //invio avvenuto
  			$messaggio_OK_KO="<h1>EMAIL CORRETTAMENTE INVIATA</h1>";
		}//fine if-else invio
}//fine if letto submit
//........
?>
mentre in remoto commento le parte smtp
PHP:
<?php
//.....
		require "phpmailler/class.phpmailer.php";//richiamo la classe
		$Emailmessaggio = new PHPmailer();
		//e la instanzio
		$Emailmessaggio->SetLanguage('it','language/'); //messo italiano, ma la scelta è vasta
		//per inviare da locale *** INIZIO*****
		/*
		$Emailmessaggio->IsSMTP();                                   // send via SMTP
		$Emailmessaggio->Host     = "smtp.pinco_pallo.it"; // SMTP servers
		//se guardi su otlook (o simile) ricavi il tuo smtp della psta in uscita
		$Emailmessaggio->SMTPAuth = true;     //SMTP authenticatione
		$Emailmessaggio->Username = "il_tuo_user";  // SMTP username
		$Emailmessaggio->Password = "xYz"; // SMTP password
		//per inviare da locale *** FINE*****
		*/
		$Emailmessaggio->IsHTML(true); // invio l'email in formato HTML
		$Emailmessaggio->FromName= $nome;
		$Emailmessaggio->From=$email_mittente;
		$Emailmessaggio->AddAddress($destinatario);
		$Emailmessaggio->Subject=$oggetto;
		$Emailmessaggio->Body=$invio_il_testo;
		//----invio l'email-------------------------------------------
		if(!$Emailmessaggio->Send()){ //errore di trasmissione
  			$messaggio_OK_KO="<h2>ERRORE DI TRASMISSIONE, riprova più tardi</h2>";
		}else{ //invio avvenuto
  			$messaggio_OK_KO="<h1>EMAIL CORRETTAMENTE INVIATA</h1>";
		}//fine if-else invio
}//fine if letto submit
//........
?>
credo (ma non sono sicuro) che in remoto sul tuo sito non ci voglia l'smtp (al massimo prova)

p.s.
nota per alex
se su libero ci vuole l'autentificazione guarda le righe relative all'smtp alle righe

->SMTPAuth = true; //SMTP autentificazione
->Username = "il_tuo_user"; // SMTP username
->Password = "la_tua_pass"; // SMTP password
 
@borgo: Ma infatti il problema non è come effettuare l'autenticazione. È che io sfrutto i server SMTP senza autenticazione perché non mi va di registrarmi solo per avere le credenziali. La scelta migliore è usare un hosting che ti fornisce anche il server SMTP, come Netsons (messaggio subliminale :D).
 
borgo grazie per avermi postato lo script intero. però ti chiedo, usa i dati smtp del php.ini? perchè se cosi fosse siamo punto e a capo. con xp usavo argosoft giusto per i test..
 
ciao
no, uso i dati del mio account di posta.
non so se usi outlook o simile, ma se vai su gli account strumenti->proprietà->server vedi quali sono i dati del tuo account di posta in uscita.
nel mio caso l'account posta in uscita è smtp.fastweb.it, il tuo sarà quello che utilizzi (alice, tiscali...), inoltre trovi anche le password
 

Discussioni simili