Попробуем послать несколько сообщений. Сценарий smtpmail является одноразовым инструментом: при каждом запуске сценария можно послать только одно сообщение. Как и большинство клиентских инструментов, представленных в этой главе, его можно запустить на любом компьютере с Python и соединением с Интернетом, поддерживающим SMTP (многие компьютеры имеют подключение к Интернету, но многие компьютеры общего доступа ограничены возможностью работы только с протоколом HTTP [Веб] или требуют специальной настройки доступа к серверу SMTP). Ниже приводится пример его выполнения в Windows:
C:\…\PP4E\Internet\Email> smtpmail.py
From? Eric.the.Half.a.Bee@yahoo.com
Subj? A B C D E F G
Type message text, end with line=[Ctrl+d (Unix), Ctrl+z (Windows)] Fiddle de dum, Fiddle de dee, Eric the half a bee.
"Z
Connecting…
No errors.
Bye.
Это письмо посылается по электронному адресу этой книги (PP4E@le- arning-python.com), поэтому в конечном счете оно окажется в почтовом ящике на сервере моего интернет-провайдера, но лишь пройдя через неопределенное число серверов Сети и сетевые соединения неизвестной длины. На нижнем уровне все устроено сложно, но обычно Интернет «просто работает».
Обратите, однако, внимание на адрес «From» — он абсолютно фиктивный (по крайней мере, мне так кажется). Оказывается, обычно можно задать произвольный адрес «From», так как SMTP не проверяет его существование (проверяется только общий формат). Далее, в отличие от POP, в SMTP нет понятия имени пользователя и пароля, поэтому отправителя установить труднее. Необходимо лишь передать электронную почту на любой компьютер, где есть сервер, слушающий на порту SMTP, и не требуется иметь учетную запись на этом сервере. В данном случае Eric.the.Half.a.Bee@yahoo.com вполне годится в качестве адреса отправителя; с таким же успехом можно было бы указать адрес Marketing. Geek.From.Hell@spam.com.
На самом деле я специально не импортировал адрес «From» из модуля mailconfig.py, потому что я хотел продемонстрировать эту особенность — она лежит в основе появления в ящике всего этого раздражающего почтового мусора без настоящего адреса отправителя. Торговцы, помешанные на мысли разбогатеть с помощью Интернета, рассылают рекламу по всем известным им адресам и не указывают действительный адрес «From», чтобы скрыть свои следы.
Обычно необходимо использовать один и тот же адрес «To» в сообщении и вызове SMTP и указывать свой действительный почтовый адрес в качестве значения «From» (иначе люди не смогут ответить на ваше послание). Более того, за исключением случаев, когда вы дразните вашу «вторую половину», отправка фальшивого адреса явно нарушает правила добропорядочного поведения в Интернете. Запустим сценарий снова, чтобы отправить еще одно письмо с более политически корректными координатами:
C:\…\PP4E\Internet\Email> smtpmail.py
From? PP4E@learning-python.com
To? PP4E@learning-python.com Subj? testing smtpmail
Type message text, end with line=[Ctrl+d (Unix), Ctrl+z (Windows)] Lovely Spam! Wonderful Spam!
"Z
Connecting…
No errors.
Bye.
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011