Original Post ~ I am trying to send an email through java but I am getting an error that says it couldn't connect to host, port: smtp.gmail.com, 547; timeout -1;
I am trying to send it through gmail and I have imported two jar files, which are java mail api download – https://javaee.github.io/javamail/ java activation jar download – https://mvnrepository.com/artifact/javax.activation/activation/1.1.1
It takes forever to run and once it finally does finish it show that error.I would appreciate any help, even if it is just pointing me to a YouTube video or another post on this website. Thank you in advance.
Updated Post~ I had a comment saying to use 587 instead of 547 so I changed it but I am now getting an javax.mail.AuthenticationFailedException: Username and password not accepted error. I have googled and even looked on stack overflow and they say to change a setting in my google account but when I go to change it google is saying the setting is no longer available... it is the Less Secure app access. I will love any thoughts or direction on how to fix this problem. I am on a Mac if anyone thinks that could be causing a problem.
import javax.mail.*;
import javax.mail.internet.*;
import java.io.IOException;
import java.util.Properties;
public class Mail {
Session newSession = null;
MimeMultipart multiPart = new MimeMultipart();
MimeMessage mimeMessage = new MimeMessage(newSession);
public static void main(String[] args) throws MessagingException, IOException, AddressException {
Mail mail = new Mail();
mail.setupServerProperties();
mail.draftEmail();
mail.sendEmail();
}
private void setupServerProperties() {
Properties properties = System.getProperties();
properties.put("mail.smtp.port", "587"); //was 547 changed // to 587
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.starttls.enable", "true");
newSession = Session.getDefaultInstance(properties, null);
}
private MimeMessage draftEmail() throws AddressException, MessagingException, IOException {
String[] emailRecipients = {"abcd@gmail.com", "abcde@gmail.com"}; //who it is going to
String emailSubject = "Test Mail";
String emailBody = "Test body of email";
for(int i =0; i< emailRecipients.length; i++ ){
mimeMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(emailRecipients[i]));
System.out.println("This is i" + i);
}
MimeBodyPart bodyPart = new MimeBodyPart();
bodyPart.setContent(emailBody, "html/text");
multiPart.addBodyPart(bodyPart);
mimeMessage.setContent(multiPart);
return mimeMessage;
}
private void sendEmail() throws MessagingException{
String fromUser = "yourPersonalEmail@gmail.com"; //sender
String fromUserPassword = "yourPassword"; //Password for senders email
String emailHost = "smtp.gmail.com";
Transport transport = newSession.getTransport("smtp");
transport.connect(emailHost, fromUser, fromUserPassword);
transport.sendMessage(mimeMessage, mimeMessage.getAllRecipients());
transport.close();
System.out.println("Email Successfully sent");
}
}