2009-08-12 13 views
8

Jestem nowicjuszem PHP, ale mam przyzwoitą znajomość rzeczy (jeszcze nie nauczyłem się klas).PHPMailer v. Mail() dla prostego formularza kontaktowego

Pytanie:

Które wybrać? PHPMailer lub mail() dla mojego nowego formularza kontaktowego.

Forma jest prosta:

Your name: 
Your email: 
Subject: 
Body: 

mam około 2000 odwiedzin dziennie i otrzymać około 10 zgłoszeń dziennie, więc nie muszę niczego zbyt fantazyjne. =)

Różne pytania w mojej głowie:

  • Czy PHPMailer będzie lepiej chronić moja forma kontaktu z CC: zastrzyk (głównym problemem)? Znam już sztuczkę anti-spambot display:none CSS.
  • Czy PHPMailer zaoszczędzi mi kroku koniecznego do napisania funkcji email_validator()?
  • Czy PHPMailer zaoszczędzi mi innego czasu na pisanie jakichkolwiek niestandardowych funkcji?

Dzięki! Przy odrobinie szczęścia wkrótce odpowiem na pytania. Lol

Odpowiedz

11

Oto wszystko, co mogłem wymyślić podczas jednego posiedzenia, wybacz mi, jeśli są jakieś rażące pominięcia.

Korzyści z używania PHP wbudowaną funkcję poczty, bez zewnętrznych bibliotek/opakowanie:

  • Nie trzeba niczego poza PHP.
  • Nie musisz uczyć się nowego interfejsu API.
  • Nie musisz się martwić o aktualizację PHP lub takie łamanie skryptu.
  • Nie musisz się martwić o zaktualizowaną wersję , która nie działa przy instalacji w języku PHP .
  • Nie musisz martwić się o potencjalne luki w zabezpieczeniach jako jako wynik użycia tego skryptu.
  • Jeśli to proste zadanie, w ciągu kilku minut zrobisz .

Zalety korzystania z zewnętrznego Library/opakowanie:

  • Jeśli trzeba wprowadzić więcej złożoności do swojego e-maila, to może to zrobić dość łatwo. Dodawanie załączników, obrazów śródliniowych i takich nie jest zbyt zabawne przy użyciu funkcji PHP plain mail .Biblioteki zewnętrzne (w liczbie co najmniej dobrych) mają więcej interfejsu API OOPish niż . Dodawanie załącznik może być tak proste, jak $message->addAttachment($file); bez konieczności bawić z nagłówków itp
  • zewnętrznych bibliotek lepiej ukryć brzydkie złożoność zadań, takich jak Dodawanie załączników, charakter kodowania i obrazów 'inline'.
  • Korzystanie z biblioteki teraz pozwoli Ci zaoszczędzić kłopotów z konieczności uczenia się w przyszłości gdy zrobić potrzebują dodatkowe komplikacje/funkcjonalności.
  • zewnętrznych bibliotek prawdopodobnie (jestem naprawdę nie wiem, które z nich, i do jakiego stopnia ) Adres pewne luki, które poczty PHP nie .

Jeśli mogę wymyślić coś jeszcze, na pewno go dodam.

+0

Dobre rzeczy. Ponieważ nie potrzebuję możliwości HTML, załączników itp. Pochylam się do mail(). – Jeff

+0

@Jeff - Używam Zend_Mail do wszystkich moich wiadomości e-mail. Powiedział, że prawdopodobnie użyłbym mail(), gdyby było to coś, co opisałeś w swoim pytaniu. Nie powinieneś decydować na podstawie jednej odpowiedzi tutaj, ale raczej na szczegółowej analizie twojej konkretnej sytuacji, którą tylko Ty możesz zrobić. – karim79

0

PHPMailer to mój wybór, ponieważ pozwala mi wysyłać wiadomości e-mail SMTP do google bez instalowania jakichkolwiek bibliotek lub konfigurowania serwera poczty, w ten sposób nie muszę się martwić problemami związanymi ze spamem.

+0

Cześć, aborcje, powinienem wspomnieć, że mój serwer pocztowy działa sprawnie, nie ma potrzeby korzystania z Gmaila lub czegoś podobnego. – Jeff

1

Będzie to być może tak naprawdę nie odpowiedzieć na wszystkie pytania, ale nie zaszkodzi, chyba ...

Cokolwiek chcesz zrobić, nie pojadę z mail(): wysyłając wiadomość jest nie jest to łatwe zadanie, a korzystanie z istniejącej biblioteki/architektury zawsze będzie dobrym pomysłem: rozwiąże wiele problemów, o których prawdopodobnie nawet nie pomyśleliście - nawet jeśli nie trzeba wysyłać wielu wiadomości.


O konkretnych pytań, może inne odpowiedzi powie coś innego i/lub uzyskać więcej informacji, ale każdy „dobry” biblioteka stworzona, aby wysłać maile powinny radzić sobie z tych rodzaju problemów ... Else, należy prawdopodobnie szukać innej biblioteki ^^

Nadal testuje kilka niemych niebędących adresów pozwoli Ci być w 100% pewien ;-)


innym rozwiązaniem jest dość pewny jest sprawdzenie źródła biblioteka ;-)

w źródle wersji 2.2.1, znajdziesz rzeczy tak:

class.phpmailer.php, funkcję AddAnAddress, linia 413, zobaczysz to:

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; 
} 

I wydaje się ta funkcja jest używana przez inne funkcje, które dodają adres ...Tak, przypuszczam, że to jakiś rodzaj walidacji adresów email ;-)
To będzie odpowiadać co najmniej jedno z pytań ^^


PHPMailer nie jest jedynym rozwiązaniem, które istnieje, btw; istnieje wiele innych, jak na przykład:

1

Pascal MARTIN wspomniano, wysyłając e-mail nie jest tak proste i łatwe, jak niektórzy ludzie po prostu zakładają, że tak jest. Odpowiadając bezpośrednio na pytania. Tak, PHPMailer robi jakąś walidację, ale nie jest super-zaawansowany, ale powinien wystarczyć dla twoich zastosowań. A PHPMailer zaoszczędzi ci trochę czasu w zależności od tego, jakie niestandardowe funkcje będziesz potrzebować. Kilka rzeczy do rozważenia:

  • HTML zamiast zwykłego tekstu. Jeśli e-maile przychodzą tylko do Ciebie, to prawdopodobnie nie jest to tak wielka sprawa. Ale jeśli kiedykolwiek wysyłasz e-maile do swoich użytkowników (powiedzmy e-mail z potwierdzeniem), chcesz mieć możliwość obsługi zarówno klientów HTML, jak i zwykłego tekstu. PHPMailer (i Zend_Mail) ułatwiają to zadanie.
  • SMTP. Jest to kolejna, która jest naprawdę ważna, jeśli wysyłasz e-maile do swoich użytkowników, ale nie tak bardzo, jeśli to tylko e-mail do siebie. Korzystając ze zwykłej funkcji php (e-mail), e-mail zostanie wysłany za pośrednictwem sendmaila, a prawie wszystkie instalacje * nix są dostarczane z gotowością (zwłaszcza serwery). W rezultacie filtry antyspamowe nie są do tego zbyt przyjazne. Jeśli masz zwykłą konfigurację serwera SMTP z zaufanym rekordem MX (lub masz konto Gmail), możesz przesłać je za pomocą protokołu SMTP, co pomoże zmniejszyć ryzyko, że Twoja poczta zostanie oznaczona jako spam.

Oprócz zwykłego PHPMailera, Zend_Mail jest dobrym rozwiązaniem do sprawdzenia (jest to część Zend Framework). Jednak może to być trochę za prosty formularz kontaktowy.

Powiązane problemy