Domanda

mi viene questo problema:

PHP Warning: mail() [function.mail]: SMTP server response: 550 5.7.1 Unable to relay for chris.mahan@gmail.com in c:\inetpub\wwwroot\mailtest.php on line 12 

da questo script:

<?php
$to = "chris.mahan@gmail.com";
$subject = "test";
$body = "this is a test";

if (mail($to, $subject, $body)){
    echo "mail sent";
}
else {
    echo "problem";
}
?>

sezione da php.ini sul server:

[mail function]
; For Win32 only.
SMTP = server.domain.com; for Win32 only
smtp_port = 25

; For Win32 only.
sendmail_from = support@domain.com
; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path =

(nota che "server" e "dominio" si riferiscono accuratamente al server e al nome di dominio effettivi)

In IIS, SMTP è in esecuzione.Sotto "Access" scheda, "Relay" pulsante , l'opzione Seleziona quali computer possono eseguire l'inoltro tramite questo server virtuale è impostata su checkbox "only the list below" e sulla lista c'è "127.0.0.1(xxx.xxx.xxx.xxx)" (x's representing actual server IP address).

Il server è in esecuzione Windows Server 2003 Service Pack 2, completamente aggiornato a partire dalle 17:00 del 1° settembre 2008.Presumo che sia in funzione IIS7 (come controllare?).

Qualche idea?

In risposta a Espo:Questa macchina è ospitata in un data center.Non vogliamo utilizzare un account Gmail (lo stiamo facendo, vogliamo allontanarcene).Windows Server 2003 viene fornito con il proprio server SMTP.

Aggiornamento:Secondo il consiglio di Yaakov Ellis, ho eliminato tutte le restrizioni di inoltro e ho aggiunto l'IP del server all'elenco consentito (utilizzando il pulsante DNS inverso fornito) e la cosa ha iniziato a funzionare.

Grazie sia a Espo che a Yaakov per avermi aiutato.

È stato utile?

Soluzione

Prova a rimuovere le restrizioni IP per l'inoltro nel server SMTP e ad aprirlo a tutti gli inoltri.Se funziona quando è impostato, allora sai che il problema ha a che fare con le restrizioni originali.In questo caso, potrebbe trattarsi di un problema DNS o forse è stato elencato l'indirizzo IP sbagliato.

Altri suggerimenti

Stai utilizzando il server SMTP sbagliato.Se intendi inviare e-mail solo al tuo account Gmail, dai un'occhiata alla mia risposta Qui.

Se devi inviare e-mail anche ad altri account, chiedi al tuo ISP i dettagli SMTP.

MODIFICARE:Penso che sia sempre meglio usare il server SMTP dell'ISP poiché (dovrebbero) avere persone che monitorano le code di posta, controllano gli exploit e aggiornano il software di posta.Se la tua azienda sviluppa applicazioni web, è quasi sempre meglio restare fedele a ciò che fai e lasciare che siano altri a fare il loro lavoro (ad esempio, gestire i server di posta).

Se per qualche motivo desideri ancora utilizzare il tuo server SMTP locale, la prima cosa sarebbe escludere la parte php.Prova a seguire KB153119 e quindi controlla la presenza di errori nel registro SMTPServer IIS.

EDIT2:L'articolo della Knowledge Base dice che è per Exchange, ma gli stessi comandi vengono utilizzati anche per altri server SMTP (incluso IIS), quindi prova a vedere se riesci a inviare messaggi di posta utilizzando gli esempi dell'articolo.

@Espo:Lo farò con riferimento a KB153119.Grazie.

Informazioni sul server di posta:Ti sento.

Aggiornerò quando scoprirò di più.

@Espo, l'articolo in questione si riferisce ai server Exchange, non al server SMTP IIS7.0.

Dal riassunto:In questo articolo viene descritto come eseguire il Telnet sulla porta 25 su un computer che esegue servizi SMTP (Simple Mail Transfer Protocol) per risolvere i problemi di comunicazione SMTP.Le informazioni contenute in questo articolo, inclusi i messaggi di errore, si applicano solo ai problemi quando si tenta di risolvere i problemi di comunicazione SMTP con server basati su Microsoft Exchange e non sono destinate a scopi generali di risoluzione dei problemi.

Ho avuto lo stesso problema, php 5 su iis6, server 2003.Php falliva sempre quando tentava di usare mail().Sono riuscito a farlo accettare la posta da php modificando le restrizioni di inoltro da "Solo l'elenco seguente" (che è vuoto per impostazione predefinita) a "Tutto tranne l'elenco seguente".Le restrizioni di inoltro sono reperibili nella scheda Accesso nelle schermate delle proprietà dei server SMTP.Ovviamente se il server è aperto a Internet allora bisognerebbe essere più sensibili riguardo a queste restrizioni di inoltro, ma nel mio caso si tratta di un server virtuale su un box di sviluppo.

Spero possa aiutare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top