2009-06-10 5 views
6

Ospito il mio sito con GoDaddy e utilizzo la funzione PHP mail() al momento per inviare messaggi di posta dal mio sito. GoDaddy ha un limite di 1000 relay relay al giorno per le mail form formali, ma lo giuro che con il mio script PHP non dovrei toccarlo.Quale server SMTP utilizza PHP mail() per impostazione predefinita e ci sono opzioni migliori?

  1. Dal mail() non prende informazioni SMTP, vuol basta usare automaticamente GoDaddy del (o qualsiasi altra cosa di hosting si può essere acceso)?

  2. Se il mio sito si aspetta che vengano inviate più di 1000 email al giorno (istanze separate, non in un ciclo), dovrei utilizzare un metodo diverso oppure è mail() la scelta giusta?

+1

È questo il PHP su Linux o Windows? – Kev

+0

è hosting condiviso su Linux :) – johnnietheblack

risposta

9

Php utilizza per impostazione predefinita il server di posta locale. Tuttavia puoi specificarlo nel tuo file di configurazione php.ini.

Se si prevede di inviare più email di questo, si potrebbe voler esaminare trovare un server diverso per posta da, o alternative di hosting

+0

posso solo specificare QUALSIASI server? ad esempio ... posso inviare tramite il server di Gmail, ma mantenere il mio nome di dominio nella mia email? probabilmente sembra un quesito stupido, ma in questa zona è vago – johnnietheblack

+0

@johnnietheblack: se riesci ad accedere al file php.ini (ad esempio le impostazioni di PHP), puoi impostare il server SMTP in base alle tue esigenze. (Questo non è assolutamente il caso su qualsiasi tipo di hosting condiviso) – Piskvor

4

Se è necessario utilizzare un server di posta elettronica esterno che richiede l'autenticazione, sarà non essere in grado di utilizzare la funzione PHP mail().

mi consiglia di utilizzare: http://pear.php.net/package/Mail

+0

, quindi vuol dire che se io host su GoDaddy non posso puntare il mio script mail() su un altro SMTP autenticato su un servizio di hosting a cui non interessa quanti ne mando senza usare PEAR? grazie per la vostra pazienza :) – johnnietheblack

+1

La funzione mail() è molto semplice e non supporta l'invio di una coppia nome utente/password abbinata agli host SMTP che richiedono l'autenticazione.Devi scrivere un po 'di codice personalizzato per far funzionare la funzione mail(), motivo per cui ho suggerito un pacchetto = P Spero che questo aiuti. –

1

Se è necessario utilizzare una terza servizio di posta parti vi consiglio cadere l'uso di mail() e sostituirlo con la libreria SwiftMailer. È un componente ricco di funzionalità (supporta autenticazione, allegati, crittografia, ecc.) Che abbiamo usato in pochi posti. È anche gratuito e open source.

+0

mal controllato, grazie :) funziona bene per la spedizione di massa? meglio della PERA? – johnnietheblack

+0

Purtroppo non è stato possibile effettuare confronti con il pacchetto di posta PEAR. Sembra funzionare bene con gli invii di massa, ha un paio di clienti che lo utilizzano. – Kev

4

Su una macchina * nix, la funzione PHP mail() non supporta SMTP, ma utilizza invece sendmail() o altro script di posta configurato sul server. Questo script può inviare tramite SMTP, ma questo non è il modo più semplice in PHP (a meno che tu non abbia già lo script). Per utilizzare SMTP, suggerirei PHPMailer. Lo uso da alcuni anni e sono rimasto impressionato. Supporta SMTP insieme a molti altri protocolli e ha anche altre utili funzionalità, come l'aggiunta di un testo solo per un messaggio di posta elettronica HTML e la creazione delle intestazioni di posta elettronica corrette. È inoltre possibile estendere la classe per impostare valori predefiniti, come il server SMTP e da un indirizzo e-mail, in modo da non doverli impostare ogni volta che si desidera inviare un'e-mail. Fa anche molto bene segnalazione degli errori e debug.

Vorrei anche raccomandare questa classe per l'invio di migliaia di e-mail. Recentemente ho fatto> 5000 in un giorno con esso e non ho avuto problemi.

2

mail() utilizza l'impostazione definita in php.ini. I server Windows richiedono un server smtp effettivo mentre i server * nix useranno qualsiasi mta installato sul server (se presente).

Come altri hanno già detto, se si desidera utilizzare un server smtp alternativo, utilizzare una libreria alternativa come SwiftMailer. Inoltre dovresti assicurarti che il server smtp sia veloce. Ho visto rallentamenti quando si utilizza un server smtp come gmail.

GoDaddy utilizza uno Smart SMTP Relay, anche su server dedicati ospitati con GoDaddy. Il limite si basa sul numero di email che stanno attraversando il relè intelligente.

Se si dispone di un motivo valido per la necessità di inviare più e-mail e si può verificare che il sito non sia spamming e che tutte le e-mail siano attivate, il supporto aumenterà il limite per te se gli dai un stima di quante e-mail è necessario inviare.

1

Sto usando il progetto open source phpmailer per circa sette anni-- è fantastico! È possibile utilizzarlo per connettersi a un server SMTP esterno.

2

Poiché si tratta di un vecchio post ho pensato che sarebbe stato utile se Ho aggiornato la risposta -

Questo è molto più semplice da fare ora che ha usato per essere :-) In PHP 4 il pacchetto PEAR Mail è tipicamente già installato, e questo tutorial davvero semplice ti mostra le poche righe di codice che devi aggiungere al tuo file php http://email.about.com/od/emailprogrammingtips/qt/PHP_Email_SMTP_Authentication.htm

La maggior parte delle società di hosting elenca le impostazioni SMTP di cui avrai bisogno. Io uso JustHost, ed elencano loro a https://my.justhost.com/cgi/help/26(sotto Server posta in uscita)

4

Non usare funzione mail() di PHP invierà la posta indesiderata solo. Utilizzare invece la funzione mail php SMTP.

Perché dovremmo usare SMTP invece PHP mail():

SMTP log in a un conto reale su un server di posta e inviare la posta tramite SMTP a un altro server di posta. Se il server di posta è configurato correttamente, i tuoi messaggi vengono inviati da un account reale su un server di posta e non verranno contrassegnati come spam.

Mail inviato con la funzione mail() viene inviato con sendmail nella maggior parte dei casi. Non è in corso alcuna autenticazione e verrà quasi sempre contrassegnato come spam se si utilizza "Da:" nelle intestazioni extra.

Questo perché se si dà un'occhiata a un file di posta elettronica originale, ad esempio, gmail, verranno visualizzate le intestazioni inviate. In realtà stai inviando da [email protected] e non da [email protected] come avevi detto alla funzione di posta elettronica da fare. Se si utilizza SMTP e visualizzare l'originale l'e-mail venga effettivamente inviata dal [email protected]

È possibile scaricare classe SMTP da:

  1. https://code.google.com/a/apache-extras.org/p/phpmailer/source/browse/trunk/class.smtp.php?r=170
  2. http://www.phpclasses.org/package/14-PHP-Sends-e-mail-messages-via-SMTP-protocol.html
Problemi correlati