docs: @Override
    public final void sendEmail(final Map<String, Object> pAddParam,
      final EmailMsg pMsg) throws Exception {
      Properties props = new Properties();
      for (EmailStringProperty esp
        : pMsg.getEmailConnect().getStringProperties()) {
        props.put(esp.getPropertyName(), esp.getPropretyValue());
      }
      for (EmailIntegerProperty eip
        : pMsg.getEmailConnect().getIntegerProperties()) {
        props.put(eip.getPropertyName(), eip.getPropretyValue());
      }
      Session sess = Session.getInstance(props);
      Message msg = new MimeMessage(sess);
      msg.setFrom(new InternetAddress(pMsg.getEmailConnect().getUserEmail()));
      if (pMsg.getErecipients().size() == 1) {
        msg.setRecipient(Message.RecipientType.TO,
          new InternetAddress(pMsg.getErecipients().get(0).getItsEmail()));
      } else {
        InternetAddress[] address =
          new InternetAddress[pMsg.getErecipients().size()];
        for (int i = 0; i < pMsg.getErecipients().size(); i++) {
          address[i] = new InternetAddress(pMsg.getErecipients().get(i)
            .getItsEmail());
        }
        msg.setRecipients(Message.RecipientType.TO, address);
      }
      msg.setSubject(pMsg.getEsubject());
      if (pMsg.getEattachments().size() > 0) {
        MimeBodyPart mbpt = new MimeBodyPart();
        mbpt.setText(pMsg.getEtext());
        Multipart mp = new MimeMultipart();
        mp.addBodyPart(mbpt);
        for (Eattachment attch : pMsg.getEattachments()) {
          File fl = new File(attch.getItsPath());
          if (!fl.exists()) {
            //URI uploaded relative to WEB-APP path:
            String fp = attch.getItsPath();
            if (!"/".equals(File.separator)) {
              fp = fp.replace("/", "\\");
            }
            fl = new File(this.webAppPath + File.separator + fp);
          }
          if (fl.exists()) {
            MimeBodyPart mbp = new MimeBodyPart();
            mbp.attachFile(fl);
            mp.addBodyPart(mbp);
          } else {
            throw new Exception("There is no file: " + attch.getItsPath());
          }
        }
        msg.setContent(mp);
      } else {
        msg.setText(pMsg.getEtext());
      }
      msg.setSentDate(new Date());
      Transport.send(msg, pMsg.getEmailConnect().getUserEmail(),
        pMsg.getEmailConnect().getUserPassword());
    }