views:

265

answers:

2

I have to send an email through a servlet, I have tried a bunch of codes, but none of them work with an gmail account, any ideas?

 java.security.Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
        Properties props = new Properties();
        props.put("mail.transport.protocol", "smtp");
        props.put("mail.smtp.starttls.enable","true");
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.auth", "true");

        Authenticator auth =  new SMTPAuthenticator();
        //auth = null;
        Session sess = Session.getInstance(props, auth);

        sess.setDebug(false);
           // -- Create a new message --
           Message msg = new MimeMessage(sess);

           // -- Set the FROM and TO fields --
           msg.setFrom(new InternetAddress("[email protected]"));
           msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(
             "sendtoemail", false));
           msg.setSubject("Test");
           msg.setText("Yippe");
           msg.setSentDate(new Date());
           Transport.send(msg);

           public class SMTPAuthenticator extends javax.mail.Authenticator {
           @Override
           public PasswordAuthentication getPasswordAuthentication() {
           String username = "[email protected]";
           String password = "mypass";
           return new PasswordAuthentication(username, password);
           }

}

This Code throws javax.mail.MessagingException: Could not convert socket to TLS exception

+3  A: 

using commons-email

public static Email createMail(){
    Email email = SimpleEmail();


    email.setHostName(Settings.getValue("smtp.host"));
    email.setSmtpPort(Integer.parseInt(Settings.getValue("smtp.port")));
    String username = Settings.getValue("smtp.user");
    if (username.length() > 0) {
        email.setAuthentication(username, Settings.getValue("smtp.password"));
    }

    boolean useSSL = false;
    try {
        useSSL = Boolean.parseBoolean(Settings.getValue("smtp.ssl"));
    } catch (Exception ex) {
        // ignore - property not set
    }

    email.setSSL(useSSL);
    email.setCharset("utf-8");

    return email;
}

public sendMail(String recipientEmail) {
     Email email = createMail();
     email.addTo(recipientEmail);
     email.setFrom("[email protected]");
     email.setSubject("Your subject herE");
     email.setMsg("Your message here");
     email.send();
}
Bozho
How do i add this to my..netbeans project?
download the jar and add it to the build path.
Bozho
A: 

** moved to question **

If you have more information to add to your question, please update your question rather than posting an answer.
Jeff