Archiwa tagu: spam

Jak wysłać maila z aplikacji webowej w Javie?

Po co mi maile?

Warunkiem utworzenia konta użytkownika jest podanie poprawnego adresu email, do którego dany użytkownik rzeczywiście ma dostęp.

W kolejnym wpisie omówię dokładniej proces weryfikacji. Na teraz istotne jest to, że moja aplikacja musi być w stanie wysłać do użytkownika maila z linkiem do uaktywnienia konta.

Jak to zrobić?

Korzystam z frameworka Spring Boot (czyli właściwie z nakładki ułatwiającej korzystanie z frameworka Spring zgodnie z zasadą „konwencja ponad konfiguracją”).

Kroki do realizacji mojego celu są następujące:

1. Dodaję zależność w pliku pom.xml:

2. Piszę kod tworzący i wysyłający wiadomości:

3. Ustawiam właściwości aplikacji

Co może pójść nie tak?

com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first.

Koniecznie jest nadanie wartości true właściwości spring.mail.properties.mail.smtp.starttls.enable, a najlepiej całej trójce kończącej powyższy listing.

javax.mail.AuthenticationFailedException: 534-5.7.9 Application-specific password required.

To akurat sprawa typowa dla serwisu GMail. Jeśli chcesz, żeby aplikacja łączyła się z kontem email i w Twoim imieniu wysyłała maile, musisz stworzyć specjalne hasło aplikacji, różne od hasła prywatnego. W każdej chwili możesz podejrzeć listę aplikacji, które korzystają z takiego hasła (na stronie https://security.google.com/settings/security/apppasswords), a także dowolną z nich zablokować.

Google uprzejmie zwraca uwagę, że nadal nie jest to najbezpieczniejsze rozwiązanie.

com.sun.mail.util.MailConnectException: Couldn’t connect to host.

Ten błąd pojawił się, kiedy przełączyłam konto z GMaila na adres email na mojej wirtualnej instancji obsługującej kilka domen. Początkowo myślałam, że Java Mail nie chce pracować z „wirtualnymi” adresami obsługiwanymi przez serwer SMTP w innej domenie. Ostatecznie okazało się jednak, że przyczyną błędu był nadmiarowy biały znak w pliku application.properties 🙂

Ciekawostka: tymczasowe maile

Wiele aplikacji wymusza na użytkowniku podanie działającego adresu email. Główne powody to:

  • zwiększenie prawdopodobieństwa, że mamy do czynienia z człowiekiem, a nie robotem,
  • umożliwienie spamowania 🙂
  • zabezpieczenie użytkownika przed literówką w adresie email, która mogłaby doprowadzić nawet do utraty konta w aplikacji (brak możliwości zresetowania hasła bez działającego adresu).

Wiele osób tworzy sobie dodatkowe konto email, które używane jest do rejestracji w mniej istotnych serwisach (sama mam osobne konto do zakupów internetowych). Zdarza się jednak, że adresu email żąda strona lub aplikacja, z którą na pewno już nigdy nie będziesz mieć nic wspólnego. Co wtedy zrobić?

Możesz założyć tzw. jednorazowe (ang. disposable) konto email, np. w serwisie Guerilla Mail. Poczta, która tam trafia, jest przechowywana przez godzinę niezależnie od tego, czy ktoś ja odczyta, czy nie.

Ocenę moralną pozostawiam Czytelnikowi.

Po ósme: programista nie nabiera się na spam

… (prawie nigdy!) ponieważ rozumie, jak i po co działają spamerzy. Miało być siedem powodów, żeby zostać programistą, ale dodaję ósmy.

Oto krótka sesja Q&A (pytań i odpowiedzi, a raczej wykrzykników i odkrzykników) dla fejsbukowych niewiniątek:*

Q: Samo się pojawiło! Ja tego nie wrzucałem / nie polubiłem / nie rozsyłałem!
A: Nie, zrobiła to za Ciebie aplikacja, którą własnoręcznie zainstalowałeś na swoim koncie.

 

Q: Nic nie instalowałem!
A: Ależ tak. Za każdym razem, kiedy po kliknięciu w „interesujący” link (z reguły o puszczalskich gimnazjalistkach – serdecznie gratuluję wyboru) musisz zatwierdzić coś w dodatkowym okienku dialogowym („Czy na pewno masz 18 lat?”), ryzykujesz, że w rzeczywistości wyrazisz zgodę na instalację złośliwej aplikacji.

 

Q: Czy to znaczy, że nie należy akceptować komunikatów o ciasteczkach w przeglądarce? Jak je odróżnić?
A: Podstawowa różnica w przypadku komunikatu o ciasteczkach jest taka, że nie uniemożliwia on odczytu treści na stronie.

 

Q: No dobra, może i kliknęłam. Kichając! Co teraz?
A: Teraz odinstaluj aplikację. Wygląda to mniej więcej tak:

  1. Przejdź do Ustawień.
  2. Wybierz Aplikacje.fb2
  3. Przejrzyj listę aplikacji i zastanów się, czy wiesz, dlaczego zainstalowałeś każdą z nich.
  4. Usuń niechciane aplikacje przy użyciu krzyżyka, widocznego po przesunięciu myszką nad logo aplikacji.fb3
  5. Możesz dodatkowo zablokować wybrane aplikacje (np. te, z których nieustannie dostajesz zaproszenia) w menu Blokowanie.fb4

 

Q: Po co spamerzy to robią?
A: Motywacji jest wiele, na przykład takie:

  1. Bezinteresowny trolling.
  2. Chęć pozyskania prywatnych danych użytkowników. Instalując aplikację udostępniasz jej twórcy nie tylko swoje dane, ale także niektóre dane swoich znajomych (szczegółowe ustawienia dotyczące udostępnianych danych znajdziesz również w sekcji Aplikacje).
  3. Bardzo źle pojęta promocja marki.

*a przy okazji ostatnie ostrzeżenie przed usunięciem ze znajomych