Wysłanie maila z grafiką logo w treści

0

Hej,

mam taką implementację wysyłki wiadomości

@Override
  public void sendEmail(String to, String subject, String content) {

    MimeMessage mail = javaMailSender.createMimeMessage();

    try {
      MimeMessageHelper helper = new MimeMessageHelper(mail, true);
      helper.setTo(to);
      helper.setReplyTo("[email protected]");
      helper.setFrom("[email protected]");
      helper.setSubject(subject);
      helper.setText(content, true);

    } catch (MessagingException e) {
      e.printStackTrace();
    }

    javaMailSender.send(mail);
  }

w Thymeleaf templejcie gdy

<img th:src="@{/images/logo.png}" th:width="90" th:height="22"  alt="logo" class="logo-default" />

dostaję
org.thymeleaf.exceptions.TemplateProcessingException: Link base "/images/logo.png" cannot be context relative (/) or page relative unless you implement the org.thymeleaf.context.IWebContext interface (context is of class: org.thymeleaf.context.Context) (employmentMessageToClient:24)

na pewno ktoś z Was to robił, proszę :)

0

Polecam spróbować przeczytać treść wyjątku, bowiem dokładnie ona Ci mówi, co trzeba zrobić. Nie korzystałem nigdy z Thymeleaf i na podstawie treści wyjątku znalazłem rozwiązanie w rozdziale trzecim dokumentacji, czyli prawie na samym początku, czyli jest to dość podstawowa wiedza.

Podpowiedź: przyjrzyj się adresowi Twojego obrazka i zastanów się, czego w nim brakuje, by klient poczty mógł go odnaleźć?

0

Nie chodzi po podanie linku do publicznej lokalizacji w sieci. Chcialbym to jakos osadzic w tresci

0

To to zmienia postać rzeczy - nie napisałeś, co chcesz uzyskać, a jedną z technik osadzania obrazków w e-mailach jest podanie w znaczniku IMG adresu do obrazka na zewnętrznym serwerze.

Jeśli chcesz natomiast, aby obrazek był częścią wiadomości, to Thymeleaf nie jest Ci do niczego potrzebny. Jak to wygląda technicznie? E-mail ma jakąś treść. Treść jednak może być podzielona na kilka części. Jedną z nich jest tekst, pozostałymi - obrazki. Poszczególnym obrazkom nadajesz tzw. Content ID. Później wystarczy, że podasz ten Content ID w znaczniku IMG, zamiast URL-a. Zerknij na poniższy artykuł:

https://blog.smartbear.com/apis/how-to-send-email-with-embedded-images-using-java/

0

moja implementacja wysyłki jest taka jak poniżej. Logo jest osadzone w mailu. Jednak okazuje się, że mogę wrzucić tak tylko jeden image. Ten drugi leci w postaci załącznika.

  @Override
  public void sendEmail(String to, String subject, String content) {

    MimeMessage mail = javaMailSender.createMimeMessage();

    try {
      MimeMessageHelper helper = new MimeMessageHelper(mail, true);
      helper.setTo(to);
      helper.setReplyTo("[email protected]");
      helper.setFrom("[email protected]");
      helper.setSubject(subject);
      helper.setText(content, true);
      helper.addInline("CompanyLogo", new ClassPathResource("assets/images/logo.jpg"));
      //helper.addInline("innyObraz", new ClassPathResource("assets/images/innyObraz.jpg"));

    } catch (MessagingException e) {
      e.printStackTrace();
    }

    javaMailSender.send(mail);
  }

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