Возникли проблемы с учетными данными (Google SMTP) - PullRequest
0 голосов
/ 08 февраля 2019

Я очень новый кодировщик Python, поэтому, пожалуйста, не обращайте на меня слишком много внимания, спасибо.

Я пытаюсь создать e-mail, используя smtplib, и яУ меня проблемы с передачей учетных данных пользователей в Google.

Полный код:

mailcheck = input("This mailer is only for gmail, want to continue? (yes or no)")

# GMAIL SMTP INFORMATION
if mailcheck == "yes" or mailcheck == "Yes" or mailcheck == "y":
    smtp_server = 'smtp.gmail.com'
    port = 587
    set_server = "gmail"
else:
    print("Hey, sorry this program is only for Gmail")

#USER CREDENTIALS + RECEIVER

username = input("Google Email?")
password = input("Password?")
receiver = input("Who to send it to?")
subject = input("Subject of the email?")
econtents = input("What to put in the email?")
amount = input("Amount of emails to send?")

credentials = username + password
global d1
global d2

try:
    server = smtplib.SMTP(smtp_server, port)
    server.ehlo()

    server.starttls()
    server.login(username, password)

    print("Sending" + amount, "to", receiver)

    for i in range(1, int(amount) + 1):
        message = "From" + credentials[0] + '\nSubject' + subject + '\n' + econtents
        time.sleep(random.uniform(d1, d2))
        server.sendmail(credentials[0], receiver, message)
        print("\nEmail Sent!")

    else:
        print("Finished sending emails")

except smtplib.SMTPRecipientsRefused:
        print("Recipient refused. Invalid email address?")

except smtplib.SMTPAuthenticationError:
        print("Unable to authenticate with server. Ensure the details are correct.")

except smtplib.SMTPServerDisconnected:
        print("Server disconnected for an unknown reason.")

except smtplib.SMTPConnectError:
        print("Unable to connect to server.")

Ошибка:

Unable to authenticate with server. Ensure the details are correct.

Это означает, что произошел сбой при входе в систему.Где-то в этой части должно быть что-то не так:

 #USER CREDENTIALS + RECEIVER

username = input("Google Email?")
password = input("Password?")
receiver = input("Who to send it to?")
subject = input("Subject of the email?")
econtents = input("What to put in the email?")
amount = input("Amount of emails to send?")

credentials = username + password
global d1
global d2

try:
    server = smtplib.SMTP(smtp_server, port)
    server.ehlo()

    server.starttls()
    server.login(username, password)

    print("Sending" + amount, "to", receiver)

    for i in range(1, int(amount) + 1):
        message = "From" + credentials[0] + '\nSubject' + subject + '\n' + econtents
        time.sleep(random.uniform(d1, d2))
        server.sendmail(credentials[0], receiver, message)
        print("\nEmail Sent!")

Я думаю, это из-за credentials = username + password, который не работает, но я понятия не имею, как бы это исправить.

Если кто-нибудь знает, что я должен изменить, чтобы это исправить, было бы здорово!

1 Ответ

0 голосов
/ 09 февраля 2019

Вместо добавления этих двух строк вы хотите поместить их в массив.В Python это либо

credentials = [username, password]

, либо

credentials = list(username, password)

Но это, похоже, не ваша проблема.Ваша проблема связана с функцией login (), когда вы получаете исключение SMTPAuthenticationError.В документации smtplib сказано, что после запуска .starttls () вы должны снова запустить .ehlo ().Попробуйте выполнить это перед входом в систему. Кроме того, вы можете попытаться сгенерировать экземпляр SSL на порту 465.

(Ctrl + F для .starttls ())

https://docs.python.org/2/library/smtplib.html

...