How do I send an email using my Outlook account?

I am trying to use this code:

import java.io.IOException;
import java.util.Properties;
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 NewClass {

public static void main(String[]args)throws IOException {



final String username = "prashantsood_90";
final String password = "password";

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

Session session = Session.getInstance(props,
  new javax.mail.Authenticator() {
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(username, password);
    }
  });

try {

    Message message = new MimeMessage(session);
    message.setFrom(new InternetAddress("prashantsood_90@outlook.com"));
    message.setRecipients(Message.RecipientType.TO,
        InternetAddress.parse("prashantsood_90@outlook.com"));
    message.setSubject("Test");
    message.setText("HI");

    Transport.send(message);

    System.out.println("Done");

} catch (MessagingException e) {
    throw new RuntimeException(e);
}
}
}

      

This is an exception:

Exception in thread "main" java.lang.RuntimeException:   javax.mail.SendFailedException: Sending failed;
 nested exception is:
 class javax.mail.MessagingException: 530 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM

  at NewClass.main(NewClass.java:47)
  Caused by: javax.mail.SendFailedException: Sending failed;
  nested exception is:
 class javax.mail.MessagingException: 530 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM

at javax.mail.Transport.send0(Transport.java:218)
at javax.mail.Transport.send(Transport.java:80)
at NewClass.main(NewClass.java:42) 
 Java Result: 1

      

Please help me how to send email from my Outlook account to gmail or any other account. I cannot send using Outlook account, but I can send gmail to gmail mail.

+3


source to share


1 answer


Try to write your own Authenticator

class

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
public class SMTPAuthenticator extends Authenticator {
    private String userName;
    private String password;

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUserName() {
        return userName;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getPassword() {
        return password;
    }

    public SMTPAuthenticator(String userName,String password){
        this.userName=userName;
        this.password=password;
    }

    public PasswordAuthentication getPasswordAuthentication()
    {
        return new PasswordAuthentication(userName, password);
    }
}

      

Then use it to create a session:



SMTPAuthenticator authenticator = new SMTPAuthenticator(username, password);
Properties properties = new Properties();
properties.setProperty("mail.smtp.submitter", authenticator.getPasswordAuthentication().getUserName());
properties.setProperty("mail.smtp.auth", "true");
properties.setProperty("mail.smtp.host", "outlook.office365.com");
properties.setProperty("mail.smtp.port", "587");

Session session = Session.getInstance(properties, authenticator);

      

Also remove this line if you don't have a secure TSL connection

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

      

+1


source







All Articles