Newsgroup: it.comp.lang.delphi
Titolo: Smtp Auth

Ciao a tutti!
Uso il componente IdSmtp di Indy per inviare email e con alcuni server
smtp ho questo problema: viene visualizzato il messaggio di errore "Use
SMTP AUTH".
Le proprietà che ho settato sono:
IdSMTP1->ReadTimeout = 13000;
IdSMTP1->Port = 25;
IdSMTP1->Host = mailserver;
IdSMTP1->HeloName = mailserver;
Questo errore mi capita solo su alcuni server smtp. Come posso fare?
Grazie mille in anticipo!!

 
Ciao,
   ti capita solo con alcuni server SMTP perche' alcuni server SMTP 
*richiedono* l'autenticazione. SPesso non e' cosi', in quanto sembra che 
la cosa pericolosa sia rubare della posta a qualcuno, non chiedere a un 
postino qualsiasi di spedirti una lettera.
Comunque, nel caso specifico, devi valorizzare le proprieta' "Username" 
e "Password" come segue (dalla guida):
---
Username:
Specifies the user account for the SMTP server.
property Username;
Description
Username is a String property that specifies the user name used to log 
on to the SMTP Server. Username and Password are used, in Authenticate, 
to perform account verification when AuthenticationType is atLogin.
---
Quindi:
with myIdSmpt do
begin
	AuthenticationType := atLogin;
	Username := 'boh';
	Password := 'mah';
	if not Authenticate then
		raise Exception.Create('SMTP: User autenthication failed!');
end;
Ciao,
baba.

Baba,
ho provato col tuo consiglio ma così sembra peggio di prima, perchè
adesso l'invio non funziona. Siccome sono pochi i server che richiedono
l'AUTH, quando devo collegarmi a quelli che non lo richiedono (che sono
molti) viene mostrato questo errore:
EIdProtocolReplyError with message "AUTH command unavailable".
Praticamente sembra che debba sapere in anticipo se usare l'AUTH o
no... Il codice che ho usato è questo:
IdSMTP1->AuthenticationType = atLogin;
IdSMTP1->Username = "boh";
IdSMTP1->Password = "mah";
try
{
        IdSMTP1->Authenticate();
}
catch(...)
{
}
try
{
        IdSMTP1->Send(IdMessage1);
}
catch(...)
{
}
Come posso fare per risolvere questo problema?

carmelo ha scritto:

Ascolta, questo e' quello che faccio in un programma, attualmente in 
produzione presso numerosi clienti, che spedisce mail:
<snip>
OutServer := TIdSMTP.Create(nil);
OutServer.Host := localIni.ReadString(<indirizzo server SMTP>);
try
   OutServer.Connect;
finally
   logMessage('Errore bla bla');
end;
try
   OutServer.Send(myMessage);
finally
   logMessage('Errore bla bla');
end;
</snip>
1) Se tu invochi il metodo Authenticate su un server SMTP che non lo 
richiede lui ti risponde PICCHE. Prova a fare una telnet simulando le 
attivita' del tuo programma e dovresti avere il riscontro.
2) Il pezzo di codice che ti ho scritto sopra fa parte di un programma 
in produzione che spedisce le mail, spesso utilizzando il semplice 
servizio SMTP installato con IIS su qualsiasi PC con Windows 2000 o XP o 
Server 2003. Questo per dirti che basta impostare come "Host" una 
macchina che abbia il servizio SMTP attivo *e che sia connessa ad 
internet*, non devi necessariamente utilizzare un determinato server SMTP.
HTH.
Ciao,
baba.

- un utente X del dominio 
dominio1.it
 vuole spedire un messaggio di
posta elettronica ad un utente Y del 
dominio2.it
- l'utente del dominio 
dominio1.it
 contatta il server smtp del
dominio1.it
, il quale provvede ad inviare l'email
Io so che i server smtp funzionano così:
1) il server smtp del dominio 
dominio1.it
 esegue una Dns Mx Query sul
dominio2.it
, il quale risponde fornendo l'indirizzo del proprio server
di posta
2) il server smtp del dominio 
dominio1.it
 si connette al server di
posta del 
dominio2.it
 fornito dalla query
3) l'email viene inviata all'utente Y del 
dominio2.it
Vorrei realizzare un server smtp, quindi dovrei riuscire a fare tutte
le suddette cose. Sono riuscito a farlo nel caso dei server che non
richiedono autenticazione, come ad esempio 
tiscali.it
. Però non sono
riuscito a farlo per quelli che richiedono autenticazione, come ad
esempio quello di 
libero.it
.
Qualche idea?

 ha scritto nel messaggio 
news:1143018197.0...@u72g2000cwu.googlegroups.com...
Ciao a tutti!
Uso il componente IdSmtp di Indy per inviare email e con alcuni server
smtp ho questo problema: viene visualizzato il messaggio di errore "Use
SMTP AUTH".
Le proprietą che ho settato sono:
IdSMTP1->ReadTimeout = 13000;
IdSMTP1->Port = 25;
IdSMTP1->Host = mailserver;
IdSMTP1->HeloName = mailserver;
Questo errore mi capita solo su alcuni server smtp. Come posso fare?
Grazie mille in anticipo!!
Dipende dal server SMTP che usi. In teoria dovresti usare quello relativo 
alla connessione Internet. Lo stesso identico problema lo vedo con l'outlook 
express quando vai ad usare piu email.
Giorgio 

Lo so che si dovrebbe usare quello relativo alla connessione Internet,
ma siccome dovrei sviluppare un server smtp non mi pare proprio il
caso. Devo costruire un server che lavori come gli altri, cioè
basandosi sulle dns query e collegandosi ai relativi mail-server...

postino qualsiasi di spedirti una lettera.
E mi sembra anche giusto.  E' molto più importante che a leggere la
mia posta sia solo e soltanto io, ma che possa spedire usando gran
parte delle cassette postali in circolazione.. ;-)

Vorrei realizzare un server smtp[...]
E allora perché ti basi su TIdSMTP ?

basandosi sulle dns query e collegandosi ai relativi mail-server...
Se non l'hai ancora costruito e messo in attivita' non capisco di che ti 
meravigli!
Giorgio

Come mai mi meraviglio? Che domanda... sto cercando di farmi aiutare a
trovare una soluzione. Non lo devo ancora costruire, l'ho già fatto ma
sto avendo dei problemi nel farlo collegare ad alcuni server smtp, che
richiedono autenticazione.