// Robert Meolic, 2016
// Povzeto po: http://www.javatpoint.com/example-of-sending-email-using-java-mail-api
// Pomoc pri pripravi primera: Aljaz Gaber, student UN TK, UM-FERI

// Program prikazuje uporabo JavaMail API
// https://java.net/projects/javamail/

// javac -classpath "./javax.mail.jar";. javamail.java
// java -classpath "./javax.mail.jar";. javamail

import java.io.*;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;

public class javamail {

  public static void main(String args[]) {

    String streznik = "mail.um.si";

    Properties properties = System.getProperties();
    properties.put("mail.smtp.host", streznik);
    properties.put("mail.smtp.port", "587"); // stevilka vrat v obliki stringa
    properties.put("mail.smtp.auth", "true");
    properties.put("mail.smtp.starttls.enable", "true");

    System.out.println("Povezujem se s postnim streznikom: " + streznik);

    Session seja = Session.getInstance(properties,
      new javax.mail.Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
          String username = "robert.meolic@um.si"; // digitalna identiteta na UM
          String password = ""; // digitalna identiteta na UM
          Scanner stdin = new Scanner(System.in); //za vnos s tipkovnice
          System.out.print("Vnesi geslo za uporabnika " + username + " (POZOR, MED TIPKANJEM NE BO SKRITO!): ");
          password = stdin.next();
          return new PasswordAuthentication(username,password);
        }
      });

    //posiljatelj v teoriji ni nujno enako kot username
    //v praksi vam streznik na um.si ne bo pustil nastaviti laznega imena
    String posiljatelj = "robert.meolic@um.si";
    String prejemnik = "robert.meolic@um.si";

    System.out.println("Posiljam posto na naslov: " + prejemnik);

    try {

       //mimogrede pridobimo svojo trenutno stevilko IP
       //http://stackoverflow.com/questions/2939218/getting-the-external-ip-address-in-java
       java.net.URL externalserver = new java.net.URL("http://checkip.amazonaws.com");
       BufferedReader in = new BufferedReader(new InputStreamReader(externalserver.openStream()));
       String mojip = in.readLine();

       //sestavimo in posljemo posto
       MimeMessage message = new MimeMessage(seja);
       message.addHeaderLine("IP: " + mojip);
       message.addHeaderLine("From: " + posiljatelj);
       message.addHeaderLine("To: " + prejemnik);
       message.setSubject("NOVO SPOROCILO"); // to je naslov poste
       message.setText("Zdravo!\n\nProgram za posiljanje poste deluje. Hura!");
       Transport.send(message);
       System.out.println("Posta je bila uspesno poslana.");

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

  }
}
