
Ну, заголовок может быть немного обманчивым, но я не смог найти лучшего способа описать свой вопрос. Я попытался настроить свой компьютер на отправку писем через mail()
функцию php. Оказалось, что не могу. Мой провайдер блокирует порт 25, так что тут не повезло. Затем, из любопытства, я настроил Thunderbird с учетной записью gmail и отправил сообщение на учетную запись hotmail. Это сработало. Мне было любопытно, как Thunderbird умудряется отправлять письма.
Я увидел в конфигурации учетной записи gmail на Thunderbird, что она использует другой порт, а не 25. Thunderbird, похоже, устанавливает эти значения автоматически, что довольно хорошо. Некоторое время назад я хотел настроить учетную запись на Thunderbird, и мне пришлось вручную ввести значения сервера SMTP и значения IMAP/POP3, поэтому приятно видеть, что теперь они делают это автоматически.
Я также проверил логи почты, и ничего не изменилось. Думаю, это очевидно, поскольку электронное письмо отправляется не через sendmail postfix, а через gmail. Это верно?
Ну, мой вопрос в том, как Thunderbird отправляет электронную почту? И что еще важнее, могу ли я сделать что-то подобное, чтобы иметь возможность отправлять электронную почту из моих PHP-скриптов?
Я понимаю, что это может быть «глупый» вопрос, но я действительно ничего не знаю об этом вопросе.
И раз уж я спрашиваю, где я могу об этом узнать? Этому учат в школе? Может быть, в компьютерных науках? Какая хорошая книга для начала знакомства с этим прекрасным миром электронной почты, SMTP, POP3 и всего такого.
решение1
Чтобы отправить электронное письмо, ваш почтовый клиент (либо Thunderbird, либо ваш PHP-скрипт) должен подключиться к SMTP-серверу, который может ретранслировать электронное письмо через Интернет, чтобы в конечном итоге достичь почтового сервера получателя. Стандартный порт для SMTP — 25, но иногда вместо него могут использоваться другие порты, такие как 587 или 465, часто с каким-либо шифрованием, например, SSL.
Какой порт и шифрование использовать, зависит от используемого вами SMTP-сервера. Thunderbird, как вы упомянули, может определить это, пробуя общие порты и протоколы. Чтобы отправить почту через SSL из PHP-скрипта, вы можете, например, использоватьPEAR-почтарасширение.
Информацию о том, как работают протоколы электронной почты, вероятно, не следует считать общеизвестной.ВикипедияКонечно, есть обзор, но, как вы сказали, если вы хотите копнуть глубже, вероятно, порекомендую книгу.
решение2
Я знаю, что вы решили эту проблему, но это ответ на изначальный вопрос: как Thunderbird отправляет почту?
Клиент Thunderbird поставляется с информацией о подключении для нескольких известных почтовых провайдеров, включая (как вы видели) gmail, hotmail, yahoo и, возможно, несколько других. Конфигурация будет знать:
- Протокол для входящих сообщений - POP3 или IMAP (к сожалению, Thunderbird не поддерживает Exchange: Microsoft лицензировала протокол Exchange только для мобильных устройств)
- Протокол для исходящих сообщений - практически повсеместно SMTP
- Порты, где находятся службы.
- Нужно ли мне проходить аутентификацию на SMTP-сервере? (SMTP-серверам обычно требуется аутентификация сейчас, иначе вы будете отправлять больше спама)
- Шифрование? TLS/SSL? или поддерживает STARTTLS?
Итак, когда вы создали свою учетную запись, вы сообщили Thunderbird:[email protected]". Он увидел, что это gmail.com, и использовал то, что config знал об учетной записи (IMAP/SSL на imap.gmail.com, SMTP/SSL на smtp.gmail.com и т. д.)
Когда вы отправляете письмо, Thunderbird знает, что ему нужно войти на SMTP-сервер, включить шифрование, а затем отправить сообщение сочень специфический формат.
Что касается обучения, проверьтеРФКС, они — последнее слово в том, что передается по проводам. Также проверьте документацию по postfix, sendmail и другим MTA (Mail Transfer Agents).