2009-08-12 5 views
8

Je suis novice en PHP, mais j'ai une bonne connaissance des choses (je n'ai pas encore appris les cours).PHPMailer v. Mail() pour un simple formulaire de contact

La question:

Lequel choisir? PHPMailer ou mail() pour mon nouveau formulaire de contact.

La forme est simple:

Your name: 
Your email: 
Subject: 
Body: 

J'ai environ 2000 visiteurs par jour et recevoir environ 10 soumissions par jour, donc je ne ai besoin de rien de trop de fantaisie. =)

Questions diverses dans ma tête:

  • Est-PHPMailer va mieux protéger mon formulaire de contact de CC: injection (préoccupation majeure)? Je connais déjà l'astuce anti-spambot display:none CSS.
  • Est-ce que PHPMailer va me sauver l'étape d'avoir à écrire une fonction email_validator()?
  • PHPMailer me sauvera-t-il un autre moment de devoir écrire des fonctions personnalisées?

Merci! Avec un peu de chance, je répondrai bientôt aux questions. Lol

Répondre

11

Voici tout ce que je pouvais penser en une seule séance, pardonnez-moi s'il y a des omissions flagrantes.

avantages à utiliser la fonction intégrée de messagerie de PHP, pas de bibliothèque/emballage externe:

  • Vous n'avez pas besoin de quoi que ce soit en dehors PHP.
  • Vous n'avez pas besoin d'apprendre une nouvelle API.
  • Vous n'avez pas à vous soucier d'une mise à niveau de PHP ou d'une telle rupture du script.
  • Vous n'avez pas à vous soucier d'une version mise à jour de qui ne fonctionne pas sur votre installation PHP .
  • Vous n'avez pas à vous soucier des vulnérabilités de sécurité comme suite à l'utilisation de ce script. Si c'est une tâche simple, vous aurez terminé en quelques minutes.

avantages à utiliser une bibliothèque externe/emballage:

  • Si vous avez besoin d'introduire plus de complexité dans votre emailing, vous peut le faire assez facilement. Ajouter pièces jointes, images en ligne et tels ne sont pas beaucoup de plaisir en utilisant la fonction plaine mail PHP .Bibliothèques externes (à moins les bonnes) ont une API OOPish plus . L'ajout d'une pièce jointe peut être aussi facile que $message->addAttachment($file); sans avoir à jouer avec les en-têtes, etc.
  • bibliothèques externes mieux cacher les complexités laides des tâches telles que les pièces jointes, ajoutant caractère encodages et images en ligne.
  • En utilisant une bibliothèque maintenant vous permettra d'économiser les tracas de avoir à apprendre à l'avenir lorsque vous faites ont besoin de la complexité supplémentaire /fonctionnalité.
  • bibliothèques externes probablement (je suis vraiment pas sûr de ceux, et dans quelle mesure ) traitent certaines vulnérabilités que le courrier de PHP ne pas.

Si je peux penser à autre chose, je vais être sûr de l'ajouter.

+0

Bonnes choses. Parce que je n'ai pas besoin de fonctionnalités HTML, de pièces jointes, etc. Je me penche vers mail(). – Jeff

+0

@Jeff - J'utilise Zend_Mail pour tous mes emails. Cela dit, j'utiliserais probablement mail() si c'était pour quelque chose comme ce que vous avez décrit dans votre question. Vous ne devriez pas décider sur la base d'une seule réponse ici, mais plutôt sur une analyse détaillée de votre situation spécifique, que vous seul pouvez faire. – karim79

0

PHPMailer est mon choix, car il me permet d'envoyer des e-mails SMTP à google sans installer de bibliothèques ou configurer un serveur mail, de cette façon, je n'ai pas à me soucier des problèmes liés au spam.

+0

Salut abales, je dois mentionner que mon serveur de messagerie fonctionne bien, pas besoin de Gmail ou quelque chose de fantaisie comme ça. – Jeff

1

Cela répondra peut-être pas vraiment toutes vos questions, mais il ne sera pas mal non plus, je suppose ...

Tout ce que vous voulez faire, je ne voudrais pas aller avec mail(): l'envoi d'un courrier est Ce n'est pas une tâche facile, et l'utilisation d'une bibliothèque/framework existante sera toujours une bonne idée: elle résoudra de nombreux problèmes auxquels vous n'auriez même pas pensé, même si vous n'avez pas besoin d'envoyer beaucoup de mails. A propos de vos questions spécifiques, peut-être que d'autres réponses diront quelque chose d'autre et/ou obtenir plus d'informations, mais toute "bonne" bibliothèque créée pour envoyer des mails devrait traiter de ce genre de problèmes ... Sinon, vous devriez probablement chercher une autre bibliothèque ^^

encore, l'essai d'un couple de non-adresses muets vous permettra d'être 100% sûr ;-)


une autre solution pour être tout à fait sûr est de vérifier la source de la bibliothèque ;-)

Dans la source de la version 2.2.1, vous trouverez des trucs comme ça:

class.phpmailer.php, fonction AddAnAddress, ligne 413, vous verrez ceci:

if (!self::ValidateAddress($address)) { 
    $this->SetError($this->Lang('invalid_address').': '. $address); 
    if ($this->exceptions) { 
    throw new phpmailerException($this->Lang('invalid_address').': '.$address); 
    } 
    echo $this->Lang('invalid_address').': '.$address; 
    return false; 
} 

Et il semble que cette fonction est utilisée par les autres fonctions qui ajoutent une adresse ...Donc, je suppose qu'il ya une sorte de validation adresses_électroniques ;-)
Ça va répondre à au moins une de vos questions ^^


PHPMailer n'est pas la seule solution qui existe, d'ailleurs; il y a beaucoup d'autres, comme, par exemple:

1

Comme Pascal MARTIN mentionné, l'envoi d'un e-mail n'est pas aussi simple et facile que certaines personnes le supposent. Pour répondre à vos questions directement. Oui PHPMailer effectue une validation, mais ce n'est pas très avancé, mais cela devrait suffire à vos besoins. Et PHPMailer vous fera gagner du temps en fonction des fonctions personnalisées dont vous aurez besoin. Certaines choses à considérer cependant:

  • HTML par rapport au texte brut. Si les courriels ne vous parviennent jamais, ce n'est probablement pas aussi important. Mais si vous envoyez des e-mails à vos utilisateurs (par exemple, un e-mail de confirmation), vous souhaitez être en mesure de prendre en charge les clients HTML et les clients en texte brut. PHPMailer (et Zend_Mail) rendent cela très facile à faire.
  • SMTP. Ceci est un autre qui est vraiment important si vous envoyez un e-mail à vos utilisateurs, mais pas tellement si c'est juste un e-mail à vous-même. En utilisant la fonction mail() habituelle de php, l'email sera envoyé via sendmail, dont presque toutes les installations * nix sont livrées prêtes à l'emploi (en particulier les serveurs). En conséquence, les filtres anti-spam ne sont pas très amicaux à son égard. Si vous avez une configuration de serveur SMTP standard avec un enregistrement MX de confiance (ou si vous avez un compte gmail), vous pouvez envoyer via SMTP, ce qui aidera à réduire les chances que votre courrier soit marqué comme spam.

En plus de seulement PHPMailer Zend_Mail est un bon à vérifier (il fait partie du Zend Framework). Cependant, cela peut être un peu trop pour un formulaire de contact simple.

Questions connexes