ďťż
 
[pgsql] funkcja wysyłająca maila? ďťż
 
[pgsql] funkcja wysyłająca maila?
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[pgsql] funkcja wysyłająca maila?



ethanak - 24-12-2006 00:37
[pgsql] funkcja wysyłająca maila?
  Witam.

PostgreSQL 8.1.4, Linux.

Krótko: mam funkcję w plpgsql zakładającą konto użytkownika. Funkcja
może być wywoływana z kilku różnych aplikacji (w tym przynajmniej jednej
której nie mogę tknąć) toteż wysyłka maila z poziomu aplikacji jest
niemożliwa.

Pytanie: jak w najprostszy sposób wysłać użytkownikowi maila z
powiadomieniem że konto zostało założone?

Zakładam że:

a) wysłanie maila jest ostatnią czynnością w transakcji;

b) nie interesuje mnie to czy mail został wysłany (jest to tylko jedna z
form powiadomienia) i niewysłanie/wysłanie nie może mieć żadnego wpływu
na transakcję;

c) istnieje lokalny MTA (msmtp konkretnie) który tylko do tego służy.

Aha, zapomniałbym... podobno to bardzo proste w plperlu i plpythonie,
niestety moje wiadomości z zakresu tych języków sprowadzają siędo tego,
że wiem że są :(

ethanak
--
mailto=window.atob('ZXRoYW5ha0Bwb2xpcC5jb20=');
Jedyny produkt M$ który by nie ssał to byłby odkurzacz





ethanak - 24-12-2006 00:37

  ethanak wrote:
[...]

Nieaktualne - nauczyłem się podstaw pythona :)

ethanak
--
mailto=window.atob('ZXRoYW5ha0Bwb2xpcC5jb20=');
/* Pisze człowiek ambitnie, a tu przychodzi prostak i wszystko rozumie.
To jest ewidentna bezczelność!
S. Friedmann/J. Kofta */




hubert depesz lubaczewski - 24-12-2006 00:37

  On 2006-12-14, ethanak <sweethanak@buziaczek.pl> wrote:
> Pytanie: jak w najprostszy sposób wysłać użytkownikowi maila z
> powiadomieniem że konto zostało założone?

hmmm .. musisz użyć języka typu untrusted.

> Zakładam że:
> a) wysłanie maila jest ostatnią czynnością w transakcji;

to nie ma większego znaczenia.

> b) nie interesuje mnie to czy mail został wysłany (jest to tylko jedna z
> form powiadomienia) i niewysłanie/wysłanie nie może mieć żadnego wpływu
> na transakcję;

fine.

> c) istnieje lokalny MTA (msmtp konkretnie) który tylko do tego służy.
> Aha, zapomniałbym... podobno to bardzo proste w plperlu i plpythonie,
> niestety moje wiadomości z zakresu tych języków sprowadzają się do tego,
> że wiem że są :(

1. createlang plperlu
2.
create function send_mail(text, text, text) returns void as $BODY$
my ($to, $subject, $body) = @_;
use Mail::Sender;
....
$BODY$ language plperlu;
kodu perlowego nie tlumacze bo wydaje mi sie, ze pisac w perlu potrafisz
:)
3. po zalozeniu maila zrob select send_mail(costam);
w szczegolnosci jak zakladasz funkcja, albo chcesz to z triggera w
pl/pgsql'u to zamiast select'a mozesz:
perform send_mail(.....);
i to wszystko.

depesz

--
http://www.depesz.com/ -> nowy, jeszcze lepszy, depesz




ethanak - 24-12-2006 00:37

  hubert depesz lubaczewski wrote:
[...]
> 3. po zalozeniu maila zrob select send_mail(costam);
> w szczegolnosci jak zakladasz funkcja, albo chcesz to z triggera w
> pl/pgsql'u to zamiast select'a mozesz:
> perform send_mail(.....);
> i to wszystko.

Dzięki - zrobiłem to prawie identycznie tyle że w pythonie (na szczęście
mam tu obok kolesia co mniej więcej ten język kuma) - perl jest dla mnie
czarną magią i tak chyba pozostanie...

Dodatkowo zrobiłem tak, że wywoływana jest nie bezpośrednio funkcja
wysyłająca maila (bo czekała na dogadanie się z smtp) ale dodatkowy
zewnętrzny programik który forkuje się, robi grzecznie exit coby
postgres nie musiał na niego czekać i dopiero ten sforkowany pociotek
męczy się z smtp.

Na razie działa... zobaczymy jak to wyjdzie w wersji produkcyjnej :)

ethanak
--
mailto=window.atob('ZXRoYW5ha0Bwb2xpcC5jb20=');
/* Pisze człowiek ambitnie, a tu przychodzi prostak i wszystko rozumie.
To jest ewidentna bezczelność!
S. Friedmann/J. Kofta */





hubert depesz lubaczewski - 24-12-2006 00:37

  On 2006-12-14, ethanak <sweethanak@buziaczek.pl> wrote:
> Dodatkowo zrobiłem tak, że wywoływana jest nie bezpośrednio funkcja
> wysyłająca maila (bo czekała na dogadanie się z smtp) ale dodatkowy
> zewnętrzny programik który forkuje się, robi grzecznie exit coby
> postgres nie musiał na niego czekać i dopiero ten sforkowany pociotek
> męczy się z smtp.

szczerze? jak już robisz takie coś to lepiej zrób inaczej.
zrób tablicę z kolejką rzeczy do wysłania.
tam wstawiaj dane (wystarczy pl/pgsql).
a potem cronjob albo daemon który to czyta i wysyła.
zdecydowanie lepsze.

depesz

--
http://www.depesz.com/ -> nowy, jeszcze lepszy, depesz




ethanak - 24-12-2006 00:37

  hubert depesz lubaczewski wrote:
[...]
> szczerze? jak już robisz takie coś to lepiej zrób inaczej.
> zrób tablicę z kolejką rzeczy do wysłania.
> tam wstawiaj dane (wystarczy pl/pgsql).
> a potem cronjob albo daemon który to czyta i wysyła.
> zdecydowanie lepsze.

Tak dotychczas robiłem - wyjątkowo na tej maszynie jednak nie chcę mieć
żadnych dodatkowych demonów (które mają to do siebie że się
oddemonizowywują w najmniej spodziewanym momencie) ani wpisów do crona.
Zresztą właśnie próbujemy się pozbyć wszelkich dodatkowych procesów
(koleś próbuje właśnie zmusić Asteriska do pracy z Postgresem, na razie
z miernym skutkiem).

Może to i takie rozwiązanie naokoło, ale zawsze jakieś jest :)

ethanak
--
mailto=window.atob('ZXRoYW5ha0Bwb2xpcC5jb20=');
/* Pisze człowiek ambitnie, a tu przychodzi prostak i wszystko rozumie.
To jest ewidentna bezczelność!
S. Friedmann/J. Kofta */




Mikolaj Rydzewski - 24-12-2006 00:37

  ethanak <sweethanak@buziaczek.pl> wrote:

> Tak dotychczas robiłem - wyjątkowo na tej maszynie jednak nie chcę mieć
> żadnych dodatkowych demonów (które mają to do siebie że się
> oddemonizowywują w najmniej spodziewanym momencie) ani wpisów do crona.
> Zresztą właśnie próbujemy się pozbyć wszelkich dodatkowych procesów
> (koleś próbuje właśnie zmusić Asteriska do pracy z Postgresem, na razie
> z miernym skutkiem).

Jest taka regula: KISS - keep it simple st.... ;-)

Cronjob, daemon sie do niej stosuja. Czego nie mozna powiedziec o
forkowaniu zewnetrznego procesu uruchamianego przez postgresa w
okreslonych sytuacjach ;-)

--
Mikolaj Rydzewski <miki@ceti.pl> http://ceti.pl/~miki/
PGP KeyID: 8b12ab02
There are three kinds of people: men, women, and unix.




ethanak - 24-12-2006 00:37

  Mikolaj Rydzewski wrote:
[...]
> Jest taka regula: KISS - keep it simple st.... ;-)

A znam, znam :)

>
> Cronjob, daemon sie do niej stosuja. Czego nie mozna powiedziec o
> forkowaniu zewnetrznego procesu uruchamianego przez postgresa w
> okreslonych sytuacjach ;-)
>

Wyobraź sobie że dla mnie jest to z pewnych przyczyn prostsze (nieważne
jakich, ale jest). Toteż do tej reguły się stosuję...

ethanak
--
mailto=window.atob('ZXRoYW5ha0Bwb2xpcC5jb20=');
/* Pisze człowiek ambitnie, a tu przychodzi prostak i wszystko rozumie.
To jest ewidentna bezczelność!
S. Friedmann/J. Kofta */
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    =?ISO-8859-2?Q?Narz=EAdzie_do_budowania_zapyta=F1_SQL=2C?==?I SO-8859-2?Q?_PL/PgSQL=2C_PL/SQL=2C_T-SQL?= Photoshop CS2 - funkcje, =?ISO-8859-2?Q?kt=F3rych_si=EA_nie_?==?ISO-8859-2?Q?spodziewasz=2E=2E=2E?= [PostgreSQL] jak =?ISO-8859-2?Q?pobra=E6_warto=B6=E6_zwracan?==?ISO-8859-2?Q?=B1_przez_funkcj=EA=3F?= =?iso-8859-2?Q?=5BMS_SQL=5D_Czy_mo=BFna_wywo=B3a=E6_funkcje_t ylko_raz_dla?==?iso-8859-2?Q?_ca=B3ego_zbioru_=BCr=F3d=B3owego=3F?= [pgsql] Akcja w =?iso-8859-2?b?emFsZb9ub7ZjaQ==?= od liczby zmienionych =?iso-8859-1?q?rekord=F3w?= [PostgreSQL] Jak =?ISO-8859-2?Q?po=B3=B1czy=E6_funkcje_z_w?==?ISO-8859-2?Q?idokiem?= [sql][pgsql] zapytanie sql [pgsql] Wykonanie triggera po =?ISO-8859-2?Q?zako=F1czeniu_tra?==?ISO-8859-2?Q?nsakcji?= postgres - ile razy wykona =?ISO-8859-2?Q?si=EA_funkcja_w_?==?ISO-8859-2?Q?zapytaniu?= [MySQL] Load data infile i =?ISO-8859-2?Q?u=BFycie_funkcji_r?==?ISO-8859-2?Q?eplace?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • lunadance.htw.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com