nuovo server smtp.libero.it richiede autenticazione... la funzione mail in locale non va più...

346 views
Skip to first unread message

Alessandro Marinuzzi

unread,
Mar 22, 2010, 2:34:01 AM3/22/10
to Php
Ciao a tutti! Allora... con orrore ho appreso che libero ha cambiato
server di posta in uscita e fin qui nulla di strano... ma la cosa che mi
ha fatto seccare ᅵ che richiede autenticazione... quindi la semplice
funzione mail di php non va piᅵ nel mio server in locale...

[mail function]
; For Win32 only.
SMTP = smtp.libero.it
smtp_port = 25

; For Win32 only.
sendmail_from = Ak...@libero.it

come fare?

--
Alessandro Marinuzzi
--------------------
http://www.alecos.it
--------------------

Davide Bellettini

unread,
Mar 22, 2010, 2:43:36 AM3/22/10
to zb-p...@googlegroups.com
Il 22 marzo 2010 07.34, Alessandro Marinuzzi <aleco...@libero.it> ha scritto:
> come fare?

Io di solito uso Swift Mailer (è integrato in Symfony) http://swiftmailer.org/


--
Davide Bellettini

dav...@davidebellettini.it
www.davidebellettini.it

Giovanni Battista Lenoci

unread,
Mar 22, 2010, 4:06:03 AM3/22/10
to zb-p...@googlegroups.com
Alessandro Marinuzzi ha scritto:

> Ciao a tutti! Allora... con orrore ho appreso che libero ha cambiato
> server di posta in uscita e fin qui nulla di strano... ma la cosa che mi
> ha fatto seccare � che richiede autenticazione... quindi la semplice
> funzione mail di php non va pi� nel mio server in locale...
>
> come fare?
>
Con phpmailer c'� l'autenticazione smtp integrata, io in genere metto un
settaggio in db in cui specifico smtp host, smtp user, smtp pass, se il
valore dell'smtp host � diverso dalla stringa vuota, chiamo il metodo
isSmtp() se poi sono settati anche user e pass li imposto.

Quando metto in produzione il sito, svuoto i 3 valori per far andare
phpmailer con la funzione mail().

ciao

--
gianiaz.net - web solutions
via piedo, 58 - 23020 tresivio (so) - italy
+39 347 7196482

Alessandro Marinuzzi

unread,
Mar 22, 2010, 10:10:30 AM3/22/10
to zb-p...@googlegroups.com
Il 22/03/2010 09:06, Giovanni Battista Lenoci ha scritto:
Alessandro Marinuzzi ha scritto:
Ciao a tutti! Allora... con orrore ho appreso che libero ha cambiato
server di posta in uscita e fin qui nulla di strano... ma la cosa che mi
ha fatto seccare è che richiede autenticazione... quindi la semplice
funzione mail di php non va più nel mio server in locale...

come fare?
 
Con phpmailer c'è l'autenticazione smtp integrata, io in genere metto un settaggio in db in cui specifico smtp host, smtp user, smtp pass, se il valore dell'smtp host è diverso dalla stringa vuota, chiamo il metodo isSmtp() se poi sono settati anche user e pass li imposto.

Quando metto in produzione il sito, svuoto i 3 valori per far andare phpmailer con la funzione mail().

ciao

si chiaro... ma se uno deve usare per fornza la funzione mail di php per spedire una notifica in caso di nuovo post ad esempio come fa?

Esempio... nel mio blog creato da zero da me uso questa tecnica:

	$to = "ale...@alecos.it";
	$subject = "[A71-Commenti] Nuovo Commento (Data: $time - POST ID: $post - Commento: $comm)";
	$crnl = chr(13) . chr(10);
	$message .= $crnl . '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">';
	$message .= $crnl . '<HTML>';
	$message .= $crnl . '<HEAD>';
	$message .= $crnl . '  <META HTTP-EQUIV="content-type" CONTENT="text/html;CHARSET=iso-8859-1">';
	$message .= $crnl . '  <META NAME="author" CONTENT="Alecos [Alessandro Marinuzzi]">';
	$message .= $crnl . '  <META NAME="generator" CONTENT="Alecos [Alessandro Marinuzzi]">';
	$message .= $crnl . '  <META NAME="description" CONTENT="Benvenuti ! Questa pagina &egrave; dedicata al diario di Alecos: pensieri, considerazioni, riflessioni su fatti, esperienze vissute, scoperte, stranezze, cose buffe, affetti, dolori, assurdit&agrave; e altro...">';
	$message .= $crnl . '  <META NAME="keywords" CONTENT="Alessandro, Marinuzzi, alecos, diario, cronaca, notizie, pensieri, considerazioni, riflessioni su fatti, esperienze vissute, scoperte, stranezze, cose buffe, affetti, dolori, assurdit&agrave;, francesca, vittima, unabomber">';
	$message .= $crnl . '  <META NAME="distribution" CONTENT="global">';
	$message .= $crnl . '  <META NAME="language" CONTENT="italian it">';
	$message .= $crnl . '  <META NAME="language" CONTENT="english en">';
	$message .= $crnl . '  <META NAME="rating" CONTENT="general">';
	$message .= $crnl . '  <META NAME="revisit-after" CONTENT="6 days">'; 
	$message .= $crnl . '  <META NAME="pragma" CONTENT="no-cache">';
	$message .= $crnl . '  <META NAME="robots" CONTENT="index, follow">';
	$message .= $crnl . '  <TITLE>Home Page di Alecos [Alessandro Marinuzzi] - Commento: ' . $comm . '</TITLE>';
	$message .= $crnl . '  <LINK REL="stylesheet" TYPE="text/css" MEDIA="all" HREF="' . "$host/css/alecos.css" . '">';
	$message .= $crnl . '  <!--[if gte IE 5.5000]>';
  $message .= $crnl . '  <script defer type="text/javascript" src="' . "$host/jsc/pngfix.js" . '"></script>';
  $message .= $crnl . '  <![endif]-->';
	$message .= $crnl . '</HEAD>';
	$message .= $crnl;
	$message .= $crnl . '<BODY BGCOLOR="#FFFFFF" LINK="#008080" ALINK="#C0D9D9" VLINK="#808080" TEXT="#000080" MARGINWIDTH="0" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="0">';
	$message .= $crnl;
	$message .= $crnl . '<TABLE WIDTH="100%" CELLPADDING="10" CELLSPACING="0" BORDER="0">';
	$message .= $crnl . '  <TR>';
	$message .= $crnl . '    <TD>&nbsp;</TD>';
	$message .= $crnl . '  </TR>';
	$message .= $crnl . '  <TR>';
	$message .= $crnl . '    <TD>';
	$message .= $crnl . '      <TABLE BACKGROUND="' . "$host/bkg/Bkg.gif" . '" WIDTH="90%" ALIGN="CENTER" CELLPADDING="5" CELLSPACING="0" BORDER="1">';
	$message .= $crnl . '        <TR BGCOLOR="#0000FF"><TD BACKGROUND="' . "$host/bkg/Bkg_02.jpg" . '" WIDTH="80%" ALIGN="CENTER"><FONT COLOR="#FFFFFF"><B>' . $time . ' &#183; [' . $topic . ' -  Commento: ' . $comm . ']</B></FONT></TD><TD BACKGROUND="' . "$host/bkg/Bkg_02.jpg" . '" WIDTH="20%" ALIGN="CENTER"><FONT COLOR="#FFFFFF"><B>Postato da</B></FONT></TD></TR>';
	$message .= $crnl . '        <TR><TD WIDTH="80%"><DIV ALIGN="JUSTIFY">';
	$message .= $crnl . '        ' . wordwrap($body, 700, "\r\n        ");
	$message .= $crnl . '        </DIV></TD><TD WIDTH="20%" ALIGN="CENTER"><A HREF="mailto:' . $mail . '?subject=' . $topic . '&body=Gentile visitatore, La informo che messaggi offensivi o volgari verranno scartati, buona prosecuzione.">' . $name .  '</A></TD></TR>';
	$message .= $crnl . '      </TABLE>';
	$message .= $crnl . '      <TABLE WIDTH="75%" ALIGN="CENTER" CELLPADDING="3" CELLSPACING="0" BORDER="0">';
	$message .= $crnl . '        <TR><TD WIDTH="33%" ALIGN="LEFT"><A HREF="' . "$host/pst/accetta.php?post=$post&comm=$comm" . '">Accetta</A></TD><TD WIDTH="33%" ALIGN="CENTER"><A HREF="javascript:window.print();"><IMG SRC="' . "$host/gfx/Print.gif" . '" ALT="Stampa" BORDER="0"></A></TD><TD WIDTH="33%" ALIGN="RIGHT"><A HREF="' . "$host/pst/cancella.php?post=$post&comm=$comm" . '">Rifiuta</A></TD></TR>';
	$message .= $crnl . '      </TABLE>';
	$message .= $crnl . '    </TD>'; 
	$message .= $crnl . '  </TR>';
	$message .= $crnl . '  <TR>';
	$message .= $crnl . '    <TD ALIGN="CENTER"><SMALL>Copyright &copy; 2002-' . date('Y') . ', Alessandro Marinuzzi</SMALL></TD>';
	$message .= $crnl . '  </TR>';
	$message .= $crnl . '  <TR>';
	$message .= $crnl . '    <TD ALIGN="CENTER"><A HREF="' . "$host/" . '">[Home]</A></TD>';
	$message .= $crnl . '  </TR>';
	$message .= $crnl . '</TABLE>';
	$message .= $crnl;
	$message .= $crnl . '</BODY>';
	$message .= $crnl;
	$message .= $crnl . '</HTML>';
	$message .= $crnl;
	$name = html_entity_decode($name, ENT_QUOTES);
	$user = $_SERVER['HTTP_USER_AGENT'];
	mail($to, $subject, $message, "From: $name <$mail>\n" . "MIME-Version: 1.0\n" . "Content-type: text/html; charset=ISO-8859-1\n" . "X-IP: $ipid\n" . "X-Agent: $user\n" . "X-Mailer: A71-Commenti 1.1");
Come potete notare non posso fare uso di phpmailer o di altro perché in questo caso mi serve proprio la funzione mail di php pura e semplice... c'è un altro espediente da utilizzare per testare le proprie funzioni in locale?

PS: quel pezzo di codice fa parte di una porzione di codice più grande... 56kb di codice per gestire i commenti con tutte le caratteristiche di un blog moderno, ci sono altri script che interagiscono con questo e che nell'insieme fanno quasi 500 kb di codice scritto da me... ora non volendo apportare molte modifiche per far andare la funzione mail di php qualcuno ha qualche idea?
Grazie.

Cristiano Verondini

unread,
Mar 22, 2010, 10:19:32 AM3/22/10
to zb-p...@googlegroups.com

AFAIK, non c’è modo.

L’approccio che ti suggeriscono è però il migliore.

(1) Scegli una libreria che supporti l’invio attraverso server SMTP ed autenticazione
(2) creati una funzione wrapper che accetti i parametri della funzione mail() di PHP
(3) sostituisci tutte le chiamate alla funzione mail() con chiamate alla tua nuova funzione

Tempo di intervento totale, non più di 10 minuti.

PS: l’uso ripetuto di codice come:

$message .= $crnl . “<stringa>”;

è estremamente inefficiente. 

On 22/mar/2010, at 15.10, Alessandro Marinuzzi wrote:

Come potete notare non posso fare uso di phpmailer o di altro perché in questo caso mi serve proprio la funzione mail di php pura e semplice... c'è un altro espediente da utilizzare per testare le proprie funzioni in locale?


-- 
Cristiano Verondini
http://verondini.it/ - ICQ: 114 190

Marcello Vezzelli

unread,
Mar 22, 2010, 10:20:29 AM3/22/10
to zb-p...@googlegroups.com
Il 22/03/2010 7.34, Alessandro Marinuzzi ha scritto:
> Ciao a tutti! Allora... con orrore ho appreso che libero ha cambiato
> server di posta in uscita e fin qui nulla di strano... ma la cosa che mi
> ha fatto seccare � che richiede autenticazione... quindi la semplice
> funzione mail di php non va pi� nel mio server in locale...
>

Una una classe smtp con autenticazione.
Usa un altro smtp.

ciao
Marcello


Alessandro Marinuzzi

unread,
Mar 24, 2010, 5:51:01 AM3/24/10
to zb-p...@googlegroups.com
Il 22/03/2010 15:19, Cristiano Verondini ha scritto:

AFAIK, non c�� modo.

L�approccio che ti suggeriscono � per� il migliore.

(1)�Scegli una libreria che supporti l�invio attraverso server SMTP ed autenticazione
(2) creati una funzione wrapper che accetti i parametri della funzione mail() di PHP
(3) sostituisci tutte le chiamate alla funzione mail() con chiamate alla tua nuova funzione

Tempo di intervento totale, non pi� di 10 minuti.

PS: l�uso ripetuto di codice come:

$message .= $crnl . �<stringa>�;

� estremamente inefficiente.�

On 22/mar/2010, at 15.10, Alessandro Marinuzzi wrote:

Come potete notare non posso fare uso di phpmailer o di altro perch� in questo caso mi serve proprio la funzione mail di php pura e semplice... c'� un altro espediente da utilizzare per testare le proprie funzioni in locale?

Ho risolto alla grande senza modificare nemmeno una porzione di codice php... posto qui la soluzione che potr� interessare anche a qualcun'altro ;-)

http://glob.com.au/sendmail/

lo si scarica e lo si scompatta in C:\Lamp\sendmail (io mi sono creato una installazione in Windows cos�)

e si configura il file sendmail.ini cos�:

; configuration for fake sendmail

; if this file doesn't exist, sendmail.exe will look for the settings in
; the registry, under HKLM\Software\Sendmail

[sendmail]

; you must change mail.mydomain.com to your smtp server,
; or to IIS's "pickup" directory.� (generally C:\Inetpub\mailroot\Pickup)
; emails delivered via IIS's pickup directory cause sendmail to
; run quicker, but you won't get error messages back to the calling
; application.

smtp_server=smtp.libero.it

; smtp port (normally 25)

smtp_port=25

; SMTPS (SSL) support
;�� auto = use SSL for port 465, otherwise try to use TLS
;�� ssl� = alway use SSL
;�� tls� = always use TLS
;�� none = never try to use SSL

smtp_ssl=auto

; the default domain for this server will be read from the registry
; this will be appended to email addresses when one isn't provided
; if you want to override the value in the registry, uncomment and modify

default_domain=libero.it

; log smtp errors to error.log (defaults to same directory as sendmail.exe)
; uncomment to enable logging

error_logfile=C:\Lamp\sendmail\error.log

; create debug log as debug.log (defaults to same directory as sendmail.exe)
; uncomment to enable debugging

debug_logfile=C:\Lamp\sendmail\debug.log

; if your smtp server requires authentication, modify the following two lines

auth_username=tual...@libero.it
auth_password=tuapassword

; if your smtp server uses pop3 before smtp authentication, modify the
; following three lines.� do not enable unless it is required.

;pop3_server=popmail.libero.it
;pop3_username=tual...@libero.it
;pop3_password=tuapassword

; force the sender to always be the following email address
; this will only affect the "MAIL FROM" command, it won't modify
; the "From: " header of the message content

force_sender=tuamail...@libero.it

; force the sender to always be the following email address
; this will only affect the "RCTP TO" command, it won't modify
; the "To: " header of the message content

;force_recipient=

; sendmail will use your hostname and your default_domain in the ehlo/helo
; smtp greeting.� you can manually set the ehlo/helo name if required

;hostname=localhost


poi si apre il file php.ini e si modifica cos�:

[mail function]
; For Win32 only.
;SMTP = smtp.libero.it
;smtp_port = 25

; For Win32 only.
;sendmail_from = tuamail...@libero.it

; For Unix only.� You may supply arguments as well (default: "sendmail -t -i").
sendmail_path = "C:\Lamp\sendmail\sendmail.exe -t"


in questo modo si potr� usare la funzione mail senza problemi con smtp.libero.it ;-)


--�
Cristiano Verondini
http://verondini.it/ - ICQ: 114 190

--
Hai ricevuto questo messaggio perch� sei iscritto al gruppo "zb-php-it" di Google Gruppi.
Per postare messaggi in questo gruppo, invia un'email a zb-p...@googlegroups.com.
Per annullare l'iscrizione a questo gruppo, invia un'email a zb-php-it+...@googlegroups.com.
Per ulteriori opzioni, visita il gruppo all'indirizzo http://groups.google.com/group/zb-php-it?hl=it.

Cristiano Verondini

unread,
Mar 24, 2010, 5:59:44 AM3/24/10
to zb-p...@googlegroups.com

Ah, ma se hai la possibilità di eseguire del codice sul server allora è tutta un’altra cosa :)

On 24/mar/2010, at 10.51, Alessandro Marinuzzi wrote:

in questo modo si potrà usare la funzione mail senza problemi con smtp.libero.it ;-) 

-- 

RedFoxy

unread,
Mar 24, 2010, 9:57:37 AM3/24/10
to zb-p...@googlegroups.com

Il giorno 22/mar/2010, alle ore 07.34, Alessandro Marinuzzi ha scritto:

> Ciao a tutti! Allora... con orrore ho appreso che libero ha cambiato
> server di posta in uscita e fin qui nulla di strano... ma la cosa che mi

> ha fatto seccare è che richiede autenticazione... quindi la semplice
> funzione mail di php non va più nel mio server in locale...


>
> [mail function]
> ; For Win32 only.
> SMTP = smtp.libero.it
> smtp_port = 25
>
> ; For Win32 only.
> sendmail_from = Ak...@libero.it

Dunque...

metti il mail server che ti danno loro, attivi l'autenticazione sotto avanzate, non attivare usa ssl, come nome utente metti la tua mail di libero comprensiva del dominio, inserisci la tua password e il gioco è fatto.

Vedi che il mail server di libero funziona solo se sei connesso dalla sua adsl

Alessandro Marinuzzi

unread,
Mar 24, 2010, 12:51:34 PM3/24/10
to zb-p...@googlegroups.com
Il 24/03/2010 14:57, RedFoxy ha scritto:
> Il giorno 22/mar/2010, alle ore 07.34, Alessandro Marinuzzi ha scritto:
>
>
>> Ciao a tutti! Allora... con orrore ho appreso che libero ha cambiato
>> server di posta in uscita e fin qui nulla di strano... ma la cosa che mi
>> ha fatto seccare � che richiede autenticazione... quindi la semplice
>> funzione mail di php non va pi� nel mio server in locale...

>>
>> [mail function]
>> ; For Win32 only.
>> SMTP = smtp.libero.it
>> smtp_port = 25
>>
>> ; For Win32 only.
>> sendmail_from = Ak...@libero.it
>>
> Dunque...
>
> metti il mail server che ti danno loro, attivi l'autenticazione sotto avanzate, non attivare usa ssl, come nome utente metti la tua mail di libero comprensiva del dominio, inserisci la tua password e il gioco � fatto.

>
> Vedi che il mail server di libero funziona solo se sei connesso dalla sua adsl
>
grazie del suggerimento ma... io parlavo del mio web server sul mio PC
dove ho windows 7 home premium installato... nel php non c'� la
possibilit� di eseguire l'autenticazione se non tramite sendmail che la
gestisce benissimo... immagino che tu ti riferisca al web server di
libero... non al web server in locale dove testo i miei lavori prima di
pubblicarli sul mio host...

Marcello Vezzelli

unread,
Mar 25, 2010, 4:39:00 AM3/25/10
to zb-p...@googlegroups.com
Il 24/03/2010 17.51, Alessandro Marinuzzi ha scritto:
>
>
> grazie del suggerimento ma... io parlavo del mio web server sul mio PC
> dove ho windows 7 home premium installato... nel php non c'� la
> possibilit� di eseguire l'autenticazione se non tramite sendmail che la
> gestisce benissimo... immagino che tu ti riferisca al web server di
> libero... non al web server in locale dove testo i miei lavori prima di
> pubblicarli sul mio host...
>

Se � il tuo pc potevi mettere un server smtp in locale (ad esempio
xmail) che ascoltasse su 127.0.0.1 e che facesse relay su libero.
Cos� svincoli la configurazione php dai settaggi smtp.

ciao
Marcello

Giovanni Battista Lenoci

unread,
Mar 25, 2010, 6:46:19 AM3/25/10
to zb-p...@googlegroups.com
Marcello Vezzelli ha scritto:

> Se � il tuo pc potevi mettere un server smtp in locale (ad esempio
> xmail) che ascoltasse su 127.0.0.1 e che facesse relay su libero.
> Cos� svincoli la configurazione php dai settaggi smtp.
Io ogni tanto leggendo questa ml mi chiedo se la gente la faccia apposta
a complicarsi la vita :D

Non � che ce l'abbia con te in particolare, ma spesso si leggono
messaggi tipo:

- il mio script che ho fatto su un server windows 2000 che andava
benissimo ora non va pi�
- il mio script che va benissimo non va con smtp
- cacchio il mio script che mandava una mail in formato testo ora non
manda gli allegati, forse devo mettere \r \n o che ne so.

evidentemente il mio script non � scritto poi cosi bene no? l'rfc della
mail � talmente complesso e lungo che secondo me � assurdo pensare di
studiarselo tutto per mandare una mail, e approssimare le cose
sicuramente non � l'approccio migliore, visto che poi saltano fuori i
problemi a seconda del server in cui ci troviamo.

Non � questo il caso, ma di messaggi sulle email se ne leggono tanti e
son sempre tutti uguali.

Nel caso specifico, � il mio punto di vista, installare un programma in
locale, per far andare oggi l'smtp di libero domani chiss� cosa mi
sembra un'inutile spreco di tempo, io sono convinto che deve essere lo
script ad adattarsi al contesto in cui si trova, e non il web server
(che sia esso locale o di aruba o chicchessia).

Io lavoro su un portatile, mi capita di avere a che fare una volta con
la connessione di alice, una volta con quella di tele2 altre volte non
lo so, di certo non perdo tempo a configurarmi un smtp server in locale,
mi sono scritto la mia procedura nel mio cms in cui se in un semplice
campo input specifico l'host stmp la mia applicazione spedir� usando
l'smtp altrimenti spedir� usando la funzione mail.

Poniamo il caso in cui per qualche motivo il server mail dove sta la mia
applicazione in produzione abbia un momento di down, se ho a
disposizione un smtp posso configurarlo in 2 secondi anche in
produzione, senza che io sia l'amministratore del server.

Non � che voglia fare polemica con nessuno, per� volevo portare alla
vostra attenzione questo punto di vista, e magari dare spunto anche per
una riflessione a riguardo, in questo momento sono convinto che il mio
approccio � il migliore, ma forse ci sono delle cose che non ho preso in
considerazione.

ciao :-)

Marcello Vezzelli

unread,
Mar 25, 2010, 7:00:28 AM3/25/10
to zb-p...@googlegroups.com
Il 25/03/2010 11.46, Giovanni Battista Lenoci ha scritto:
> Marcello Vezzelli ha scritto:
>> Se � il tuo pc potevi mettere un server smtp in locale (ad esempio
>> xmail) che ascoltasse su 127.0.0.1 e che facesse relay su libero.
>> Cos� svincoli la configurazione php dai settaggi smtp.
> Io ogni tanto leggendo questa ml mi chiedo se la gente la faccia
> apposta a complicarsi la vita :D

Beh il suggerimento era per un richiedente che si era gi� complicato
abbondantemente la vita :)

> Nel caso specifico, � il mio punto di vista, installare un programma
> in locale, per far andare oggi l'smtp di libero domani chiss� cosa mi
> sembra un'inutile spreco di tempo, io sono convinto che deve essere lo
> script ad adattarsi al contesto in cui si trova, e non il web server
> (che sia esso locale o di aruba o chicchessia).

Sono d'accordo, � una questione di tempi. Se per risolvere il problema
devo cambiare il modo in cui invio le email perch� a suo tempo l'ho
pensato in un modo assolutamente non modulare e ci metterei una
giornata, spendere 5 minuti per installare un smtp in locale e cambiare
una riga di configurazione in php.ini diventa una alternativa pi� che
appetibile.
Conosci xmail? Per impostare il relay smtp, nella versione windows, ci
vogliono veramente 5 minuti. Se non l'hai mai fatto, potrebbero essere
15, il tempo di leggere la parte di documentazione che ti serve.
C'� da modificare una riga in un file di testo e riavviare il servizio.

>
> Io lavoro su un portatile, mi capita di avere a che fare una volta con
> la connessione di alice, una volta con quella di tele2 altre volte non
> lo so, di certo non perdo tempo a configurarmi un smtp server in
> locale, mi sono scritto la mia procedura nel mio cms in cui se in un
> semplice campo input specifico l'host stmp la mia applicazione spedir�
> usando l'smtp altrimenti spedir� usando la funzione mail.

Certo, perch� tu in modo lungimirante hai utilizzato una classe che ti
permette di specificare host, username e password per l'smtp e hai messo
questi parametri in un punto opportuno nella tua configurazione.
Chi ha fatto la richiesta ha scelto un'altra strada complicandosi la
vita e questa soluzione non era praticabile.

Supponiamo che un domani l'smtp che usi di solito utilizzi solo
autenticazione TLS e per un colpo di sfiga la tua classe non la
supporta, come ti muoveresti?
Mi sembra che ricadiamo nello stesso caso.

> Non � che voglia fare polemica con nessuno, per� volevo portare alla
> vostra attenzione questo punto di vista, e magari dare spunto anche
> per una riflessione a riguardo, in questo momento sono convinto che il
> mio approccio � il migliore, ma forse ci sono delle cose che non ho
> preso in considerazione.

Nessuna polemica, si discute pacificamente.
Nota che anch'io uso phpmailer e in un file chiamato fantasiosamente
smtp.inc.php ci sono hostname, porta, username e password.

ciao
Marcello


Giovanni Battista Lenoci

unread,
Mar 25, 2010, 8:09:49 AM3/25/10
to zb-p...@googlegroups.com
Marcello Vezzelli ha scritto:

> Certo, perch� tu in modo lungimirante hai utilizzato una classe che ti
> permette di specificare host, username e password per l'smtp e hai
> messo questi parametri in un punto opportuno nella tua configurazione.
> Chi ha fatto la richiesta ha scelto un'altra strada complicandosi la
> vita e questa soluzione non era praticabile.

Ma guarda, non � che io sia poi cosi lungimirante, semplicemente la
prima (o forse la seconda ;-D) volta che ho sbattuto la testa, mi sono
fatto la domanda che mi faccio sempre, meglio metterci una pezza o
sistemare il mio codice? Se � una cosa che utilizzo solo per me ci metto
la pezza, ma ad esempio nel caso delle mail, ci ho perso un po' di tempo
ma ho sistemato le cose in modo da non doverci pi� mettere mano.

> Supponiamo che un domani l'smtp che usi di solito utilizzi solo
> autenticazione TLS e per un colpo di sfiga la tua classe non la
> supporta, come ti muoveresti?
> Mi sembra che ricadiamo nello stesso caso.

Eeheh, sicuramente sarebbe una rottura di balle, ma credo che seguirei
il consiglio dato da Cristiano all'inizio, creerei una classe phpmailer
che estenda la vecchia classe, in modo da non dover toccare il codice
funzionante.

Anche se non ne ho la sicurezza sono comunque convinto che phpmailer
continuer� ad esistere :-)

Ciao :-)

Marcello Vezzelli

unread,
Mar 25, 2010, 8:20:15 AM3/25/10
to zb-p...@googlegroups.com
Il 25/03/2010 13.09, Giovanni Battista Lenoci ha scritto:
>
>> Chi ha fatto la richiesta ha scelto un'altra strada complicandosi la
>> vita e questa soluzione non era praticabile.
> .

> Ma guarda, non � che io sia poi cosi lungimirante, semplicemente la
> prima (o forse la seconda ;-D) volta che ho sbattuto la testa, mi sono
> fatto la domanda che mi faccio sempre, meglio metterci una pezza o
> sistemare il mio codice? Se � una cosa che utilizzo solo per me ci
> metto la pezza, ma ad esempio nel caso delle mail, ci ho perso un po'
> di tempo ma ho sistemato le cose in modo da non doverci pi� mettere mano.

Questo � un altro tradeoff, dove avere codice decente e manutenibile ha
priorit� sui tempi.
Sempre preferibile quando i tempi sono compatibili e quando il gioco
vale la candela.

>
>> Supponiamo che un domani l'smtp che usi di solito utilizzi solo
>> autenticazione TLS e per un colpo di sfiga la tua classe non la
>> supporta, come ti muoveresti?
>> Mi sembra che ricadiamo nello stesso caso.
> Eeheh, sicuramente sarebbe una rottura di balle, ma credo che seguirei
> il consiglio dato da Cristiano all'inizio, creerei una classe
> phpmailer che estenda la vecchia classe, in modo da non dover toccare
> il codice funzionante.

Anche qui per� devi valutare i tempi oltre alla fattibilit�.
Una cosa del genere � il grande classico che succede all'improvviso col
cliente imbizzarrito. Una soluzione "sistemistica" come quella che ho
proposto ti permette di non cambiare una riga di codice e quindi di non
dover implementare/testare/debuggare una nuova funzionalit�.

> Anche se non ne ho la sicurezza sono comunque convinto che phpmailer
> continuer� ad esistere :-)

Certo, e 640KB saranno sufficienti per tutti :)
Mi rimangio le mie osservazioni sulla tua lungimiranza!!!

ciao
Marcello

Giovanni Battista Lenoci

unread,
Mar 25, 2010, 8:25:05 AM3/25/10
to zb-p...@googlegroups.com
Marcello Vezzelli ha scritto:

> Certo, e 640KB saranno sufficienti per tutti :)
> Mi rimangio le mie osservazioni sulla tua lungimiranza!!!
ahahah :-D

Cristiano Verondini

unread,
Mar 25, 2010, 8:40:05 AM3/25/10
to zb-p...@googlegroups.com

Marcello, capisco perfettamente la problematica ‘contingente’.

La soluzione che hai adottato, in quelle circostanze è stata sicuramente quella a minor sforzo e maggior risultato.

Ma visto che ne stiamo parlando, personalmente ritengo che, una volta tamponata una falla sia anche necessario affrontare il problema e risolverlo nel migliore dei modi. Questo perché i problemi periodicamente si ripropongono e se non si cambia il modo di agire i risultati saranno sempre gli stessi.

Purtroppo nessuno, come si dice, nasce ‘imparato’. Quella che ieri sembrava un’ottima soluzione, oggi dimostra la sua poca flessibilità. Per questo, come dice Giovanni Battista, a volte conviene adottare un approccio più ‘difensivo’, che, per la mia esperienza, alla lunga paga sicuramente di più.

Per fare un semplice esempio, nel tuo caso sarebbe bastato a suo tempo la semplice realizzazione di una funzione ‘proxy’, che inizialmente mimasse il comportamento della mail() di php, ma facendo si che ogni sua chiamata fosse centralizzata:

function myMail(<elenco parametri>) { return mail(<gli stessi parametri>); }

So che può sembrare stupido, ma in un caso come questo questa scelta si sarebbe rivelata preziosa, consentendoti di intervenire in un solo punto del tuo codice.

Ora, lo scopo di questa mail non è certo quella di criticare il tuo approccio, che a suo tempo era sicuramente giustificato, ma semplicemente di fornire un suggerimento basato sull’esperienza.

My 0.02 euros :)

On 25/mar/2010, at 13.20, Marcello Vezzelli wrote:

> Una cosa del genere è il grande classico che succede all'improvviso col cliente imbizzarrito. Una soluzione "sistemistica" come quella che ho proposto ti permette di non cambiare una riga di codice e quindi di non dover implementare/testare/debuggare una nuova funzionalità.

Marcello Vezzelli

unread,
Mar 25, 2010, 8:52:59 AM3/25/10
to zb-p...@googlegroups.com
Il 25/03/2010 13.40, Cristiano Verondini ha scritto:
> La soluzione che hai adottato, in quelle circostanze � stata sicuramente quella a minor sforzo e maggior risultato.
>

Puntualizzazione... non ho mai dovuto adottare la soluzione che ho
proposto, visto che utilizzo una cosa simile alla funzione myMail di cui
accenni, oltre che la classe phpmailer.
La rogna se l'� trovata Marinuzzi :)

> function myMail(<elenco parametri>) { return mail(<gli stessi parametri>); }
>

> So che pu� sembrare stupido, ma in un caso come questo questa scelta si sarebbe rivelata preziosa, consentendoti di intervenire in un solo punto del tuo codice.
>

Tutto tranne che stupido. Dovendo mettere mano a codice scritto da altri
disseminato di mail(), si fa poi presto a fare un cerca e sostituisci di
"mail(" con "myMail(" e implementare myMail da qualche parte.
Io probabilmente mi metterei l� con santa pazienza e toglierei tutto
quanto, scrivendo una funzione che manda la mail prendendo i parametri
necessari, funzione implementata poi basandosi su phpmailer. Alla fine
lo sforzo sar� ampiamente ripagato.

> Ora, lo scopo di questa mail non � certo quella di criticare il tuo approccio, che a suo tempo era sicuramente giustificato, ma semplicemente di fornire un suggerimento basato sull�esperienza.
>

Sono d'accordissimo, un conto � far funzionare le cose, un conto � farle
come devono essere fatte :)

ciao
Marcello

Alessandro Marinuzzi

unread,
Mar 25, 2010, 9:17:36 AM3/25/10
to zb-p...@googlegroups.com
Il 25/03/2010 13:52, Marcello Vezzelli ha scritto:
Il 25/03/2010 13.40, Cristiano Verondini ha scritto:
����La soluzione che hai adottato, in quelle circostanze � stata sicuramente quella a minor sforzo e maggior risultato.
��

Puntualizzazione... non ho mai dovuto adottare la soluzione che ho proposto, visto che utilizzo una cosa simile alla funzione myMail di cui accenni, oltre che la classe phpmailer.
La rogna se l'� trovata Marinuzzi :)

������� function myMail(<elenco parametri>) { return mail(<gli stessi parametri>); }

����So che pu� sembrare stupido, ma in un caso come questo questa scelta si sarebbe rivelata preziosa, consentendoti di intervenire in un solo punto del tuo codice.
��

Tutto tranne che stupido. Dovendo mettere mano a codice scritto da altri disseminato di mail(), si fa poi presto a fare un cerca e sostituisci di "mail(" con "myMail(" e implementare myMail da qualche parte.
Io probabilmente mi metterei l� con santa pazienza e toglierei tutto quanto, scrivendo una funzione che manda la mail prendendo i parametri necessari, funzione implementata poi basandosi su phpmailer. Alla fine lo sforzo sar� ampiamente ripagato.

����Ora, lo scopo di questa mail non � certo quella di criticare il tuo approccio, che a suo tempo era sicuramente giustificato, ma semplicemente di fornire un suggerimento basato sull�esperienza.
��

Sono d'accordissimo, un conto � far funzionare le cose, un conto � farle come devono essere fatte :)

ciao
Marcello

Ragazzi!!! Che flame :-P� Cmq come detto avevo provato tutte le strade prima di buttarmi su sendmail... avevo modificato la funzione mail implementando una classe smtp ma non funzionava, avevo anche provato phpmailer ma nisba... sembra che lato script il server non accetti richieste... l'unica che � andata � stata usare sendmail... mi ci sono voluti solo 3 minuti e tutto funzionava con il fatto anche che quando mi sposto e sono da altra parte con altro account mi basta decommentare due righe del php.ini e cambiarle e commentare la riga sendmail e riavviare... non vedo tutta questa tragedia :-P� Ho risolto un problema in 3 minuti... vi sembra poco? :-P� Cmq grazie dei consigli che sono sempre ben accetti :-)

Cristiano Verondini

unread,
Mar 25, 2010, 9:33:51 AM3/25/10
to zb-p...@googlegroups.com

On 25/mar/2010, at 14.17, Alessandro Marinuzzi wrote:

Ragazzi!!! Che flame :-P

Mannò, si chiacchiera amabilmente qui :)

Inoltre ho visto passare consigli ed indicazioni quantomai utili :)

Cmq come detto avevo provato tutte le strade prima di buttarmi su sendmail... avevo modificato la funzione mail implementando una classe smtp ma non funzionava, avevo anche provato phpmailer ma nisba... sembra che lato script il server non accetti richieste…

Su questo ho dei grossi dubbi, nel senso che se correttamente implementate le funzioni di uno script non possono fallire (a meno che non sia impedito l’accesso alle socket a PHP, ma è molto raro).

l'unica che è andata è stata usare sendmail... mi ci sono voluti solo 3 minuti e tutto funzionava con il fatto anche che quando mi sposto e sono da altra parte con altro account mi basta decommentare due righe del php.ini e cambiarle e commentare la riga sendmail e riavviare... non vedo tutta questa tragedia :-P 

Non la vedi perchè il tuo software gira su una macchina ed ha pochi accessi. Se ti trovassi in una condizione più complessa, dove anche solo il riavvio di apache è un problema (tecnicamente si parla di ’no-no’ :) ) la tua soluzione non sarebbe accettabile.

Ho risolto un problema in 3 minuti... vi sembra poco? :-P  Cmq grazie dei consigli che sono sempre ben accetti :-) 

Come ho scritto nella mail precedente il punto non è metterci una pezza rapidamente, ma implementare una soluzione a lungo termine che sia solida e versatile. Inoltre nel tuo caso aumenti i requisiti dell’applicazione, richiedendo l’installazione di un SMTP server esterno.

Ma naturalmente questa è solo la mia opinione :)
Reply all
Reply to author
Forward
0 new messages