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

question-closed Python, smtp. Wysyłanie wiadomości e-mail. Nietypowy problem ze zmiennymi środowiskowymi.

Object Storage Arubacloud
0 głosów
565 wizyt
pytanie zadane 15 stycznia 2020 w Python przez Jakub 0 Pasjonat (23,120 p.)
zamknięte 15 stycznia 2020 przez Jakub 0

Witam, mam bardzo dziwny problem. Kod prezentuje się tak:

import os
import smtplib

EMAIL_ADDRESS = os.environ.get('GTEST_APP_PASS')
EMAIL_PASSWORD = os.environ.get('GTEST_LOGIN')

with smtplib.SMTP('smtp.gmail.com', 587) as smtp:
    smtp.ehlo()
    smtp.starttls()
    smtp.ehlo()

    smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)

    subject = 'Hello world!'
    body = 'I am Jakub Padlo'

    msg = f'Subject: {subject}\n\n{body}'

    smtp.sendmail(EMAIL_ADDRESS, 'jakubpadlo4@gmail.com', msg)

Problem tyczy się metody login, przy takiej postaci mam błąd autoryzacji. Jednak kiedy zamiast używania zmiennych środowiskowych napiszę maila i hasło do mojego testowego konta na sztywno w kod programu to problem znika. W metodzie login nie mogę użyć ani samej zmiennej EMAIL_ADDRESS ani tej z hasłem.

Wiem że wielu z was powie teraz że po prostu zmienne środowiskowe mają w sobie złą wartość lub najzwyczajniej nie istnieją. Problem jest tylko taki że kiedy wypisuje w konsoli wartości EMAIL_ADDRESS oraz EMAIL_PASSWORD to wszystko się zgadza. Kiedy te wartości skopiuję do kodu to problemu nie ma. Poza tym gdyby problem był przykładowo z EMAIL_ADDRESS to metoda sendmail nie działała w ogóle prawidłowo, a ona nie sprawia żadnych problemów. 

Nie mam zielonego pojęcia co tu może się dziać. 

Bardzo będę wdzięczny za pomoc bo żadne sensowne wyjaśnienie tego fenomenu mi nie przychodzi do głowy :/

Bardzo dziękuje i pozdrawiam serdecznie. 

 

 

komentarz zamknięcia: problem rozwiązany

1 odpowiedź

0 głosów
odpowiedź 15 stycznia 2020 przez edwardkraweznik Dyskutant (9,930 p.)
wybrane 15 stycznia 2020 przez Jakub 0
 
Najlepsza

w zależności jak MTA jest skonfigurowany często wymagane jest TLS (prawdopodobnie gmail tego wymaga)

poczytaj o starttls

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

zaznaczam, że tego kodu nie testowałem ale prawdopodobnie w tym problem

nie mam konta na gmailu ale możesz to sprzwdzić wysyłając maila zwykłym telnetem... (raczej na 100% gmail wymaga TLS)

EDIT:

Jeszcze może jakiś problem z argumentami ?

sprawdź sobie jakoś primtem czy skrypt dostaje te argumenty

https://www.tutorialspoint.com/python/python_command_line_arguments.htm

Dupa niedoczytałem twojego kodu :)

sprawdż sobie printem czzy skrypt dostaje zmienne...

komentarz 15 stycznia 2020 przez Jakub 0 Pasjonat (23,120 p.)

sprawdż sobie printem czzy skrypt dostaje zmienne...

No mówiłem że tak, to jest właśnie strasznie dziwne. Działa mi tylko wtedy kiedy nie korzystam z tych zmiennych środowiskowych, z tym że ja nie za bardzo chcę trzymać moje hasło w kodzie programu ;)

Cóż, pozostało mi chyba tylko stworzyć nowe hasło dla aplikacji, może coś z tego będzie. 

komentarz 15 stycznia 2020 przez Jakub 0 Pasjonat (23,120 p.)
edycja 16 stycznia 2020 przez Jakub 0
Przeszło mi nawet przez myśl że na windowsie wartości zmiennych środowiskowych są jakoś inaczej kodowane i coś się nie zgadza...
komentarz 15 stycznia 2020 przez reaktywny Nałogowiec (40,990 p.)

@Jakub 0, A jeszcze bym sprawdził jedną rzecz. W ustawieniach poczty GMAIL trzeba zezwolić na obsługę poczty z programów "zewnętrznych" (czy jakos tak).

There are a few steps you need to take before you can send emails through Gmail with SMTP, and it has to do with authentication. If you're using Gmail as the provider, you'll need to tell Google to allow you to connect via SMTP, which is considered a "less secure" method.

You can't really blame Google for setting it up this way since your application (or some other 3rd party app) will need to have your plaint-text password for this to work, which is definitely not ideal. It's not like the OAuth protocol where a revocable token is issued, so they have to find another way to ensure no unauthorized parties access your data.

 

komentarz 15 stycznia 2020 przez edwardkraweznik Dyskutant (9,930 p.)

a zobacz sobie:

EMAIL_ADDRESS = os.environ.get('GTEST_APP_PASS')
EMAIL_PASSWORD = os.environ.get('GTEST_LOGIN')

może powinno być odwrotnie:

EMAIL_ADDRESS = os.environ.get('GTEST_LOGIN')
EMAIL_PASSWORD = os.environ.get('GTEST_APP_PASS')

 

komentarz 15 stycznia 2020 przez Jakub 0 Pasjonat (23,120 p.)

@jankowalski2019

Nie wiem jak to skomentować... nie mam nic na swoją obronę :/ 

Masz NAJ ;) Dzięki laugh

* chyba jestem ślepy 

1
komentarz 15 stycznia 2020 przez edwardkraweznik Dyskutant (9,930 p.)
bywa :) sam się nieraz tak pierdzielnę :P pozdrawiam

Podobne pytania

0 głosów
2 odpowiedzi 697 wizyt
pytanie zadane 21 lipca 2017 w PHP przez Tomo231 Początkujący (320 p.)
0 głosów
1 odpowiedź 239 wizyt
pytanie zadane 25 lipca 2019 w JavaScript przez DanexZ Obywatel (1,270 p.)
0 głosów
1 odpowiedź 456 wizyt
pytanie zadane 22 grudnia 2015 w C i C++ przez C☺ndzi Stary wyjadacz (12,100 p.)

92,572 zapytań

141,422 odpowiedzi

319,644 komentarzy

61,959 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...