title: Send daily emails with Springboot - JHipster
body: <p>I want to send daily emails to all the users of my database.
  I use Springboot and JHipster in the back-end.</p>
  
  <p>In the rest controller, I have a GET request (which was automatically created by JHipster) :</p>
  
  <pre><code>/**
   * GET  /users : get all users.
   * 
   * @param pageable the pagination information
   * @return the ResponseEntity with status 200 (OK) and with body all users
   * @throws URISyntaxException if the pagination headers couldnt be generated
   */
  @RequestMapping(value = "/users",
      method = RequestMethod.GET,
      produces = MediaType.APPLICATION_JSON_VALUE)
  @Timed
  @Transactional(readOnly = true)
  public ResponseEntity&lt;List&lt;ManagedUserDTO&gt;&gt; getAllUsers(Pageable pageable)
      throws URISyntaxException {
      Page&lt;User&gt; page = userRepository.findAll(pageable);
      List&lt;ManagedUserDTO&gt; managedUserDTOs = page.getContent().stream()
          .map(ManagedUserDTO::new)
          .collect(Collectors.toList());
      HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(page, "/api/users");
      return new ResponseEntity&lt;&gt;(managedUserDTOs, headers, HttpStatus.OK);
  }
  </code></pre>
  
  <p>I also have a MailService which is already used for account validation and password reset :</p>
  
  <pre><code>/**
  * Service for sending e-mails.
  * &lt;p&gt;
  * We use the @Async annotation to send e-mails asynchronously.
  * &lt;/p&gt;
  */
  @Service
  public class MailService {
  
      private final Logger log = LoggerFactory.getLogger(MailService.class);
  
      private static final String USER = "user";
      private static final String BASE_URL = "baseUrl";
  
      @Inject
      private JHipsterProperties jHipsterProperties;
  
      @Inject
      private JavaMailSenderImpl javaMailSender;
  
      @Inject
      private MessageSource messageSource;
  
      @Inject
      private SpringTemplateEngine templateEngine;
  
      @Async
      public void sendEmail(String to, String subject, String content, boolean isMultipart, boolean isHtml) {
          log.debug("Send e-mail[multipart '{}' and html '{}'] to '{}' with subject '{}' and content={}",
              isMultipart, isHtml, to, subject, content);
  
          // Prepare message using a Spring helper
          MimeMessage mimeMessage = javaMailSender.createMimeMessage();
          try {
              MimeMessageHelper message = new MimeMessageHelper(mimeMessage, isMultipart, CharEncoding.UTF_8);
              message.setTo(to);
              message.setFrom(jHipsterProperties.getMail().getFrom());
              message.setSubject(subject);
              message.setText(content, isHtml);
              javaMailSender.send(mimeMessage);
              log.debug("Sent e-mail to User '{}'", to);
          } catch (Exception e) {
              log.warn("E-mail could not be sent to user '{}', exception is: {}", to, e.getMessage());
          }
      }
  
      @Async
      public void sendActivationEmail(User user, String baseUrl) {
          user.setLangKey("en");
          log.debug("Sending activation e-mail to '{}'", user.getEmail());
          Locale locale = Locale.forLanguageTag(user.getLangKey());
          Context context = new Context(locale);
          context.setVariable(USER, user);
          context.setVariable(BASE_URL, baseUrl);
          String content = templateEngine.process("activationEmail", context);
          String subject = messageSource.getMessage("email.activation.title", null, locale);
          sendEmail(user.getEmail(), subject, content, false, true);
      }
  
      @Async
      public void sendCreationEmail(User user, String baseUrl) {
          log.debug("Sending creation e-mail to '{}'", user.getEmail());
          Locale locale = Locale.forLanguageTag(user.getLangKey());
          Context context = new Context(locale);
          context.setVariable(USER, user);
          context.setVariable(BASE_URL, baseUrl);
          String content = templateEngine.process("creationEmail", context);
          String subject = messageSource.getMessage("email.activation.title", null, locale);
          sendEmail(user.getEmail(), subject, content, false, true);
      }
  
      @Async
      public void sendPasswordResetMail(User user, String baseUrl) {
          log.debug("Sending password reset e-mail to '{}'", user.getEmail());
          Locale locale = Locale.forLanguageTag(user.getLangKey());
          Context context = new Context(locale);
          context.setVariable(USER, user);
          context.setVariable(BASE_URL, baseUrl);
          String content = templateEngine.process("passwordResetEmail", context);
          String subject = messageSource.getMessage("email.reset.title", null, locale);
          sendEmail(user.getEmail(), subject, content, false, true);
      }
  
  }
  </code></pre>
  
  <p>I know how to make requests from the front-end and to connect it with the back-end, but here, what I need, is to do a request from the back to the back.</p>
  
  <p>I also don't understand what the Pageable object is for and how to create it since it is an interface : </p>
  
  <pre><code>public interface Pageable {
  
      int getPageNumber();
  
      int getPageSize();
  
      int getOffset();
  
      Sort getSort();
  
      Pageable next();
  
      Pageable previousOrFirst();
  
      Pageable first();
  
      boolean hasPrevious();
  }
  </code></pre>