как проверить mail () с помощью PHPUnit - PullRequest
6 голосов
/ 01 августа 2010

есть ли способ проверить с помощью PHPUnit (или, может быть, другие рамки тестирования для PHP), если почта отправляется правильно?Я должен проверить код, который использует функцию PHP mail ().С пользовательским классом почтовой программы я всегда мог сделать макет, но для mail () ...?Может быть, есть какой-нибудь плагин, способный использовать IMAP и проверять, получена ли почта?(и он должен быть независим от ОС, если это возможно ...)

Ответы [ 3 ]

6 голосов
/ 01 августа 2010

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

Я не вижу смысла в тестировании самого mail(), я уверен, что оно было тщательноуже проверено.

0 голосов
/ 21 августа 2015

Существует проект под названием MailCatcher, который может помочь вам убедиться, что ваша электронная почта была (а) отправлена ​​и (б) построена так, как задумано (в нее входит содержимое, которое вы вложили в нее).Обратите внимание, что эта программа не проверяет, является ли ваша электронная почта получаемой (т. Е. Не помечена как спам или не отклонена почтовым сервером по другим причинам)

Mailcatcher - это локальная служба SMTP и веб-интерфейс, помогающие проверять электронную почту, отправленнуюваш код.Кроме того, электронные письма могут быть программно проверены с помощью API: например: / messages, /messages/:id.json, /messages/:id.html и т. Д. Чтобы использовать API, вам потребуется нечто вроде Guzzle для создания HTTPзвонки.Страница проекта http://mailcatcher.me/

Хорошее руководство со ссылками на пример кода: http://codeception.com/12-15-2013/testing-emails-in-php.html

0 голосов
/ 01 августа 2010

есть ли способ проверить с помощью PHPUnit (или, может быть, другие рамки для тестирования PHP) если почта отправлена ​​правильно?

Если вы хотите проверить, была ли отправлена ​​почта успешно , вам не нужен phpunit, вы просто делаете:

mail(.....) or die('Could not send the email !!');

Или

if (!mail(......)){
  echo 'Could not send the email !!';
}

Обратите внимание , что это говорит о том, было ли отправлено письмо или нет, было ли оно получено, кому было отправлено письмо Таким образом, лучший термин здесь должен быть доставлен .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...