Question

I have written java code for send mail which is giving exception : when i use port number 465

com.sun.mail.smtp.SMTPSendFailedException: 530-5.5.1 Authentication Required. Learn more at 530 5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 l1sm2119061pbe.54

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

String USERNAME = username; 
String PASSWORD = password; 


Properties props = new Properties(); 
props.put("mail.smtp.host", smtpHost); 
if(smtpPort != null){
    int SMTP_PORT = Integer.parseInt(smtpPort); 
    props.put("mail.smtp.port", SMTP_PORT); 
}
props.put("mail.from",from);
props.put("mail.smtp.starttls.enable", "true"); 
if( auth == 1){
    props.put("mail.smtp.auth", "true"); 
}
props.put("mail.debug", "true"); 

Session session = Session.getInstance(props, new Authenticator() { 
        @Override 
        protected PasswordAuthentication getPasswordAuthentication() { 
            return new PasswordAuthentication(USERNAME, PASSWORD); 
        } 
}); 

MimeMessage msg = new MimeMessage(session); 
msg.setFrom(); 
msg.setRecipients(Message.RecipientType.TO, to); 
msg.setSubject(subject); 
msg.setSentDate(new Date());

Multipart content = new MimeMultipart();
MimeBodyPart bodyPart = new MimeBodyPart();

bodyPart.setText(htmlBody, "UTF-8");
bodyPart.setContent(htmlBody, "text/html");

content.addBodyPart(bodyPart);

if ( attachmentPath != null ){
    String[] a = attachmentPath.split(",");

    for (int i = 0; i < a.length; i++) { 
            if( a[i] != null )
        {
            MimeBodyPart attachmentPart = new MimeBodyPart();
            attachmentPart.attachFile(a[i].trim());
            content.addBodyPart(attachmentPart);
        }
    }
}


msg.setContent(content);

Transport.send(msg); 
return true
Was it helpful?

Solution

Code is self explanatory, this is a working code that i used in a project. Hope this help you out. Good Luck.

/**
 GmailSmtpSSL emailNotify = new GmailSmtpSSL(cred[ID], cred[PASS]);

 emailNotify.sendMailTo("self","Testing AlfaDX Gmail module", "Yes it works");

**/

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class GmailSmtpSSL {

    GmailSmtpSSL(String username,String password) {
        usern = username;
        pass  = password;

        setDebugMsg("Setting user name to : "+usern);
        setDebugMsg("Using given password : "+pass);

        props = new Properties();
        setDebugMsg("Setting smtp server: smtp.gmail.com");
        setDebugMsg("Using SSL at port 465 auth enabled");

        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.port", "465");
        props.put("mail.smtp.user", usern);

        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
        //props.put("mail.smtp.debug", "true");

        props.put("mail.smtp.socketFactory.port", "465");
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.socketFactory.fallback", "false");

        SMTPAuthenticator auth = new SMTPAuthenticator();
        session = Session.getDefaultInstance(props, auth);
        session.setDebug(true);
        setDebugMsg("Session initialization complete");
    }

    public void destroy() {
        props.clear();
        props = null;
        usern = null;
        pass  = null;
        session = null;

    }

    public void sendMailTo(String to, String sub, String body)
                                                    throws MessagingException {

         Calendar currentDate = Calendar.getInstance();
         SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss a"); 
         String dateToday = formatter.format(currentDate.getTime()).toLowerCase();

         if (to.equals("self")) 
             to = usern;

         setDebugMsg("Composing message: To "+to);
         setDebugMsg("Composing message: Subject "+sub);

         try {
             Message message = new MimeMessage(session);
             message.setFrom(new InternetAddress(usern));
             message.setRecipients(Message.RecipientType.TO, 
                                                    InternetAddress.parse(to));
             message.setSubject("PinguBot: "+dateToday+" "+sub);
             message.setText(body);
             setDebugMsg("Attempting to send...");
             Transport transport = session.getTransport("smtps");

             transport.connect("smtp.gmail.com", 465, usern, pass);
             Transport.send(message);
             transport.close();
         }

         catch(MessagingException me) {
             setDebugMsg(me.toString());
             throw new MessagingException(me.toString());
         }
             setDebugMsg("Mail was send successfully");
    }


    public String getDebugMsg() {
        String msg = new String(debugMsg);
        debugMsg = " ";
        return msg;
    }
    private static void setDebugMsg(String msg) {
        debugMsg += msg + "\n";
        System.out.println(msg);
    }

    private static String debugMsg = "";
    private String usern; 
    private String pass;
    private Session session;
    private static Properties props;

    private class SMTPAuthenticator extends Authenticator
    {
        public PasswordAuthentication getPasswordAuthentication()
        {
            return new PasswordAuthentication(usern, pass);
        }
    }

}

OTHER TIPS

when i use port number -1

Hardly surprising. -1 isn't a valid port number. What happens when you use a correct port number?

when i use port number 465

That's not a standard SMTP port either.

What happens when you use the correct port number?

Use the following code that authenticates and sends mails to Gmail server using javax.mail. Take care of firewall and the host port you selected.

import java.util.logging.Level;
import java.util.logging.Logger;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;

final class MailClient
{
    private class SMTPAuthenticator extends Authenticator
    {
        private PasswordAuthentication authentication;

        public SMTPAuthenticator(String login, String password)
        {
             authentication = new PasswordAuthentication(login, password);
        }

        @Override
        protected PasswordAuthentication getPasswordAuthentication()
        {
             return authentication;
        }
    }

    public void mail()
    {
        try
        {
            String from = "xyz.com";
            String to = "abc.com";
            String subject = "Your Subject.";
            String message = "Message Text.";
            String login = "xyz.com";
            String password = "password";

            Properties props = new Properties();
            props.setProperty("mail.host", "smtp.gmail.com");
            props.setProperty("mail.smtp.port", "587");
            props.setProperty("mail.smtp.auth", "true");
            props.setProperty("mail.smtp.starttls.enable", "true");

            Authenticator auth = new SMTPAuthenticator(login, password);

            Session session = Session.getInstance(props, auth);

            MimeMessage msg = new MimeMessage(session);

           try
           {
                msg.setText(message);
                msg.setSubject(subject);
                msg.setFrom(new InternetAddress(from));
                msg.addRecipient(Message.RecipientType.TO,
                new InternetAddress(to));
                Transport.send(msg);
           }
           catch (MessagingException ex)
           {
                Logger.getLogger(MailClient.class.getName()).
                log(Level.SEVERE, null, ex);
           }
        }
    }
}

final public class Main
{
    public static void main(String...args)
    {
        new MailClient().mail();
    }
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top