Прошу простить вас, но это не совсем то место, где можно получить урок по кодированию. Это место, где можно задать конкретные вопросы по кодированию. Поэтому очень вероятно, что ваш вопрос будет помечен, и я буду среди тех, кто попросит его закрыть. Но ...
... Я был там, изучая код в вашем возрасте в то время, когда Интернет был лишь небольшой частью того, чем он является сегодня. Поэтому позвольте мне дать вам прозрение и указатели.
Код, который вы вставили, - очень простой, учитывая, что вы знаете немного программирования и понимаете протокол SMTP.
При отправке почты вы выполняете TCP-соединение с сервером - обычно - порт 25 (но 587 в вашем случае). Там вы должны следовать точному протоколу, чтобы сервер понял, что вы хотите сделать. Этот протокол был определен RFC821.
Так же, как вы следуете протоколу, когда вы встречаетесь с кем-то (это как «привет!», Затем пожимайте друг другу руки, а затем говорите «как дела?»), Прежде чем задавать вопрос, сервер делает то же самое:
EHLO example.org
MAIL FROM [email protected]
RCPT TO [email protected]
DATA
Date: Fri, 21 Aug 2015 23:12:29 +0000
From: Alice <[email protected]>
To: Bob <[email protected]>
Go RTFM!
--
Bob
.
Где вы говорите серверу:
- Привет! Я Алиса!
- Хочу отправить сообщение Бобу!
- Можете ли вы сказать ему, чтобы он отправился на RTFM?
Это то, что вы на самом деле делаете в своем коде.
Теперь давайте перейдем к программированию. Прежде всего, вы импортировать модули, один для обработки электронной почты другой для подключения Smtp:
import email
import smtplib
, чтобы понять, как использовать его, вы можете запустить питон REPL в командной строке и сделать dir(email)
чтобы показать свои объекты, и help(email)
получить интегрированную помощь:
python
>>> import email
>>> dir(email)
['Charset', 'Encoders', 'Errors', 'FeedParser', 'Generator', 'Header', 'Iterators', 'LazyImporter', 'MIMEAudio', 'MIMEBase', 'MIMEImage', 'MIMEMessage', 'MIMEMultipart', 'MIMENonMultipart', 'MIMEText', 'Message', 'Parser', 'Utils', '_LOWERNAMES', '_MIMENAMES', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '__version__', '_name', 'base64MIME', 'email', 'importer', 'message_from_file', 'message_from_string', 'mime', 'quopriMIME', 'sys']
>>> help(email)
Help on package email:
NAME
email - A package for parsing, handling, and generating email messages.
FILE
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/email/__init__.py
MODULE DOCS
http://docs.python.org/library/email
…
объекты являются все действия и объекты, разрабатываемой сообществом, которые вы можете использовать. И помощь дает немного больше информации, а также URL, который вы хотите посетить, чтобы узнать больше о том, что вы можете с ним сделать, а также примеры.
Затем создается почтовое сообщение:
msg = email.message_from_string('warning')
msg['From'] = "[email protected]"
msg['To'] = "[email protected]"
msg['Subject'] = "helOoooOo"
, на котором вы настроите Subject
, From
и To
линии, а также тело, в протоколе SMTP, который будет выглядеть как:
From: [email protected]
To: [email protected]
Subject: helOoooOo
warning
.
Затем вы открываете соединение с SMTP-сервером Live.com:
s = smtplib.SMTP("smtp.live.com",587)
Это соединение дает объекту, зная подробности того, где вы подключаетесь, и предлагает методы, которые вы можете применить к этому соединению. Методы - действия, которые вы можете сделать на нем, например:
Вы говорите «привет!».
s.ehlo()
Затем вы начинаете зашифровать сообщение:
s.starttls()
это делает протокол «Шифрование квитирования» на подключение к SMTP, так что дальнейшее общение теперь «безопасный», то есть никто не может читать ваш пароль, просмотрев пакеты между вашим компьютером и сервером.
Вы можете прочитать больше о нем:
https://docs.python.org/3/library/smtplib.html#smtplib.SMTP.starttls
И вы можете прочитать его исходный код здесь:
https://hg.python.org/cpython/file/3.4/Lib/smtplib.py#l654
Вы говорите, что " Здравствуй!" опять же, не только потому, что ты очень вежлив, но потому, что вы перешли от незашифрованном в зашифрованном виде, почтовый сервер ожидает вас, чтобы сказать привет снова:
s.ehlo()
Вы отождествляете себя, так что жить.ком знает, что ты, кто ты prentending быть:
s.login('[email protected]', 'pass')
так что вы хотите изменить адрес электронной почты вашего фактического счета и пароль
Затем вы отправляете почту в/из примера @ hotmail.fr:
s.sendmail("[email protected]", "[email protected]", msg.as_string())
в первой части моего ответа, я говорил вам о протоколе «SMTP», где вы должны сказать, кто вы есть и кем вы хотите поговорить? хорошо, вот что вы здесь делаете. Этот метод переведет:
MAIL FROM [email protected]
RCPT TO [email protected]
И тогда, ваш почтовый объект является питон «экземпляр», который не имеет никакого смысла для вашего SMTP-сервера. Вы должны перевести его из формы, которую может понять почтовый сервер, который является полным текстом. Вы можете взглянуть на то, что это делать в питона РЕПЛ:
python
>>> import email
>>> msg = email.message_from_string('warning')
>>> msg['From'] = "[email protected]"
>>> msg['To'] = "[email protected]"
>>> msg['Subject'] = "helOoooOo"
>>> print(msg)
<email.message.Message instance at 0x10dcb1560>
, что означает «питон знает объект под названием тзд, который сделан благодаря классу email.message.Message и живет на адрес памяти 0x10dcb1560 ".
Но если вы сделаете следующее, то вы получите почту вы будете посылать:
>>> print(msg.as_string())
From: [email protected]
To: [email protected]
Subject: helOoooOo
warning
Что и на самом деле вы даете экземпляр обработчика SMTP, который заботится о направлении его правильно.
И потому, что вы вежливы, вы говорите серверу, что вы уходите, говоря «пока», вместо того, чтобы молча уйти.
s.quit()
Все, что было сказано, я могу только совет открывать несколько книг, принять некоторые курсы онлайн и самое главное сделать практику, начиная от простых глупых и скучных примеров набивать путь более сложным. Начните сначала, выполнив текстовые интерфейсы, прежде чем делать графические, которые немного сложнее.
Вот несколько советов:
Вы можете следить онлайн-курсы, а также:
просто дать несколько из них.
Как ваш код предлагает, похоже, что вы можете быть французским, тогда я могу посоветовать вам прочитать превосходную книгу по алгоритмике, написанную бывшим учителем, которой я занимался, которая учит принципам программирования и мышления, не будучи привязанным к язык программирования:
НТН
Чтобы узнать о s.starttls, обратите внимание, что s определяется как smtplib.SMTP(), поэтому я googled 'smtplib.SMTP' и в первом хите (https://docs.python.org/2/library/ smtplib.html) искал «starttls», пока не нашел свое определение на https://docs.python.org/2/library/smtplib.html#smtplib.SMTP.starttls и в котором говорится: «Поместите SMTP-соединение в TLS (Transport Layer Безопасный режим. Все последующие команды SMTP будут зашифрованы. ' Тот же процесс может узнать об «email.message_from_string» - просто перейдите к нему, сделайте первый или второй удар и выполните поиск по этой функции. –