PDA

View Full Version : [Php] Funzione Mail()


Peter Pan 76
04-05-2005, 16:09
Sto cercando inviare una E-mail mediante la funzione Mail() di Php ma sia su IIS, sia su Apache ho questo errore:

Warning: mail() [function.mail]: SMTP server response: 550 5.7.1 Unable to relay for Indirizzo email in Directory

Qualcuno è a conoscenza di questo problema e ne conosce la soluzione?

PHP Version 5.0.3
Apache version 2.0

cionci
04-05-2005, 18:49
Che server SMTP hai specificato in php.ini ?

Peter Pan 76
08-05-2005, 23:41
Chiedo scusa per il ritardo e ti ringrazio per la risposta.

Ho impostato:

smtp= localhost
smtp_port = 25

cionci
09-05-2005, 01:26
Che server di posta hai sul tuo computer ?

Peter Pan 76
09-05-2005, 12:28
Allora, io utilizzo il Php in locale su Windows utilizzando l'IIS e quindi ho impostato come smtp localhost. Vedendo che così non riuscivo ho installato Apache 2.0, ma anche in questo caso l'errore non è cambiato.
Nel frattempo ho letto un pò in giro e mi è stato detto di installare un server di posta ausiliario: ho scaricato postcast ma prima di installarlo vorrei verdere se è possibile farlo funzionare senza aggiungere altri programmi.

cionci
09-05-2005, 14:41
Ma non puoi usare il server SMTP del tuo provider ?!?!? Mi sembra la cosa più logica...

Peter Pan 76
09-05-2005, 17:28
Credo di essermi spiegato male.

Io ho fatto un sito e ad un certo punto dovrei mandare una comunicazione di registrazione all'utente mediante una e-mail.
Prima di pubblicarlo vorrei provare la correttezza dell'invio di queste e-mail sfruttando l'IIS di Windows (come facevo quando utilizzavo l'Asp) visto che non ho ancora un provider e quindi non posso sfruttare il suo smtp.

Mi sembra di aver capito che questo utilizzando un sistema linux è fattibile, un pò meno utilizzando un sistema Windows.
Volevo solo sapere se qualcuno è riuscito ad inviare e-mail in locale e come.

D4rkAng3l
09-05-2005, 17:31
da quel poco che ho capito te stai cercando di inviare una mail con un server smtp locale che non è presente sul computer...quindi usane uno esterno o al massimo installane uno ma non sò quanto ti convenga installarlo...scusate se ho detto qualche cazzata

cionci
09-05-2005, 17:44
Prima di pubblicarlo vorrei provare la correttezza dell'invio di queste e-mail sfruttando l'IIS di Windows (come facevo quando utilizzavo l'Asp) visto che non ho ancora un provider e quindi non posso sfruttare il suo smtp.
Sfrutta l'SMTP del tuo provider nel senso che se hai una ADSL Alice puoi usare l'SMTP di Alice per inviare le email di prova... Per l'SMTP in locale (quello di IIS) probabilmente è solo un problema di autorizzazioni...ora non ce l'ho sotto mano, ma se vai nelle proprietà del servizio non è difficile impostare le autorizzazioni...

Peter Pan 76
09-05-2005, 18:32
Perfetto! Provato con Libero e funziona perfettamente.
Però adesso vorrei fare il pignolo:

quello che mi piaceva dell'Asp era che si potevano mandare delle email di prova sfruttando l'IIS di Windows. Conoscete se è possibile farlo anche con il Php sempre utilizzando l'IIS?

cionci
09-05-2005, 18:37
Come ti ho scritto sopra...devi solo configurare il servizio SMTP presente in IIS6...credo che tu debba abilitare la consegna se la connessione ariva dall'indirizzo 127.0.0.1...

Peter Pan 76
09-05-2005, 20:05
Ho risolto!!!!!

Se interessa a qualcuno ho fatto in questa maniera:

- sono andato in Pannello di Controllo->Strumenti di amministrazione->IIS
- da lì sono entrato in "Server virtuale Smtp predefinito"
- ho selezionato Proprietà e poi Accesso
- sono entrato nello spazio dove mi diceva "Limitazioni di inoltro" ed ho cliccato su "Inoltro"
- quì ho cambiato la selezione "quali computer sono autorizzati all'inoltro" e l'ho impostato su "tutti tranne quelli nell'elenco" ed il gioco è fatto

In pratica impedivo a qualsiasi computer ad inviare e-mail!

cionci
09-05-2005, 23:05
Ho risolto!!!!!
- quì ho cambiato la selezione "quali computer sono autorizzati all'inoltro" e l'ho impostato su "tutti tranne quelli nell'elenco" ed il gioco è fatto

In pratica impedivo a qualsiasi computer ad inviare e-mail!
Perfetto...il tuo computer è diventato un Open Relay :D
Come ti dicevo autorizza solo 127.0.0.1 a spedire...

Peter Pan 76
10-05-2005, 17:30
Giusto, fatto e tutto funziona bene!!!!

Il Mod ha sempre ragione! :D

danielix
27-10-2008, 10:48
ciao ragazzi,
io sono allo stallo.

con iis7 installato su vista business non riesco a trovare ciò che dice Peter Pan 76- sono andato in Pannello di Controllo->Strumenti di amministrazione->IIS
- da lì sono entrato in "Server virtuale Smtp predefinito"
- ho selezionato Proprietà e poi Accesso
- sono entrato nello spazio dove mi diceva "Limitazioni di inoltro" ed ho cliccato su "Inoltro"
- quì ho cambiato la selezione "quali computer sono autorizzati all'inoltro" e l'ho impostato su "tutti tranne quelli nell'elenco" ed il gioco è fatto

In pratica impedivo a qualsiasi computer ad inviare e-mail!

dovrei inviare mail da un file in locale e l'smtp è mail.191.it
ma non riesco a farlo,

errore
Warning: mail() [function.mail]: SMTP server response: 550 5.7.1 Unable to relay for account@sito.it in C:\inetpub\wwwroot\sito\invia-ordine.php on line 259


la linea 259 è

if(mail($destinatario, $oggetto, $messaggio, $headers)){


mi potete aiutare? sono ormai 3 giorni che ammattisco :muro:

grazie

cionci
27-10-2008, 11:19
Se non sbaglio l'smtp mail.191.it necessita del autenticazione per poter inviare mail.

http://email.about.com/od/emailprogrammingtips/qt/et073006.htm

danielix
27-10-2008, 13:28
in base alle tue indicazioni ho provato la strada del phpmailer

e ho trovato questo suggerimento (http://forum.cached.it/forum/t594-%5Bphp%5D-Inviare-una-mail()-formato-html.html)

la mail parte ma, quando la ricevo, il testo html non è formattato.

:confused:

ho provato a fare questo ma senza risultato

$mail->Body .= "MIME-Version: 1.0\n";

$mail->Body .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";

$mail->Body .= "Content-Transfer-Encoding: 7bit\n\n";

cionci
27-10-2008, 14:13
Metti uno \r prima di ogni \n.

danielix
27-10-2008, 15:58
sono passato da phpmailer e avevo dimenticato la prima di queste tre righe


$mail->IsHTML(true);

// Messaggio

$mail->Body = "


tutto è bene ciò che finisce bene no?

grazie!

cionci
28-10-2008, 10:07
Ottimo ;)