Python & Django - Formularz kontaktowy

0

Cześć Wam!
Mam pytanie dotyczące formularza kontaktowego w Django.
W jaki, elegancki sposób realizuje się formularze kontaktowe w django?
Powiedzmy że mam stronkę/blog/sklep coś w tym stylu. Chcę, aby odwiedzający mieli możliwość kontaktowania się ze mną. A więc umieszczam w zakładce "Kontakt" formularz kontaktowy.
Powiedzmy że klient wchodzi w tę zakładkę, uzupełnia własny email, umieszcza zapytanie, wysyła je.
Czy takie zapytanie powinno być wyświetlone u właściciela strony w panelu administracyjnym django?
Czy może należy zbudować funkcjonalność, która z automatu po kliknięciu "send" wysyła do niego maila (do właściciela strony)?
A może oba rozwiązania (zapis do bazy danych + przesłanie na maila)?
Uczę się Django i kroczek po kroczku buduję własne aplikacje. Stąd takie (pewnie dość podstawowe) pytania.

1

Zależy od konkretnej appki, ale zazwyczaj jak powiesz ludziom z biznesu, że mają sobie wejść do admina i zobaczyć mejle to...

Ogółem możesz zapisywać info o wiadomości na cele wewnętrzne jakieś tam i być może gdzieś to wyświetlać, a do tego wysyłać mejla - np. jednego na swoją skrzynkę i drugiego jako potwierdzenie wiadomości na skrzynke tego, kto napisał. Przykład: https://wsvincent.com/django-contact-form/

Dwie opcje w sumie - ogarniasz sobie serwerek smtp, podpinasz go pod django
Albo korzytstasz z czegoś już skonfigurowanego za ciebie typu sparkpost i wysłanie mejla to nic innego jak call do api w postaci requests.post("adres", "treść mejla")

Tak jak dla mnie, koszerny sposób jest taki:
user wysyła foremke kontaktową -> walidacja foremki -> wysłanie asynchronicznego taska na kolejke -> zwrotka dla usera, że wszystko cacy

Edit: jak już jesteśmy przy wysyłaniu mejla to pamiętaj o tym, że może warto to zrobić asynchronicznie, np celery.
Dodatkowo może jakaś retry-logic, bo czasami po prostu serwer smtp nie działa albo coś? Także możesz poczytać też o tych dwóch tematach :)

0

Też prościej byłoby stronę robić w fw/mailer php, robisz kopiuj-wklej, zmieniasz maila docelowego i styka, od razu z walidacją też, nie dziwi dlaczego Dj tak mało popularny.

0
grski napisał(a):

Zależy od konkretnej appki, ale zazwyczaj jak powiesz ludziom z biznesu, że mają sobie wejść do admina i zobaczyć mejle to...

Jeszcze drobne pytanie nawiązujące do powyższego.
Użytkownik kontaktuje się ze mną przez formularz.
Ja jego zapytanie składam w jakąś zmienną (gdzie w treści mam adres email użytkownika i treść zapytania) i wysyłam (wykorzystując wewnętrzny mail).
Tym samym dostaję zapytania użytkowników z mojego wewnętrznego mail'a (np. [email protected]). Np 100 zapytań - wszystkie z tego samego maila - mimo że od różnych użytkowników. Dopiero w treści mam konkretny adres konkretnego użytkownika.
W takim wypadku jeśli chcę odpowiedzieć użytkownikowi, muszę sobie skopiować adres z treści, i dopiero odpisać. Trochę to niewygodne - czy mi się wydaje?

Czy tak to powinno działać?

0

Tldr - nie.
Sam możesz ustawiać to, z jakiego adresu zostanie wysłany mejl
Czyli możesz wysłać sam do siebie mejla z praktycznie dowolnego adresu tak w zasadzie. Wtedy możesz odpowiadać użytkownikom normalnie jak w każdej konwersacji na emajlu.

Czyli user '[email protected]' wysyła zapytanie
ty przesyłasz tego mejla do siebie z nadawcą '[email protected]' i już.
Nie wiem czy dobrze zrozumiałem though.

0

Spróbowałem na dwa sposoby:

  1. Wysyłam mail'a z gmail'a z wykorzystaniem SMTP - działa. Z tym ze wysyłam na stałe z danego adresu.
  2. Postępuję jak pokazano poniżej:
    https://wsvincent.com/django-contact-form/
    Kwestia, że dostaję takie same odpowiedzi jak w przykładzie, teoretycznie wiadomość powinna być wysłana - nie mam żadnych błędów.
    A na mail'u jak wiadomości nie było - tak nie ma.
    Taka sama sytuacja zarówno dla gmail. jak i wp.pl
    Odpowiedź po wysłaniu:
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: Test
From: *****************
To: ***************
Date: Mon, 10 Jun 2019 18:45:31 -0000
Message-ID: <[email protected]>
Test
0

Z wysyłaniem przez gmaila ja się raczej nie bawiłem.
Ze sparkpostem działa to spoko - przez api.
Z simple email service od aws też powinno.
Fajne rzeczy do nauki w ogóle, zwłaszcza aws ses, także polecam : )
Btw. możesz pokazać kod po prostu, wyrzuć tylko dane logowania itd coś popatrzymy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1