PHPMailer v. Mail () для простой формы контакта

Я новичок в PHP, но имею достойное понимание вещей (еще не изучил классы).

Вопрос:

Что выбрать? PHPMailer или mail () для моей новой контактной формы.

Форма проста:

Your name: Your email: Subject: Body: 

У меня около 2000 посетителей в день, и я получаю около 10 представлений в день, поэтому мне не нужно ничего необычного. знак равно

Разные вопросы в голове:

  • Является ли PHPMailer лучшей защитой моей контактной формы от CC: injection (основная проблема)? Я уже знаю anti-spambot display:none CSS трюк anti-spambot display:none CSS .
  • Будет ли PHPMailer избавить меня от необходимости писать функцию email_validator() ?
  • Будет ли PHPMailer сохранять меня в любой другой момент, когда вам придется писать какие-либо пользовательские функции?

Благодаря! Если повезет, я скоро отвечу на вопросы. Лол

Вот все, о чем я мог подумать за один присест, простите меня, если есть какие-то вопиющие упущения.

Преимущества использования встроенной функции почты PHP, без внешней библиотеки / оболочки:

  • Вам ничего не нужно за пределами PHP.
  • Вам не нужно изучать новый API.
  • Вам не нужно беспокоиться об обновлении PHP или таком нарушении скрипта.
  • Вам не нужно беспокоиться о том, что обновленная версия не работает с вашей установкой PHP.
  • Вам не нужно беспокоиться о потенциальных уязвимостях безопасности в результате использования этого сценария.
  • Если это простая задача, вы сделаете это через несколько минут.

Преимущества использования внешней библиотеки / оболочки:

  • Если вам нужно ввести больше сложностей в вашу электронную почту, вы можете сделать это довольно легко. Добавление вложений, встроенных изображений и т. Д. Не очень весело, используя функцию обычной почты PHP. Внешние библиотеки (по крайней мере, хорошие) имеют больше API OOPish. Добавление вложения может быть таким же простым, как $message->addAttachment($file); без необходимости играть с заголовками и т. д.
  • Внешние библиотеки лучше скрывают уродливые сложности задач, такие как добавление вложений, кодирование символов и встроенные изображения.
  • Использование библиотеки теперь избавит вас от необходимости изучать ее в будущем, когда вам понадобится дополнительная сложность / функциональность.
  • Возможно, внешние библиотеки (я действительно не уверен, какие из них и в какой степени) адресуют определенные уязвимости, которые нет в почте PHP.

Если я смогу придумать что-нибудь еще, я обязательно добавлю его.

Возможно, это не ответит на все ваши вопросы, но это тоже не повредит, я думаю …

Независимо от того, что вы хотите сделать, я бы не пошел с mail() : отправка почты не такая простая задача, и использование существующей библиотеки / рамки всегда будет хорошей идеей: она решит многие проблемы, которые вы, вероятно, даже не подумали о – даже если вам не нужно отправлять много писем.

О ваших конкретных вопросах, возможно, другие ответы скажут что-то еще и / или получите больше информации, но любая «хорошая» библиотека, созданная для отправки писем, должна иметь дело с такими проблемами … Иначе вы, вероятно, должны искать другую библиотеку ^ ^

Тем не менее, тестирование нескольких немых не-адресов позволит вам быть на 100% уверенным 😉

Еще одно решение – быть уверенным в том, чтобы проверить источник библиотеки 😉

В источнике версии 2.2.1 вы найдете следующее:

class.phpmailer.php , функция AddAnAddress , строка 413, вы увидите следующее:

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

И, похоже, эта функция используется другими функциями, которые добавляют адрес … Итак, я полагаю, что есть какая-то проверка адресов электронной почты 😉
Это ответит хотя бы на один из ваших вопросов ^^

PHPMailer – не единственное решение, которое существует, btw; есть много других, например, например:

  • Zend_Mail
  • Rmail для PHP (ранее известная как HTML Mime Mail)
  • Swift Mailer

Как отметил Паскаль МАРТИН, отправка электронной почты не так проста и проста, как некоторые люди просто предполагают, что это так. Чтобы ответить на ваши вопросы напрямую. Да PHPMailer делает некоторую проверку, но он не супер-продвинутый, но должен быть достаточным для ваших целей. И PHPMailer сэкономит вам некоторое время в зависимости от того, какие пользовательские функции вам понадобятся. Некоторые вещи, которые следует учитывать:

  • HTML против обычного текста. Если электронные письма только когда-либо собираются к вам, это, вероятно, не так дорого. Но если вы когда-либо отправляете электронные письма своим пользователям (скажем, письмо с подтверждением), вы хотите иметь возможность поддерживать как HTML, так и обычные текстовые клиенты. PHPMailer (и Zend_Mail) делают это очень легко.
  • SMTP. Это еще один вопрос, который действительно важен, если вы отправляете электронную почту своим пользователям, но не так много, если это просто электронная почта для себя. Используя функцию регулярной почты () php, электронная почта будет отправлена ​​через sendmail, и почти все установки * nix будут поставляться с коробкой (особенно с серверами). В результате спам-фильтры не очень дружелюбны к нему. Если у вас есть обычная настройка SMTP-сервера с надежной записью MX (или если у вас есть учетная запись gmail), вы можете отправить ее через SMTP, что поможет уменьшить вероятность того, что ваша почта будет помечена как спам.

В дополнение к простому PHPMailer Zend_Mail – это хорошая возможность проверить (это часть Zend Framework ). Однако это может быть немного для простой контактной формы.

PHPMailer – мой выбор, потому что он позволяет отправлять SMTP-сообщения в Google без установки каких-либо библиотек или настройки почтового сервера, поэтому мне не нужно беспокоиться о проблемах, связанных с спамом.