Я думаю, что необходимо только выдать исключение, когда нет ничего, что можно сделать для выхода из текущего состояния. Например, если Вы выделяете память и нет никого для выделения. В случаях Вы упоминаете, что можете ясно восстановиться с тех состояний и можете возвратить код ошибки назад Вашей вызывающей стороне соответственно.
Вы будете видеть много совета, включая в ответах на этот вопрос, что необходимо выдать исключения только при "исключительных" обстоятельствах. Это кажется поверхностно разумным, но является испорченным советом, потому что он заменяет один вопрос ("когда я должен выдать исключение") с другим субъективным вопросом ("что, является исключительным"). Вместо этого последуйте совету Herb Sutter (для C++, доступного в статья Dr Dobbs, Когда и Как Использовать Исключения , и также в его книге с Andrei Alexandrescu, Стандарты Кодирования C++ ): выдайте исключение, если, и только если
, Почему это лучше? Разве это не заменяет вопрос несколько вопросы о предварительных условиях, постусловиях и инвариантах? Это лучше по нескольким связанным причинам.
throw
является деталью реализации. Это вынуждает нас принять во внимание, что мы должны рассмотреть дизайн и его реализацию отдельно и наше задание, в то время как реализация метода должна произвести что-то, что удовлетворяет конструктивные ограничения. catch
пункты. Вот все, что я мог придумать за один присест, простите меня, если есть какие-то явные упущения.
Преимущества использования встроенной функции почты PHP, без внешней библиотеки / оболочки:
Преимущества использования внешней библиотеки / оболочки:
$ message-> addAttachment ($ file);
без необходимости экспериментировать с заголовками и т. Д. Если я смогу придумать что-нибудь еще, я обязательно добавлю это.
Возможно, это не ответит на все ваши вопросы, но я думаю, это тоже не повредит ...
Что бы вы ни делали, Я бы не пошел с 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;
}
И похоже, что эта функция используется другими функциями, которые добавляют адрес ... Итак, я полагаю, что есть какой-то проверки email-адресов ;-)
Это ответит хотя бы на один из ваших вопросов ^^
PHPMailer - не единственное существующее решение, кстати; существует множество других, например:
Как упоминал Паскаль МАРТИН, отправить электронное письмо не так просто и просто, как некоторые люди думают. Чтобы ответить на ваши вопросы напрямую. Да, PHPMailer выполняет некоторую проверку, но она не супер-продвинутая, но ее должно хватить для ваших целей. А PHPMailer сэкономит вам время в зависимости от того, какие пользовательские функции вам понадобятся. Тем не менее, некоторые вещи, которые следует учитывать:
В дополнение к Просто попробуйте PHPMailer Zend_Mail (это часть Zend Framework ). Однако для простой формы обратной связи этого может быть немного.
т очень дружелюбен к нему. Если у вас есть обычный SMTP-сервер с надежной записью MX (или если у вас есть учетная запись Gmail), вы можете отправлять через нее с помощью SMTP, что поможет снизить вероятность того, что ваша почта будет помечена как спам.В дополнение к Просто попробуйте PHPMailer Zend_Mail (это часть Zend Framework ). Однако для простой контактной формы этого может быть немного.
т очень дружелюбен к нему. Если у вас есть обычный SMTP-сервер с надежной записью MX (или если у вас есть учетная запись gmail), вы можете отправлять через нее с помощью SMTP, что поможет снизить вероятность того, что ваша почта будет помечена как спам.В дополнение к Просто попробуйте PHPMailer Zend_Mail (это часть Zend Framework ). Однако для простой контактной формы этого может быть немного.
Я выбрал PHPMailer, потому что он позволяет мне отправлять электронные письма SMTP в Google без установки каких-либо библиотек или настройки почтового сервера, так что мне не нужно беспокоиться о проблемах, связанных со спамом.