PDA

Zobacz pełną wersję : aiContactSafe: wyślij kopię do nadawcy z e-maila odbiorcy a nie nadawcy. Kto potrafi?



piollo
30-10-2012, 16:47
Cześć,

nie mogę znaleźć na forum podobnego problemu. Chodzi mi o taką zmianę plików aiContactSafe (bo nie sądzę, żeby gdzieś to było do ustawienia z poziomu konfiguracji przez panel administracyjny!), aby po zaznaczeniu pola "wyślij kopię do nadawcy" w formularzu na stronie, e-mail do nadawcy był nadawany z e-maila administratora/serwera/odbiorcy formularza, a nie jak to jest obecnie z e-maila wpisanego w formularzu jako kontaktowy. Niestety niektóre serwery uznają takiego e-maila jako SPAM, próbę oszustwa itp., ponieważ jest on wysyłany z takim samym polem "From:" oraz polem "To:", natomiast silnik wysyłający jest na innym serwerze niż podany silnik obsługujący wpisany w formularzu e-mail. Dla przykładu po wpisaniu adresu użytkownika z @poczta.onet.pl w formularzy na stronie postawionej na serwerze home.pl, nadawca formularza dostaje zwrotkę, że wiadomość nie mogła zostać dostarczona, mimo, że serwer home.pl dostarcza do odbiorcy dane z formularza prawidłowo. Niestety ten problem wprowadza użytkowników formularza w błąd.



Hi. This is the qmail-send program at home.pl.
I'm afraid I wasn't able to deliver your message to the following addresses.
This is a permanent error; I've given up. Sorry it didn't work out.

<***@poczta.onet.pl>:
213.180.147.146 does not like recipient.
Remote host said: 554 5.7.1 <***@poczta.onet.pl>: Recipient address rejected: Spf check: fail
Giving up on 213.180.147.146.


Nie wszystkich, bo niektórzy dostają tylko informację, że to może być próba oszustwa, ale kopia wiadomości dochodzi prawidłowo, np. użytkownicy @gmail.com.

Innym rozwiązaniem by było coś takiego, gdyby podczas ustawiania pola "From:" ustawić e-mail domyślny, czyli e-mail administratora/serwera/systemu Joomla (co jest do zrobienia oczywiście z poziomu panela administracyjnego aiContactSafe), natomiast udało się w jakiś sposób dodać do funkcjonalności aiContactSafe możliwość dopisywania adresu nadawcy/wypełniającego formularz do pola "Reply-To:" - to by rozwiązało problem, bo wtedy kopia wysyłana do nadawcy w polu "From:" miałaby prawidłowy adres wysyłkowy (e-mail serwera), a odbiorca formularza mógłby w programie pocztowym odbierającym formularze bezpośrednio odpowiadać na wiadomości do nadawcy (bez używania kopiuj/wklej adresu użytkownka formularza).

Czy macie jeszcze jakieś inne pomysły na rozwiązanie problemu tejże funkcjonalności? Oczywiście jeszcze jednym sposobem jest wyłączenie pola "wyślij kopię do nadawcy" ;) hehe, ale uznajmy, że to pole jest nam potrzebne i chcemy tylko w odpowiednim miejscu zmienić coś w plikach aiContactSafe lub phpmailer, z którego chyba korzysta aiContactSafe? (nie znam się na PHP na tyle, aby samemu do tego dojść - próbowałem, ale bez skutku)

Z góry dzięki za pomoc!

seba.adm
31-10-2012, 20:27
Witam.

Spróbuj rozwiązania opisanego tutaj>> (http://wiki.joomla.pl/index.php/Formularz_kontaktowy_aiContactSafe/Problemy) .

piollo
02-11-2012, 12:38
Witaj Seba! WIELKIE DZIĘKI za ten trop! Nie wiedziałem, gdzie tego szukać - nie wiem, czemu umknął mi ten plik message.php? :)
Zacząłem przyglądać się zmiennym w tym pliku, bo nie chciałem ot tak sobie tylko podmienić zmiennej ręcznie wpisanym adresem e-mail :) No i co z tego wynikło?

Okazuje się, że w panelu administracyjnym aiContactSafe można jednak ustawić taką funkcjonalność BEZ INGERENCJI w plik message.php :D
W tym celu wystarczy "jedno kliknięcie" :D - należy wejść do zakładki "Ustawienia" i znaleźć pozycję "Adres nadawcy Joomla domyślnym:" [checkbox]. Ta funkcjonalność powoduje, że od tej pory formularze są nadawane do odbiorców z konta głównego e-mail ustawionego w konfiguracji serwera w panelu admina Joomla! Rozwiązuje to problem o którym pisałem na początku wątku i już nie występują błędy "autoryzacji" gdy nadawca formularza poprosi o kopię formularza na swój e-mail (normalnie był on zarówno w polu nagłówka [From:] oraz w polu [To:], co powodowało, że zabezpieczenia antyspamowe na wielu serwerach pultają się i odrzucają próbę wysłania takiej wiadomości). Teraz jest tak, że potwierdzeniu/kopii formularza w pole "From:" wstawiany jest adres serwisu Joomla! (np. administratora), a w polu [To:] adres nadawcy formularza - i o to chodziło, ale... są pewne niedogodności :(

Otóż w pole "Reply-To:" wstawiany jest nie jeden adres e-mail, jak to powinno być, ale dwa - nie tylko adres nadawcy formularza, ale także e-mail serwisu Joomla! (odbiorcy formularza). Powoduje to, że przy odpowiadaniu na taką wiadomość wysłaną przez ten formularz mamy w polu "To:" dwa adresy e-mail: jeden prawidłowy "nadawcy", a drugi "nasz", który za każdym razem trzeba ręcznie kasować, zatem ergonomia podobna do tego co kopiowanie prawidłowego adresu przez schowek kopij/wklej :( Nie mogłem tego odpuścić i zacząłem grzebać w pliku message.php ;) (nie byłbym sobą, gdybym nie doprowadził do funkcjonalności, jaka mi była potrzebna).

CEL:

Nadawca formularza nie musi podawać swojego imienia i nazwiska

jeżeli poda, jest ono wstawiane w pole nagłówka [From:]
jeżeli nie poda, a administrator strony NIE zaznaczy w "Ustawieniach" aiContactSafe pola [Adres nadawcy Joomla domyślnym], to podstawiana jest nazwa z pola tekstowego w "Ustawianiach" pt. [Domyślna nazwa nadawcy]
jeżeli nie poda, a administrator strony zaznaczy w "Ustawieniach" checkbox [Adres nadawcy Joomla domyślnym], to podstawiana jest nazwa witryny Joomla! z "Konfiguracji" strony.


Nadawca formularza nie musi podawać swojego adresu e-mail

jeżeli poda, jest on wstawiany w pole nagłówka [From:]
jeżeli nie poda, a administrator NIE zaznaczy [Adres nadawcy Joomla domyślnym], to w pole [From:] e-maila wstawiany jest adres wpisany w pole tekstowe w "Ustawianiach" aiContacSafe pt. [Domyślny e-mail]
jeżeli nie poda, a administrator zaznaczy [Adres nadawcy Joomla domyślnym], to e-mailem nadawcy formularza staje się adres witryny z "Konfiguracji" Joomla!


Odbiorca formularza widzi adres nadawcy formularza w polu [From:] nagłówka e-maila
Nadawca formularza otrzymuję kopię formularza na swój adres e-mail w którym nagłówku [From:] jest adres [Domyślny e-mail] oraz [Domyślna nazwa nadawcy] z "Ustawień" aiContacSafe lub [Nazwa witryny Joomla] i [adres e-mail witryny Joomla] z "Konfiguracji Joomla!" - w zależności, czy administrator zaznaczy checkbox [Adres nadawcy Joomla domyślnym]
Nadawca formularza podczas otrzymywania "kopii" swojego formularza dostaje e-mail z przedrostkiem w tytule e-maila, np. "[KOPIA]" (można wstawić zmienną językową, ale w swoim przykładzie zrobiłem po polsku bezpośrednio w pliku "message.php").


ROZWIĄZANIE:
plik message.php v.2.0.14

przed wierszem nr 1159:


// send the message
$isOK = JUtility::sendMail($from, $fromname, $email_recipient, $subject, $body, $mode, $cc, $bcc, $file_attachments, $replyto, $replytoname);

dopisać:


//WHITE send the message
if ($email_recipient == $replyto) {
$from = $default_mail;
$fromname = $default_name;
$subject = '[KOPIA]'.$subject;
} //WHITE
$isOK = JUtility::sendMail($from, $fromname, $email_recipient, $subject, $body, $mode, $cc, $bcc, $file_attachments, $replyto, $replytoname);

od wiersza 1023 do 1041:


// check if the email field is specified, if it's not use the default one in Joomla and disable the send_to_sender variable
if (strlen($from) == 0) {
$from = $this->_app->getCfg('mailfrom');
$send_to_sender = 0;
}
// check if the name is specified, use the default one in joomla if it's not
if (strlen($fromname) == 0) {
$fromname = $this->_app->getCfg('fromname');
}

// for security reasons some servers don't accept using as the sender a different address as one installed on the server
// for this reason $from and $fromname will be set as the default address of Joomla and the name of the site and two new fields will be used:
// $replyto, $replytoname
$replyto = $from;
$replytoname = $fromname;
if ($this->_config_values['set_sender_joomla']) {
$from = $this->_app->getCfg('mailfrom');
$fromname = $this->_app->getCfg('fromname');
}

zmodyfikowałem w ten sposób:


//WHITE
$default_name = $this->_config_values['default_name'];
$default_mail = $this->_config_values['default_email'];
$joomla_mail = $this->_app->getCfg('mailfrom'); //WHITE

// check if the email field is specified, if it's not use the default one in Joomla and disable the send_to_sender variable
if (strlen($from) == 0) {
//WHITE $from = $this->_app->getCfg('mailfrom');
if ($default_mail)
$from = $default_mail;
else
$from = $joomla_mail;
$send_to_sender = 0; //WHITE
}
// check if the name is specified, use the default one in joomla if it's not
if (strlen($fromname) == 0) {
//WHITE $fromname = $this->_app->getCfg('fromname');
if ($default_name)
$fromname = $default_name;
else
$fromname = $this->_app->getCfg('fromname');
} //WHITE

// for security reasons some servers don't accept using as the sender a different address as one installed on the server
// for this reason $from and $fromname will be set as the default address of Joomla and the name of the site and two new fields will be used:
// $replyto, $replytoname
//WHITE $replyto = $from;
if ($from == $default_mail || $from == $joomla_mail) {
$replytoname = null;
$replyto = null;
}
else {
$replyto = $from;
$replytoname = $fromname;
} //WHITE
if ($this->_config_values['set_sender_joomla'])
$from = $joomla_mail;
//WHITE $fromname = $this->_app->getCfg('fromname');

Dla chętnych wykorzystać powyższą funkcjonalność załączam zmodyfikowany plik message.php spakowany .zipem 6041

Powodzenia! :D

piollo
21-12-2012, 15:59
Napisałem, że w okolicach wiersza 1159 należy poprawić:
dopisać:
Kod:


//WHITE send the message
if ($email_recipient == $replyto) {
$from = $default_mail;
$fromname = $default_name;
$subject = '[KOPIA]'.$subject;
} //WHITE
$isOK = JUtility::sendMail($from, $fromname, $email_recipient, $subject, $body, $mode, $cc, $bcc, $file_attachments, $replyto, $replytoname);

Powyższy kod trzeba nieco udoskonalić. Należy dopisać jeszcze zmienne $replyto i $replytoname, wtedy nawet nadawca formularza z emailem na onet.pl otrzymuje bez problemu [KOPIĘ] swojej wiadomości.


//WHITE send the message
if ($email_recipient == $replyto) {
$from = $default_mail;
$replyto = $default_mail;
$fromname = $default_name;
$replytoname = $default_name;
$subject = '[KOPIA]'.$subject;
} //WHITE
$isOK = JUtility::sendMail($from, $fromname, $email_recipient, $subject, $body, $mode, $cc, $bcc, $file_attachments, $replyto, $replytoname);

Yarosz
30-10-2013, 01:08
Dzień dobry - gratuluję dociekliwości ;) a gdzie ten załacznik? bo jakoś nie da się go pobrać. Pozdrawiam serdecznie proszac o ponowne wstawienie.

piollo
30-10-2013, 05:51
Dzień dobry - gratuluję dociekliwości ;) a gdzie ten załacznik? bo jakoś nie da się go pobrać. Pozdrawiam serdecznie proszac o ponowne wstawienie.

Na samym końcu poprzedniego postu jest napisane: "Dla chętnych... plik message.php spakowany .zipem Załącznik 6041" - link działa. Sprawdziłem przed chwilą :) (ale jeszcze raz załączam)

PS. ...ALE UWAGA! Z tego co pamiętam, to plik wymaga jeszcze dopracowania! Nie wszystko zdaje się działało tak do końca jak chciałem! Minusem też jest fakt, że przy aktualizacji AiContactSafe plik jest nadpisywany nowszą wersją i nasze poprawki znikają, dlatego w końcu zrezygnowałem z tego rozwiązania i przyjąłem pewien kompromis, który polega po prostu na jednym jedynym ustawieniu w AiContactSafe. Wchodzę w USTAWIENIA [/administrator/index.php?option=com_aicontactsafe&sTask=control_p anel] i szukam checkbox-a "Adres nadawcy Joomla domyślnym", zaznaczam go i od tej pory jest w miarę OK, bo nadawcą formularz już nie jest osoba wypełniająca formularz, tylko Joomla, czyli serwis, na którym stoi AiContactSafe. Nie widze co prawda w skrzynce odbiorczej Imienia i Nazwiska nadawcy oraz jego adresu e-mail, ale przynajmniej AiContactSafe wstawia jego imie i nazwisko w pole "Reply-To:", więc po kliknięciu w programie pocztowym w "Odpowiedz do nadawcy", w pole "To:" wstawiane jest "aics_name<aics_email>". Ten problem na 100% usuwa problem uznawania wiadomości z formularz jako SPAMU na takich kontach jak onet.pl, bo już nadawcą KOPII wiadomości jest nasza strona www, a nie osoba, która wypełniała formularz.

Szkoda, że w ustawieniach AiContactSafe nie ma większych możliwości konfiguracji tego, co ja poprzestawiałem w pliku message.php :( No ale trzeba sobie jakoś radzić.

Yarosz
30-10-2013, 13:08
Dziękuję pięknie,
znam oczywiście wspomnianą konfigurację w aiConactsafe.
Natomiast opracowana modyfikacja może być dla mnie podstawą dla korekt w komponencie rwcards (do wysyłania ekartek).
Rzecz w tym, że tam również jest problem w wysyłaniu ponieważ niektóre serwery odrzucają taką wiadomość z powodu blokady SPF. Niestety, ten komponent nie ma odpowiedniej opcji w konfiguracji, tak więc będę próbował przyjrzeć się temu analizując zmiany wprowadzone w message.php - może coś uda się poprawić.
Pozdrawiam :)

piollo
26-12-2013, 04:06
Dziękuję pięknie,
znam oczywiście wspomnianą konfigurację w aiConactsafe.
Natomiast opracowana modyfikacja może być dla mnie podstawą dla korekt w komponencie rwcards (do wysyłania ekartek).
Rzecz w tym, że tam również jest problem w wysyłaniu ponieważ niektóre serwery odrzucają taką wiadomość z powodu blokady SPF. Niestety, ten komponent nie ma odpowiedniej opcji w konfiguracji, tak więc będę próbował przyjrzeć się temu analizując zmiany wprowadzone w message.php - może coś uda się poprawić.
Pozdrawiam :)

7207 - poprawiony plik \components\com_aicontactsafe\models\message.php w wersji AiContacSafe 2.0.21

Jeszcze raz przysiadłem i pogrzebałem (moje zmiany są oznaczone dodaniem komentarzy "//WHITE") i oto jak w tej chwili działa wysyłanie formularzy:


Jeżeli w zakładce "Ustawienia/Control panel" AiContacSafe, w polu "Domyślny nadawca:" coś wpiszemy, to ta nazwa jest wykorzystywana w polu "FROM:" e-maila wysyłanego przez formularz, gdy wysyłana jest "kopia do nadawcy" lub gdy w formularzu nie zostanie wpisana nazwa nadawcy (np. imię i nazwisko); jeżeli nie wpiszemy w tym polu nic, to wykorzystwana jest nazwa wpisana w polu "Nazwa nadawcy" w konfiguracji globalnej Joomla.
Analogicznie jak wyżej, wykorzystywane jest pole "Domyślny email:" - jeżeli wpiszemy jakiś, to z niego są wysyłane "kopie" formularzy do nadawcy lub wstawiany jest, gdy w formularzu nie zostanie podany żaden adres e-mail. Gdy nic się nie wpisze w tym polu, wtedy oczywiście wykorzystywany jest domyślny adres nadawcy podany w konfiguracji globalnej Joomla.
Do tematu "kopii do nadawcy" dodawany jest przedrostek "Fwd: ".
Gdy zostanie podana nazwa nadawcy w formularzu (np. imię i nazwisko), jest ono wstawianie w pole "FROM:" emaila wysyłanego do nas (do odbiorcy formularza)
Gdy zostanie podany e-mail w formularzu, jest on wstawiany w pole "FROM:" emaila wysyłanego do odbiorcy formularza


Miłego używania :) Jak dla mnie, to bardzo istotna poprawka, bo dzięki temu mogę np. na skrzynce odbiorczej formularza (np. specjalny adres e-mail przeznaczony tylko do odbioru formularzy ze strony) ustawić AUTORESPONDER z informacją, że formularz dotarł do nas na serwer pocztowy oraz z dodatkowymi instrukcjami dla klienta. Natomiast klient otrzymuje kopię swojego formularza z NASZEGO adresu e-mail, a nie swojego, dzięki czemu jego serwer pocztowy nie powinien wywalać błędów SPF :)

- - - Updated - - -

Natomiast poniższa poprawka umieszona w tym wątku ponad rok temu jest już nieaktualna!


Napisałem, że w okolicach wiersza 1159 należy poprawić:


//WHITE send the message
if ($email_recipient == $replyto) {
$from = $default_mail;
$replyto = $default_mail;
$fromname = $default_name;
$replytoname = $default_name;
$subject = '[KOPIA]'.$subject;
} //WHITE
$isOK = JUtility::sendMail($from, $fromname, $email_recipient, $subject, $body, $mode, $cc, $bcc, $file_attachments, $replyto, $replytoname);

piollo
22-06-2014, 00:00
Miłego używania Jak dla mnie, to bardzo istotna poprawka, bo dzięki temu mogę np. na skrzynce odbiorczej formularza (np. specjalny adres e-mail przeznaczony tylko do odbioru formularzy ze strony) ustawić AUTORESPONDER z informacją, że formularz dotarł do nas na serwer pocztowy oraz z dodatkowymi instrukcjami dla klienta. Natomiast klient otrzymuje kopię swojego formularza z NASZEGO adresu e-mail, a nie swojego, dzięki czemu jego serwer pocztowy nie powinien wywalać błędów SPF

No i się porobiło! Ostatnie zmiany na serwerach home.pl spowodowały znowu błąd wysyłania formularzy z aiContactSafe (zarówno z oryginalnym plikiem message.php, jak i z tym moim poprawionym) i niestetety rezygnację z autoresponderów, które wysyłały odpowiedź do nadawcy formularza o tym, że jego wiadomość dotarła na nasz serwer. Otóż ostatnie zmiany w home.pl są dobre pod względem zabezpieczeń antyspamowych, tzn. już nie da się wysłać formularza z serwera home.pl, jeżeli na tym samym serwerze nie ma fizycznie działającego adresu e-mail, który jest wpisywany w pole FROM: - to dobre zmiany antyspamowe, ale powodujące, że nie może być już w polu FROM: adresu e-mail osoby, która wysyła do nas formularz ze strony. Adres nadawcy oczywiście może być wprowadzony w pole REPLY-TO:, dzięki czemu bez problemu możemy odpowiedzieć na wiadomość w każdym normalnym programie pocztowym, bo odpowiedź jest automatycznie adresowana na e-mail z pola REPLY-TO:

Niestety USŁUGA AUTORESPONDER na serwerze home.pl GŁUPIEJE, bo automatyczna odpowiedź jest ZAWSZE wysyłana na adres z pola FROM:, a po włączeniu nowych zabepieczeń, w polu FROM: formularza wysyłanego z naszej strony www MUSI być "naszym" adresem, co powoduje, że odpowiedź z autorespondera dochodzi do "nas", a nie do nadawcy formularza, którego e-mail widnieje w polu REPLY-TO: :( ...no i "du-pa" oczywiście, bo home.pl po analizach administratorów stwierdził, że NIE POPRAWIĄ SWOICH AUTORESPONDERÓW w taki sposób, aby autoresponder sprawdzał najpierw czy pole REPLY-TO jest "niepuste" i jeżeli TRUE ;) to odpowiadał na adresy z pola REPLY-TO, a jeżeli FALSE, to wtedy wysyłał auto-odpowiedź na adres z pola FROM:

No więc już nie zastosujecie autorespondera do automatycznego potwierdzania odbioru wiadomości wysłanej z formularza znajdującego się na stronie www na serwerze home.pl ;) Niech spadają, skoro wprowadzają bez uprzedzenia zmiany w swoich zabezpieczeniach antyspamowych, klientom nagle przestają działać prawidłowo formularze na stronach, a gdy im się sugeruje drobną zmianę na lepsze, to standardowo odpowiadają, że ich serwera nie posiada takiej funkcjonalności... ;)

PONIŻEJ POPRAWIONY PLIK, PRZYSTOSOWANY DO FUNKCJONALNOŚCI SERWERÓW HOME.PL ZE NOWYMI RESTRYKCJAMI ANTYSPAMOWYMI

Pigul
04-07-2014, 09:02
Piollo jestes mistrzem swiata i ogromny uklon. W home.pl mam 7 serwerow w tym kilka bussines pro. Jednak olali mnie i moj AiContactSafe, twierdzac ze to moj problem, ktory wykracza poza ich wsparcie. Szkoda tylko ze nie dociera do nich ze wlaczajac zabezpieczenia bez wiedzy uzytkownika wprowadzaja syf i nerwy ... dzieki za rozwiazanie problemu

piollo
05-07-2014, 05:04
Piollo jestes mistrzem swiata i ogromny uklon. W home.pl mam 7 serwerow w tym kilka bussines pro. Jednak olali mnie i moj AiContactSafe, twierdzac ze to moj problem, ktory wykracza poza ich wsparcie. Szkoda tylko ze nie dociera do nich ze wlaczajac zabezpieczenia bez wiedzy uzytkownika wprowadzaja syf i nerwy ... dzieki za rozwiazanie problemu

Dzięki, dzięki, ale nawet nie jestem informatykiem ;) 30 lat temu w szkole podstawowej zacząłem sam się uczyć ZX SPECTRUM BASIC, a potem ATARI BASIC, a w szkole średniej TURBO PASCALA ;) No i tyle. Została jakaś tam podstawowa wiedza, którą KAŻDY wykorzystałby podobnie jak ja, gdyby w home.pl miał 20 serwerów i zero pomocy ze strony dostawcy hostingowego. Co robić? Trudno mi nawet teraz przenieść te 20 serwerów razem z kilkudziesięcioma kontami pocztowymi u różnych klientów do innego dostawcy, dlatego męczę się tą oligarchiczną firmą, z którą jestem związany z przyzwyczajenia od ich początków, gdy pracowało tam kilka osób i była to spółka cywilna. Wtedy naprawdę się starali!

Przy okazji skorzystam z każdej porady, gdzie najlepiej przenieść usługi z home.pl. Nie będzie to kryptoreklama, tylko przysługa :)