Newsgroup: it.comp.lang.perl
Titolo: Problemi con Mail:Sender

Ciao a tutti,
ho un problema con il modulo Mail::Sender
non riesco a inviare mails a indirizzi del tipo
indirizzo...@host.com
oppure 
indirizzo...@host.com
oppure 
indi...@host.host.com
e cosi via..
qualcuno sa darmi una soluzione a questo problema?
grazie in anticipo
Simone
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

non riesco a inviare mails a indirizzi del tipo
"Non riesco" č un po' poco. Esattamente che cosa fai, che cosa succede, e
perché "non riesci"?
Senza altre informazioni, tutto quello che posso dire č che gli indirizzi
mi sembrano sintatticamente corretti.
Ciao.

Mi spiego meglio:
nella stringa 
$sender->Open({ to => '$email' , subject => "$subject", confirm => 'delivery'
});
se la variabile $email è una email del tipo 
indi...@host.com
 lo script
non dà errori e la mail parte e arriva correttamente.
Invece, con $email = 
indirizzo...@host.com
 e altri casi citati
prima,
o lo script dà questo errore :
Can't use an undefined value as a symbol reference at
/usr/local/lib/perl5/site_perl/5.005/Mail/Sender.pm line 1509.
oppure lo script viene eseguito ma la mail non viene mai ricevuta.
Spero di essermi spiegato..
grazie


Spero di essermi spiegato..
Purtroppo no. Che il messaggio non venga ricevuto, di per sé non dice nulla
(potrebbe dipendere dal server di arrivo), e l'errore che riporti non mi
aiuta, perché evidentemente usi una versione di Mail::Sender diversa dalla
mia (alla riga 1509, nella versione 0.8.10, c'è un commento).
Si tratta di capire che cos'è che fallisce, e purtroppo di cose che possono
fallire ce ne sono tante, oltre al modulo Mail::Sender stesso: la
contrattazione con il server smtp locale, quella del server locale con il
server di arrivo, ecc. I due casi che riporti (errore del modulo e mail non
ricevuta) sono, da questo punto di vista, completamente differenti.
Ciao.

Ho già provato anche a eliminare gli apici:
se non li metto, mi da errore il modulo (tra l'altro anche nel mio modulo
c'è un commento a quella riga quindi non so spiegarmelo)
se li metto lo script non da errori, ma non arriva nessuna mail
grazie lo stesso


 Tutte quelle virgolette non mi sembrano necessarie. [...]
Non sono necessarie soltanto nel caso della chiave 'subject'.
Nel caso di 'confirm' sono necessarie.
Nel caso di 'to' sono dannose, poichè sono singole e quindi impediscono
l'interpolazione, e quindi la mail (assumo) viene inviata all'indirizzo
di posta '$email', interpretato letteralmente.
Ma più che a te sto in realtà rispondendo a Simo_MoX.
ciao,
S.

 'delivery'});
Ciao,
riporto dalla documentazione di Mail::Sender:
Open:
	Returns ref to the Mail::Sender object if successfull.
oppure dovrebbe restituire un codice d'errore (tipo -1, -2, etc) che
sono spiegati nella documentazione. 
Prova a passare "debug => 'sender.log'" come parametro all'Open,
dovrebbe scriverti un log con tutte le operazioni che esegue, così vedi,
quando la mail sembra partire ma non arriva, dov'è l'inghippo.
Ciao,
-- 
+--------+ ASCII ribbon campaign ( )
|  kral  |  - against HTML email  X 
+--------+              & vCards / \

Il problema è che togliendo gli apici all'indirizzo di spedizione, in caso
di email "complesse" il modulo dà errore e la mail non parte.
Il debug non mi aiuta più di tanto..


 Il debug non mi aiuta più di tanto..
Scusa, se la mail sembra partire ma non arriva, c'é qualche problema tra
te (il client) e il server smtp. Sul file di debug c'é il dump delle
comunicazioni tra i due, così puoi vedere ad esempio se il server
rifiuta il mittente o il destinatario, oppure se il metodo di
autenticazione non è corretto.
Come si fa a dire che il debug non aiuta? E' stato ideato appositamente
per aiutare i programmatori! ^__^


>220 mio.smtp ESMTP
in qualsiasi caso lo usi, sia che la mail arrivi effettivamente o no
x questo dico che non è molto utile ^_^
cmq quel problema è parzialmente risolto, il problema grosso è con gli
indirizzi "complessi", che bloccano lo script e causano l'errore del
modulo..da qui non so proprio come sbloccarmi!


 x questo dico che non è molto utile ^_^
Hai un Server SMTP locale, allora?


ne ho 2 , uno sul server in cui lavoro (su cui risiede lo script) e uno
montato su una linea adsl, ma per fare i test uso quello principale, ma
non penso sia un errore di smtp, visto che lo stesso script fatto in php
anzichč perl funziona benissimo.


> 221 xxxxxxx.xxxxxx.xx SMTP Service closing transmission channel
Ora, io non uso il metodo Open di Mail::Sender, ma faccio così:
<CODE>
  my $sender = new Mail::Sender {
    smtp => $smtp_server,
    from => $from,
    debug => 'c:\Essemail.log'
    }
    or ErrMsg( $main, $Mail::Sender::Error );
  $sender->MailMsg(
    {
      to      => $to,
      subject => $subj,
      msg     => $msg,
    }
    or ErrMsg( $main, $Mail::Sender::Error );
</CODE>
Non so che differenza ci sia con l'Open, ma da me funzionano anche gli
indirizzi tipo "
pippo...@prova.it
". Come te anch'io ho un smtp
locale.


A questo punto penso sia un problema di versione del modulo.
Mi diresti che versione usi?
Aggiungo che ho usato il tuo stesso codice, il file di log rimane
miseramente vuoto (a parte la linea già citata) e compaiono una serie di
routine non definite all'interno del modulo.
Oltre al fatto che l'email non parte a causa degli errori.
grazie
Simone


 Simone
Prova così,


di email "complesse" il modulo dà errore e la mail non parte.
Il mio sospetto è che ci sia un errore da tutt'altra parte, e che gli
indirizzi "complessi" non c'entrino per nulla. In ogni caso, la sintassi
corretta è senza apici a destra di =>, nel caso di una variabile (al più,
per pignoleria, si potrebbero mettere nella parte sinistra: 'to' =>
$email). Gli apici devono invece essere usati quando si assegna una
costante: 'confirm' => 'delivery'.
Tutto quello che fa Mail::Sender con il parametro 'to' è espandere
l'eventuale lista di indirizzi presenti: 
sub _prepare_addresses {
  ...
  $self->{$type.'_list'} = [map {s/\s+$//;$_} $self->{$type} =~ 
       /((?:[^"',]+|"[^"]*"|'[^']*')+)(?:,\s*|\s*$)/g];
  ...
}
L'interpretazione dell'istruzione può essere un po' complicata, ma quello
che si vede a prima vista è che non ricorrono caratteri '_', '.' o altri
dei casi che hai riportato; di fatto, è solo un modo un po' complesso di
fare uno split sulle virgole. Ogni indirizzo della lista viene quindi
passato, così com'è, al server smtp locale. Quello che accade dopo non
dipende più da Mail::Sender.
Una ricerca su google suggerisce di controllare la codifica caratteri del
tuo sistema (utf8 potrebbe creare qualche problema), e i permessi.
Ciao.

 writes:
Simo> Mi spiego meglio:
...
Simo> $sender->Open({ to => '$email' , subject => "$subject", confirm
Simo> => 'delivery' });
...
hai perfino ignorato le risposte giuste per continuare il thread.
facendo come hai fatto chiedi al modulo di spedire all'indirizzo
'$email@localhost' (essebarrata-e-emme-a-i-elle-chiocciola ...)
che molto probabilmente non esiste, oltre ad essere sintatticamente un
indirizzo e-mail sbagliato (v. cap. 3.4 di rfc2822).
Ho trovato anche di pessimo gusto il tuo tentativo di incolpare la
versione del modulo. Se non sai neanche il significato di apice singolo
guardatene bene dallo scaricare le tue insipienze su chi ti ha
messo a disposizione un modulo.
1+1=0 => stop dementia code production   campaign
Saluti,
MARco
-- 
x(t),y(t) = th(3t-34.5)*e^[-(3t-34.5)^2]/2-4.3+e^(-1.8/t^2)/(.8*atg(t-
3)+2)(t-1.8)-.3th(5t-42.5),(1.4e^[-(3t-34.5)^2]+1-sgn[|t-8.5|-.5]*1.5*
|sin(pi*t)|^[2e^(-(t-11.5)^2)+.5+e^(-(.6t-3.3)^2)])/(.5+t)+1  ; 0<t<14