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
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
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@tiscali.it
poi riavvia Apache e riprova
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.039
146
63
PR
www.borgo-italia.it
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
 

nephilim89

Utente Attivo
24 Mar 2010
64
5
0
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?
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0

nephilim89

Utente Attivo
24 Mar 2010
64
5
0
no:
PHP:
[mail function]
; For Win32 only.
SMTP = out.alice.it
smtp_port = 25

; For Win32 only.
;sendmail_from = me@example.com
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.039
146
63
PR
www.borgo-italia.it
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.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.039
146
63
PR
www.borgo-italia.it
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
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0

alessandro1997

Utente Attivo
6 Ott 2009
5.303
1
0
22
Roma
alessandro1997.netsons.org
@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).
 

nephilim89

Utente Attivo
24 Mar 2010
64
5
0
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..
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.039
146
63
PR
www.borgo-italia.it
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