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

Nie działa kod pod masowe wysyłanie emaili

+1 głos
1,203 wizyt
pytanie zadane 2 sierpnia 2020 w Python przez graj23x Obywatel (1,610 p.)

Nie działa kod pod pod masowe wysyłanie wiadomości email i emaile nie dochodzą i włączyłem dostęp do aplikacji i włączyłem IMAP .Oto kod

import smtplib

with open("to.txt", 'r') as f:
    maile = [a.strip() for a in f.readlines() if a.strip()]
    print(maile)
gmail_user = ''
gmail_password = ''
sent_from = gmail_user
email_text = 'tekst'
try:
    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.ehlo()
    server.starttls()
    server.login(gmail_user, gmail_password)
    for x in maile:
        server.sendmail(sent_from, x, email_text)
except:
    print('Hej')

 

1 odpowiedź

+2 głosów
odpowiedź 2 sierpnia 2020 przez Nelson89 Dyskutant (7,720 p.)

Cześć,

Zwróć uwagę na te dwie rzeczy.

1. Poprawność kodu.

Podczas uruchamiania kodu pojawia się jakiś błąd, czy może w konsoli printowane jest słowo "Hej"?

Po mi po skopiowaniu Twojego kodu i przy próbie uruchomienia go pojawiają się błędy

- Błąd w linii 2 - jest tam spacja

- Kolejny błąd w linii 4, 5 itd - wszędzie tam gdzie występuje wcięcie. Musiałem ten wcięcia usunąć i na nowo stworzyć z wykorzystaniem 4 spacji. Po wykonaniu tego udało mi się uruchomić kod bez błędu.

2. Wybór protokołu do wysłania wiadomości.

Do wysyłania wiadomości użyłbym serwera SMTP, IMAP lub POP3 użyłbym do odbierania lub zarządzania folderami, wiadomościami na skrzynce pocztowej. Także na gmailu zobacz sobie zobaczyć jakie porty masz do dyspozycji aby wysyłać wiadomości z wykorzystaniem SMTP.

Test

Aby przetestować Twój kod uruchomiłem serwer SMTP do debugowania z wykorzystaniem polecenia:

python3 -m smtpd -n -c DebuggingServer localhost:1025

Następnie utworzyłem plik z mailami tj.: test@test.pl abc@abc.pl abc@testujemy.pl. Każdy adres mailowy znajduje się w nowym wierszu.

Po uruchomieniu kodu w terminalu, w którym mam uruchomiony serwer do debugowania pojawiła się wysłana wiadomość, co oznacza, że program działa poprawnie - wiadomość dotarła na serwer, gdzie dalej trafi do nadawców (w przypadku gdyby to był prawdziwy serwer).

To co widać w terminalu można poprawić, żeby lepiej wyglądało, uzupełniając o takie informacje jak nadawca, odbiorcy, temat, itp. To możesz zobaczyć w tym poście.

Sprawdziłem to też na prawdziwym serwerze smtp i wiadomość dotarła na mojego maila.

Pozdrawiam,

Nelson

 

komentarz 8 września 2020 przez graj23x Obywatel (1,610 p.)
A pod mój kod jak zrobić taki szablon
komentarz 29 stycznia 2021 przez graj23x Obywatel (1,610 p.)
Tylko gdzie taki kod dać w którym punkcie do tego mojego jakiś dokładniejszy kod pod szablon do masowej wysyłki typu tło kolorowe,rozmiar czcionek ,kolor,buty ok,link ,foto.
komentarz 30 stycznia 2021 przez Nelson89 Dyskutant (7,720 p.)

Cześć,

patrząc na ten artykuł, co go wyżej zamieściłem, autor wrzuca treść jako trzeci argument metody sendmail. Czyli w zasadzie przed tym musiałbyś załadować szablon i podstawić odpowiednie dane z Jinja2.  Czyli:

1. Tworzysz szablon w html, a w miejsca gdzie chciałbyś wstawić jakieś dane, które będą inne dla każdej serii wysyłanych mail dodajesz znaczniki Jinja.

2. W funkcji odpowiedzialnej za wysyłanie maili tworzysz / wczytujesz / generujesz dane, wczytujesz szablon z punktu 1 i renderujesz go z danymi z tego punktu.

3. Szablon po renderowaniu powinien zawierać odpowiednią treść i możesz wysłać go z wspomnianą metodą sendmail.

Jeżeli chodzi o edycje tła, itp. - to możesz zrobić sobie kilka szablonów i w kodzie będziesz decydować, który ma zostać użyty. Możesz też wrzucić odpowiednie dane podczas renderowania, które zostaną wrzucone do kodu i np. ustawią rozmiar czcionki, itp.

Cały proces jest tutaj ładnie opisany:

https://dev.to/carola99/send-an-html-email-template-with-python-and-jinja2-1hd0

Pozdrawiam,

Nelson

komentarz 27 maja 2022 przez graj23x Obywatel (1,610 p.)

próbowałem naprawić ten kod tak

import smtplib
with open("moje.txt", 'r') as f:
    maile = [a.strip() for a in f.readlines() if a.strip()]
    print(maile)
gmail_user = 'okuppieniedzy@gmail.com'
gmail_password = 'TAboret2345'
sent_from = gmail_user
email_text = 'To ty'
try:
    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.ehlo()
    server.starttls()
    server.login(gmail_user, gmail_password)
    for x in maile:
        server.sendmail(sent_from, x, email_text)
except:
    print('Hej')

A błąd taki się pojawia :

"C:\Users\Pablo\PycharmProjects\moja emaile\venv\Scripts\python.exe" "C:/Users/Pablo/PycharmProjects/moja emaile/main.py"
Traceback (most recent call last):
  File "C:\Users\Pablo\PycharmProjects\moja emaile\main.py", line 2, in <module>
    with open("moje.txt", 'r') as f:
FileNotFoundError: [Errno 2] No such file or directory: 'moje.txt'

komentarz 27 maja 2022 przez Nelson89 Dyskutant (7,720 p.)

Cześć

program nie może znaleźć pliku moje.txt. Sprawdź czy plik ten rzeczywiście istnieje, Jak używasz tego kodu jako pakiet, to pamiętaj, że zaimportowane moduły/pakiety widzą ścieżkę z punktu głównego pliku (czyli ten, który uruchamiasz po poleceniu python ... w bashu/shellu, a nie z poziomu modułu (tutaj może się przydać zmienna __file__ aby ustalić tą ścieżkę) albo podaj po prostu pełną ścieżkę do pliku.

Pozdrawiam

Nelson

Podobne pytania

0 głosów
0 odpowiedzi 628 wizyt
pytanie zadane 20 maja 2021 w Python przez graj23x Obywatel (1,610 p.)
0 głosów
1 odpowiedź 530 wizyt
0 głosów
1 odpowiedź 706 wizyt
pytanie zadane 1 maja 2021 w Python przez Programmer01 Początkujący (490 p.)

93,630 zapytań

142,551 odpowiedzi

323,054 komentarzy

63,134 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2174p. - dia-Chann
  2. 2077p. - raydeal
  3. 2034p. - DziarnowskiJ
  4. 2005p. - Łukasz Piwowar
  5. 1989p. - CC PL
  6. 1957p. - Maurycy W
  7. 1954p. - Adrian Wieprzkowicz
  8. 1782p. - rucin93
  9. 1777p. - robwarsz
  10. 1743p. - Michal Drewniak
  11. 1701p. - rafalszastok
  12. 1588p. - Tomasz Bielak
  13. 1491p. - Rafał Trójniak
  14. 1377p. - ssynowiec
  15. 1208p. - Mariusz Fornal
Szczegóły i pełne wyniki

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
...