Python & Django - Formularz kontaktowy

Odpowiedz Nowy wątek
2019-06-10 16:35
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.

Pozostało 580 znaków

2019-06-10 16:39

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 :)

edytowany 2x, ostatnio: grski, 2019-06-10 16:42
Bardzo fajnie to wytłumaczyłeś :) Dzięki! - CzakuGim 2019-06-10 16:43

Pozostało 580 znaków

2019-06-10 17:29
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.


Pozostało 580 znaków

2019-06-10 19:03
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ć?

Pozostało 580 znaków

2019-06-10 19:26
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.

edytowany 1x, ostatnio: grski, 2019-06-10 19:27

Pozostało 580 znaków

2019-06-10 20:48
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

Pozostało 580 znaków

2019-06-11 00:52
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.

edytowany 1x, ostatnio: grski, 2019-06-11 00:53

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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