I am trying to write email authentication feature for my website and I encounter some issues. I got java.lang.SecurityException: Access to default session denied, when I try to do Session.getDefaultInstance. Here are my codes:
    private static final String SMTP_HOST_NAME = "smtp.gmail.com";
    private static final String SMTP_PORT = "465";
    private static final String emailSubjectTxt = "Email Confirmation";
    private static final String emailFromAddress = "
[email protected]";
    private static final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";    
    ...
    String sendTo = "
[email protected]";
    boolean debug = true;
    Properties props = new Properties();
    props.put("mail.smtp.host", SMTP_HOST_NAME);
    props.put("mail.smtp.auth", "true");
    props.put("mail.debug", "true");
    props.put("mail.smtp.port", SMTP_PORT);
    props.put("mail.smtp.socketFactory.port", SMTP_PORT);
    props.put("mail.smtp.socketFactory.class", SSL_FACTORY);
    props.put("mail.smtp.socketFactory.fallback", "false");
    //It dies at the next line
    Session session = Session.getDefaultInstance(props,
        new javax.mail.Authenticator() {
        @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("myUserName", "myPassword");
            }
        });
    session.setDebug(debug);
    //Set the FROM address
    Message msg = new MimeMessage(session);
    InternetAddress addressFrom = new InternetAddress(emailFromAddress);
    msg.setFrom(addressFrom);
    //Set the TO address
    InternetAddress[] addressTo = new InternetAddress[1];
    addressTo[0] = new InternetAddress(sendTo);
    msg.setRecipients(Message.RecipientType.TO, addressTo);
    //Construct the content of the email confirmation
    String message = "Test Content"
    // Setting the Subject and Content Type
    msg.setSubject(emailSubjectTxt);
    msg.setContent(message, "text/plain");
    Transport.send(msg);