Я работаю над проектом создания моей собственной программы Instant-Messaging, даже без графики или чего-то еще, чтобы узнать встроенные модули в python. Здесь я попытался написать код, в который пользователь вводит имя пользователя и пароль, которые пользователь хочет, а затем будет отправлено электронное письмо (пользователю), которое будет содержать 12-символьную случайную строку, а пользователь вернет его обратно в программу. Так или иначе, когда я запускаю код, весь мой компьютер замерзает! Вот код:Отправить письмо с SMTP в Python
import smtplib
SMTPServer = smtplib.SMTP("smtp.gmail.com",587)
SMTPServer.starttls()
SMTPServer.login(USERNAME, PASSWORD)*
userEmail = raw_input("Please enter your e-mail: ")
if verifyEmail(userEmail) == False:
while True:
userEmail = raw_input("Error! Please enter your e-mail: ")
if verifyEmail(userEmail) == True:
break
randomString = generateRandomString()
message = """From: From Person <%s>
To: To Person <%s>
Subject: Ido's IM Program Registration
Your registration code is: %s
""" %(SERVEREMAIL, userEmail, randomString)
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(SERVEREMAIL, userEmail, message)
print "Successfully sent email"
except smtplib.SMTPException:
print "Error: unable to send email"
inputString = raw_input("Input generated code sent: ")
Вы пытаетесь настроить SMTP-соединение с Gmail, а затем не используйте его для отправки своего сообщения электронной почты. Вместо этого вы создаете новое SMTP-соединение с 'localhost' и используете это. Вы действительно используете почтовый сервер на компьютере, на котором запущен этот сценарий? – kindall
Я, должно быть, неправильно понял, как работает SMTP. Вы хотите просто удалить «smtpObj = smtplib.SMTP (« localhost ») и изменить следующую строку на« SMTPServer.sendmail (SERVEREMAIL, userEmail, message) », потому что Я уже создал сервер, когда писал 'SMTPServer = smtplib.SMTP (« smtp.gmail.com », 587)'? –
Если вы фактически не запускаете SMTP-сервер на том же компьютере, что и скрипт, это звучит как хорошая вещь, чтобы попробовать. – kindall