PHP Mailer

Ciao ragazzi

Sto utilizzando la classe class.phpmailer.php per linvio delle email.

Tutto funziona bene con lutilizzo di mail(), ma la posta che arriva ad outlook passando dal server di posta (in locale) va a finire nella cartella di posta indesiderata, e inoltre sebbene invio ad un destinatario singolo, con un ciclo for e pescando uno alla volta gli indirizzi da database, mi ritrovo comunque tutta la lista degli indirizzi ben visibili ( es: TO mittente  A: destinatario1, destinatario2,ecc ), se apro lultima mail su A: trovo tutta la lista degli invii fatti.

Credo di aver capito che la modalità nascosta (Bcc) funzioni solo tramite SMTP.

Allora ho cercato di far funzionare questo metodo, ma non riesco proprio a configurare il server, e prima di accanirmi oltre vorrei capirci di più chiedendovi: qual è la differenza tra mail() e SMTP ?

Cioè me la posso cavare benissimo e senza problemi con la prima, o sarebbe più utile cercare di far funzionare la seconda?

Se riuscite a spiegarmelo in maniera elementare. J

Grazie

Paolo

inviato 7 anni fa
antares
X 0 X

Io affronterei un problema alla volta...

per la questione delle mail che vanno a finire nella casella della posta indesiderata, hai provato ad aggiungere alla mail il campo FROM?

 :bye:

risposto 7 anni fa
Gianni Tomasicchio
X 0 X

Ciao Gianni

è un piacere ritrovarti dopo un bel pò di tempo che non frequento il forum :)

Sempre disponibile e gentile................... O0

Si si, sono partito un pò troppo velocemente, ma in effetti ero più interessato a capire la questione mail() e SMTP, che a far funzionare il resto.

In ogni caso mettere a posto quello che ancora non funziona non sarebbe male, e quindi comincio col dirti che si, nel codice è specificato il campo FROM :)

A presto Gianni

Paolo

risposto 7 anni fa
antares
X 0 X

L'assenza del campo FROM è uno dei motivi che porta una mail a essere considerata spam. Un'altro motivo è l'invio di una mail da un indirizzo IP considerato non affidabile.

La connessione diretta ad un server SMTP può avere diversi vantaggi, ad esempio puoi specificare username e password per i server SMTP che richiedono l'autenticazione. Inoltre se non sbaglio PHP Mailer è in grado di ottimizzare l'invio di numerose mail aprendo un'unica connessione verso il server di posta.

 :bye:

risposto 7 anni fa
Gianni Tomasicchio
X 0 X

Allora, il campo From c'è, esiste anche il campo FromName.

Per quanto riguarda l'indirizzo IP io credo di esserne privo sul quel PC, perchè li non possiedo ne rete ne connessione a internet, e questo credo sia uno dei motivi per cui non riesco a configurare il server di posta in locale.

Detto questo mo che faccio?

Da quel poco che mi hai detto riguardo a SMTP è difficile decidere se usare mail() o no. Comunque dal momento che mail mi funziona potrei continuare a farne uso a patto però di riuscire a nascondere gli indirizzi, e di non finire in posta indesiderada.

In pratica sto facendo una Mailing List e prelevo come detto gli indirizzi uno alla volta da Database.

Questo l'ho specificato perchè semmai ci fossero delle limitazioni, almeno da te lo saprei sicuramente ;).

Grazie

Paolo

risposto 7 anni fa
antares
X 0 X

Gli stessi autori di PHP Mailer hanno realizzato una mailing list:

http://phpmailer.codeworxtech.com/index.php?pg=phpmailerml

 :bye:

risposto 7 anni fa
Gianni Tomasicchio
X 0 X

Grazie Gianni

per il momento ho scaricato lo script, ma non credo mi possa risolvere l'invio tramite mail() o SMTP, se questo problema è solo decisionale o tecnico.

Probabilmente non mi corregge nemmeno lo "spam" e gli indirizzi visibili ma per questi almeno posso fare un tentativo.  :)

bye

Paolo

risposto 7 anni fa
antares
X 0 X

Grazie Gianni

per il momento ho scaricato lo script, ma non credo mi possa risolvere l'invio tramite mail() o SMTP, se questo problema è solo decisionale o tecnico.

Probabilmente non mi corregge nemmeno lo "spam" e gli indirizzi visibili ma per questi almeno posso fare un tentativo.  :)

bye

Paolo

Ciao,

magari dico delle banalità ma se non ho capito male eri iteressato a questo:

1 - La funzione mail di php invoca il sendmail della macchina su cui gira lo script php richiamandolo in versione "client" ed utilizzando eventualmente dei parametri passati (es -f indirizzoDiFrom -c fileDiConfigurazioneSendmail).

Nel file di parametri (di default o passati) ci può essere l'indicazione di fare solo un tunneling verso la il server mail primario.

2 - Le librerie che utilizzano la funzione SMTP fanno un telnet alla porta 25 dell'indirizzo indicato come mail server e parlano tramite i comandi diretti al server (e non attraverso un client).

La differenza è notevole soprattutto quando il programma php non gira sul server mail.

In pratica usando la funzione mail() viene messo negli header (tra i server da cui arriva la mail) la macchina stessa su cui sta girando lo script php; mentre se si utilizza una libreria che si collega via smtp gli header della mail risulteranno sempre e solo come se fossero nate sul mailserver.

Questo comportamento fa la differenza quando si gioca con gli antispam che fanno il reverse lookup del server di posta magari con più di un salto. In pratica usando mail() rischi che vadano a cercare la macchina su cui gira lo script come server di posta iniziale e poichè quella macchina non sarà raggiungibile da rete esterna e/o non sarà configurata come server di posta risulta essere una macchina non affidabile.

.. discorso un po' contorto ma spero di essere stata chiara

risposto 7 anni fa
Gly
Gly
1
X 0 X

Grazie Gly

Beh più che contorta la tua spiegazione è stata professionale (anche troppo) :) Effettivamente mi aspettavo una risposta del genere, magari un poco più facile da interpretare visto le mie poche conoscenze in merito.

Cmq da quello che mi sembra avere intuito, sarebbe meglio utilizzare l'SMTP.

Mi nasce cosi una domanda da principiante :) "allora perchè implementare una funzione mail() quando si sarebbe potuto usare direttamente SMTP con tutti i suoi vantaggi?"

Devo cercare se è possibile di risolvere quest'ultima questione. A tuttora come avrai gia' letto, tutto mi funziona solo con mail() e con alcuni difettucci.

Ad ogni modo grazie nuovamente, a presto

Paolo

risposto 7 anni fa
antares
X 0 X

Il tuoi problemi da quello che ho capito sono

1-  capire la differenza tra un invio con il comando mail () e un collegamento SMTP

2- le tue mail inviate con mail() vanno nello spam

3- far funzionare i bcc

Allora

1- spero di averti risposto prima :D

2- bisogna capire a chi devi inviare le mail. Noi inviamo una newsletter a più di 150000 utenti e quando utilizzavamo il comando mail avevamo dovuto spostare lo script di invio direttamente sul server mail proprio per evitare di essere classificati spam tramite il reverse lookup. Ora ci colleghiamo a server esterno tramite la libreria Swift e (per ora) non mi pare ci siano problemi.

3-far funzionare i bcc con mail è abbastanza facile in realtà. NB: sto pensando al mero utilizzo della funzione mail senza passare attraverso librerie di sorta.

$headers .="Bcc: nome@email.it,altroIndirizzo@email.it\r\n" 
mail ($to, $subject, $message, $headers, $parametriAddizionali);

nei parametriAddizionali metti i parametri addizionali al comando mail

es. -f indirizzo di autenticazione/from -c file di configurazione sendmail

negli headers aggiungi tutti i parametri addizionali

es. FROM:indirizzo@email.it (può essere diverso da quello di autenticazione)

risposto 7 anni fa
Gly
Gly
1
X 0 X

Ciao Gly

si, si ha centrato perfettamente i vari miei problemucci :)

Adesso come adesso, sono un pò confuso su come impostare la situazione. Se mi muovo nella direzione di mail() per altro funzionante, non risolvo il problema "spam". Se vado in direzione di SMTP devo allora cercare di configurare il PC o il Server Locale affinchè io possa incominciare a vedere qualche risultato.

Vorrei prendere la strada meno "trafficata" e che sia quella decisiva. Aiutoooooooooo  :'(

Devo mandare delle mail di NewsLetter a utenti comuni che si iscrivono ad un sito.

A quanto pare il problema spam per ora non posso risolverlo, ma il Bcc di cui mi hai scritto le istruzioni le avevo gia' viste in giro. Solo che faccio uso della classe PHPMailer e il sistema per inserire o usare il codice "Header" non l'ho trovato.

Bah mi rimetterò a pasticciare :)

Gly devi avere pazienza.................molta pazienza  :)

Grazie

Ciao  ;)

Paolo

risposto 7 anni fa
antares
X 0 X

Per aggiungere un BCC devi usare il metodo AddBCC()

 :bye:

P.S.: sembra che questa funzione su windows funzioni sono con l'SMTP

risposto 7 anni fa
Gianni Tomasicchio
modificato 7 anni fa
X 0 X

Ciao,

finalmente ho sistemato alcune cose  :)

Rimane il fatto che sto usando sempre la funzione mail, e che le email finiscono in spam, ma per il momento vi aggiorno sulla situazione spero anche a beneficio anche di altri.

1) I destinatari venivano visualizzati insieme (anche se prelevavo da database un 'indirizzo alla volta), perchè all'interno della classe "mailer" c'è una variabile che li conta e li mette in un array. Ad ogni invio quindi mi si ripresentavano tutti i destinatari gia' inviati, più quello ovviamente "nuovo".

Il risultato era quindi che mi inviava più volte la stessa mail ripetendo gli indirizzi ogni volta che compiva il suo ciclo.

2) Non è necessario a questo punto mettere i destinatari in ADDBcc (grazie Gianni avevo trovato) perchè viene mostrato solo l'indirizzo di chi riceve la mail.

Allora: mi rimane da eliminare lo spam, e decidere se migrare a SMTP.

Una cosa importante vorrei sapere: ma quante email posso inviare al giorno, anche se individuali ???

Siccome Gly mi diceva di mandarne migliaia di migliaia, ma da quanto ho letto se ne mandano molto meno, mi interesserebbe avere informazioni in merito, sul come si fa.

Grazie come sempre dell'aiuto

Paolo

risposto 7 anni fa
antares
X 0 X
Una cosa importante vorrei sapere: ma quante email posso inviare al giorno, anche se individuali ???

Molto dipende da come è configurato il tuo server e se hai limiti o meno nell'invio di posta come numero di mail o come numero di byte (più facile). In ogni modo ci sono dei limiti al numero di messaggi che puoi inviare in un'unica connessione smtp che normalmente è di 50 messaggi.

Ossia se ti connetti con il server (es google), cominci a spedire n messaggi e poi ti disconnetti ne puoi inviare circa 50 senza problemi. Se invece ogni nuova email è una nuova connessione allora non dovresti aver problemi  ma il tutto è molto più lento ovviamente.

Puoi quindi impostare un controllo che ogni 50 mail inviate ti faccia disconnect + connect

risposto 7 anni fa
Gly
Gly
1
X 0 X

he he e in parole povere come si fa?  :)

Comunque sempre se è possibile sfruttare la vostra conoscenza in merito, è meglio se affronto una cosa alla volta, come dice il buon Gianni :)

Allora Gly tu mi hai parlato di libreria Swift che ho scaricato, ma da quello che mi è sembrato a prima vista scorrendo la documentazione, appare piuttosto complessa da usare.

In ogni caso ho già implementato tutto usando la classe Phpmailer, quindi se per prima cosa si riuscisse a risolvere il problema delle email che finiscono in spam magari con questa classe, non sarebbe male  :)

Bye

Paolo

risposto 7 anni fa
antares
X 0 X

Stai seguendo le prove in locale? In tal caso ti consiglio di eseguile anche da un server di hosting. Magari lanciando lo script sul server di hosting il problema dello spam non si presenta.

 :bye:

risposto 7 anni fa
Gianni Tomasicchio
X 0 X

Si si Gianni

le prove le sto facendo in locale. L'unico sistema che per ora mi impedisce di finire in spam è abbassare la protezione :P

Non posso fare prove sul server , ma appena ho finito di aggiustare le piccole cose rimaste e aver verificato anche come fare molti invii, lo riverserò una volta per tutte e poi si vedrà.

Ma per sapere quest'ultima cosa devo chiamare i tizi del server e chiedere loro quante mail posso inviare in un giorno ?

Bye

Paolo

risposto 7 anni fa
antares
X 0 X

Si, ti consiglio di contattare i gestori del server perché spesso definiscono delle politiche interne circa il numero di mail che è possibile inviare.

 :bye:

risposto 7 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda