[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
--------------------
Io di solito uso Swift Mailer (è integrato in Symfony) http://swiftmailer.org/
--
Davide Bellettini
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 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 sempliceCon 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.
funzione mail di php non va più nel mio server in locale...
come fare?
Quando metto in produzione il sito, svuoto i 3 valori per far andare phpmailer con la funzione mail().
ciao
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?$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 è dedicata al diario di Alecos: pensieri, considerazioni, riflessioni su fatti, esperienze vissute, scoperte, stranezze, cose buffe, affetti, dolori, assurdità 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à, 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> </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 . ' · [' . $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 © 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?
Una una classe smtp con autenticazione.
Usa un altro smtp.
ciao
Marcello
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:
Ho risolto alla grande senza modificare nemmeno una porzione di codice php... posto qui la soluzione che potr� interessare anche a qualcun'altro ;-)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 Verondinihttp://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.
in questo modo si potrà usare la funzione mail senza problemi con smtp.libero.it ;-)
> 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
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
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 :-)
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
> 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 :-)
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
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à.
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
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 :-)