• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Wysyłanie maila

Cloud VPS
+1 głos
964 wizyt
pytanie zadane 16 maja 2020 w Python przez Marak123 Stary wyjadacz (11,190 p.)
zamknięte 17 maja 2020 przez Marak123

Teraz takie pytanie czemu kod do wysyłania maila nie działa:

import smtplib

TO = 'jurek69-00@wp.pl'
SUBJECT = 'testowyy'
TEXT ='taaaa'

gmail_sender = 'pojebany.janusz@gmail.com'
gmail_passwd = 'hasło'

server = smtplib.SMTP('smtp.gmail.com',587)
server.ehlo()
server.starttls()
server.ehlo
server.login(gmail_sender,gmail_passwd)

BODY = ' \r \n '.join([
'TO: %s' %TO,
'FROM: %s' %gmail_sender,
'Subject: %s' # SUBJECT,
' ',
TEXT
])

try:
    server.sendmail(gmail_sender,[TO],BODY)
    print('mail wyslany')
except:
    print('blad w wysylaniu maila')

server.quit()

To jest ten błąd:

Traceback (most recent call last):
  File "F:/Python/Mail/Mail.py", line 14, in <module>
    server.login(gmail_sender,gmail_passwd)
  File "C:\Users\użytkownik\AppData\Local\Programs\Python\Python38-32\lib\smtplib.py", line 734, in login
    raise last_exception
  File "C:\Users\użytkownik\AppData\Local\Programs\Python\Python38-32\lib\smtplib.py", line 723, in login
    (code, resp) = self.auth(
  File "C:\Users\użytkownik\AppData\Local\Programs\Python\Python38-32\lib\smtplib.py", line 646, in auth
    raise SMTPAuthenticationError(code, resp)
smtplib.SMTPAuthenticationError: (535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8  https://support.google.com/mail/?p=BadCredentials r3sm8087964wmh.48 - gsmtp')

Wie ktoś czemu nie działa????

 

komentarz zamknięcia: Otrzymałem odpowiedź działa
komentarz 16 maja 2020 przez VBService Ekspert (256,600 p.)
przeniesione 17 maja 2020 przez VBService
Z tekstu błedu wynika, że musisz tu podać dane do konta, które istnieje, a nie fikcyjne j.n.

gmail_sender = 'pojebany.janusz@gmail.com'
gmail_passwd = 'hasło'
komentarz 16 maja 2020 przez Marak123 Stary wyjadacz (11,190 p.)

Właśnie w tym rzecz ze wpisuje prawidłowe dane nie fikcyjen ale nie kodałem tu bo to jednak jest używane hasło na paru portalach  a i tak wyskakuje m taki sam błąd.

Traceback (most recent call last):
  File "F:/Python/Mail/Mail.py", line 14, in <module>
    server.login(gmail_sender,gmail_passwd)
  File "F:\Python\Mail\smtplib.py", line 734, in login
    raise last_exception
  File "F:\Python\Mail\smtplib.py", line 723, in login
    (code, resp) = self.auth(
  File "F:\Python\Mail\smtplib.py", line 646, in auth
    raise SMTPAuthenticationError(code, resp)
smtplib.SMTPAuthenticationError: (535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8  https://support.google.com/mail/?p=BadCredentials t22sm8444862wmj.37 - gsmtp')

Process finished with exit code 1

 

komentarz 17 maja 2020 przez VBService Ekspert (256,600 p.)
edycja 20 maja 2020 przez VBService

@Marak123, Jednak mimo wszystko, jak piszesz, że wpisujesz (podajesz) prawidłowe dane to i tak błąd wskazuje, żę jest problem z autoryzacją:





Może spróbuj założyć inny adres email do testów, ewentualnie sprawdż u kilku innych dostawców np.: załóż testowy email w gmail, o2, proton itp.
 

Niedawno potrzebowałem do sprawdzania serwera czy działa takie "proste" j.n. wink


import os
import smtplib
import requests
from datetime import datetime

# ----------------------------------------------------------------------------------------
# 5 sekund na odpowiedź serwera
SERVER_TIMEOUT = 5
# sprawdzenie stanu odtwarzania radia
SERVER_URL = 'http://slawianie.zapto.org:8000/?type=http'
# autoryzacja do konta email - zapisane otwartym tekstem
# konto używane tylko do tego celu ...
EMAIL_NAME = 'twoj.serwer.alert@gmail.com'
EMAIL_PASS = 'twoje_haslo'
# ... bardziej bezpieczne utworzenie zmiennych typu env
# w systemie i zczytanie do skryptu
# MAIL_NAME = os.environ.get('EMAIL_NAME_TEST_SERVER_ALERT')
# EMAIL_PASS = os.environ.get('EMAIL_PASS_TEST_SERVER_ALERT')

EMAIL_TIME_STAMP = str(datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
EMAIL_SUBJECT = 'Serwer radio sławenia nie odpowiada ' + EMAIL_TIME_STAMP
EMAIL_BODY_TEXT_LINE1 = 'Sława!\nSerwer radio sławenia nie odpowiada.'
EMAIL_BODY_TEXT_LINE2 = '\nTest wykonany został: ' + EMAIL_TIME_STAMP
EMAIL_BODY_FOOTER_CALL_SCRIPT = 'monitor_serwer_slawenia_v.1.0'
EMAIL_BODY_FOOTER = '\n\nWiadomość wygenerowana automatycznie, skrypt: ' + EMAIL_BODY_FOOTER_CALL_SCRIPT

EMAIL_BODY = EMAIL_BODY_TEXT_LINE1 + EMAIL_BODY_TEXT_LINE2 + EMAIL_BODY_FOOTER

EMAIL_SENDER = EMAIL_NAME
EMAIL_RECEIVER = EMAIL_NAME
# ----------------------------------------------------------------------------------------

respons = requests.get(SERVER_URL, timeout=SERVER_TIMEOUT)

#    do testów:  if respons.status_code == 200:
# do działania:  if respons.status_code != 200:

if respons.status_code == 200:
    with smtplib.SMTP('smtp.gmail.com', 587) as smtp:
        smtp.ehlo()
        smtp.starttls()
        smtp.ehlo()

        smtp.login(EMAIL_NAME, EMAIL_PASS)
        subject = EMAIL_SUBJECT
        body = EMAIL_BODY
        msg = f'Subject: {subject}\n\n{body}'

        smtp.sendmail(EMAIL_SENDER, EMAIL_RECEIVER, msg.encode('utf-8'))
else:
        print()
        print('Serwer działa - ' + EMAIL_TIME_STAMP)
        print()
        msg = ''

# Test output cmd ------------------------------------------------------------------------
print()
print('  Email sender:  ' + EMAIL_SENDER)
print('Email receiver:  ' + EMAIL_RECEIVER)
print()
print(msg)

W konsoli po uruchomieniu:

Na "skrzynce" pocztowej:

komentarz 17 maja 2020 przez Marak123 Stary wyjadacz (11,190 p.)
Założyłem własnie w gmail.com testowego nowego usunąłem wszystkie zabezpieczenie zostawiłem tylko hasło włączyłem nawet impa czy jakoś tak to google proponował ale i tak nie dział

1 odpowiedź

+2 głosów
odpowiedź 17 maja 2020 przez VBService Ekspert (256,600 p.)
wybrane 17 maja 2020 przez Marak123
 
Najlepsza

Znalezione. wink.
Login credentials not working with Gmail SMTP

W skrócie, chodzi o to, że musisz potwierdzić każde tzw. "źródło logowania" w gmail.
To jest w ustawieniach gmail Twojego konta. (Coś podobne jak zezwalasz nowo zainstalowanemu programowi na Twoim komputerze z poziomu firewall na dostęp do sieci). Te potwierdzenie dla danej "akcji" wykonuje się jednorazowo dla konkretnego "źródła logowania"

P.S. Z Mojego doświadczenia, musiałem potwierdzić, że to ja się loguję do poczty:

  1. Z telefonu (jego nazwa) i tą aplikacją (jej nazwa),
  2. Z komutera (jego nazwa) i z tej przeglądarki (jej nazwa),
  3. Z telewizora smart (jego nazwa) i i tą aplikacją (jej nazwa), itd.
1
komentarz 17 maja 2020 przez Marak123 Stary wyjadacz (11,190 p.)

Dzięki działa ale dziwne bo wczoraj robilem to samo pozwalałem na dostęp mniej bezpieczny i nie działał ale dodałem również co tam jakiś typ pisał o dodaniu aplikacji to dodałem i był błąd jakiś z body czyli samą wiadomością 

BODY = ' \r \n '.join([
'TO: %s' %TO,
'FROM: %s' %gmail_sender,
'Subject: %s' # SUBJECT,
' ',
TEXT
])

Ale usunąłem to i napisałem po prosu tak:

BODY = ' \r \n '.join(["Siema to jest testwy mail"])

 I dział wysłało dzięki wielkie za pomoc męczyłem się z tym już od czwartku.smileyyes

Podobne pytania

0 głosów
0 odpowiedzi 794 wizyt
0 głosów
1 odpowiedź 647 wizyt
pytanie zadane 21 stycznia 2020 w Systemy operacyjne, programy przez michal_php Stary wyjadacz (13,700 p.)
0 głosów
0 odpowiedzi 610 wizyt
pytanie zadane 10 stycznia 2018 w C i C++ przez antekwi546 Użytkownik (510 p.)

93,487 zapytań

142,420 odpowiedzi

322,772 komentarzy

62,904 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...