• 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

Object Storage Arubacloud
+1 głos
664 wizyt
pytanie zadane 2 sierpnia 2020 w Python przez graj23x Obywatel (1,590 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,590 p.)
A pod mój kod jak zrobić taki szablon
komentarz 29 stycznia 2021 przez graj23x Obywatel (1,590 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,590 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 429 wizyt
pytanie zadane 20 maja 2021 w Python przez graj23x Obywatel (1,590 p.)
0 głosów
1 odpowiedź 291 wizyt
0 głosów
1 odpowiedź 383 wizyt
pytanie zadane 1 maja 2021 w Python przez Programmer01 Początkujący (490 p.)

92,555 zapytań

141,402 odpowiedzi

319,541 komentarzy

61,939 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!

...