<p>使用server.connect并将一些东西移到循环之外可以解决此问题</p>
<pre><code> def Emailspam():
print("Choose your email provider")
print("1. Gmail")
print("2. Outlook")
provider = input(CRED + ">>> " + CEND)
os.system("cls")
useremail = input("EMAIL : ")
userpass = input("PASSWORD : ")
os.system("cls")
victimemail = input("Victim email : ")
Content = input('Message : ')
Number = int(input("Number of mail to send : "))
os.system("cls")
#https://www.androidauthority.com/gmail-smtp-settings-801100/#:~:text=SMTP%20server%20address%3A%20smtp.gmail,SMTP%20port%20(SSL)%3A%20465
if provider == ("1"):
smtp_server = 'smtp.gmail.com'
port = 587
#https://support.microsoft.com/en-us/office/pop-imap-and-smtp-settings-for-outlook-com-d088b986-291d-42b8-9564-9c414e2aa040
elif provider == ("2"):
smtp_server = 'smtp.office365.com'
port = 587
else:
print("Invalid choice")
skrr = input("press enter to close")
exit()
try:
server = smtplib.SMTP(smtp_server,port)
server.connect(smtp_server,port)
server.ehlo()
server.starttls()
server.login(useremail,userpass)
for i in range(0,Number):
print("Number of Message Sent to " + victimemail + ":" , i+1)
server.sendmail(useremail,victimemail,Content)
time.sleep(1)
print("Finished")
server.close()
except Exception as e:
print(e)
print('The username or password you entered is incorrect.')
p = input("Press enter to close")
exit()
</code></pre>