Не возможно без OAuth. Я попытался войти в систему с помощью объекта Google Api Gmail ClientLogin
таким образом:
HttpTransport transport = new NetHttpTransport();
ClientLogin authenticator = new ClientLogin();
authenticator.transport = transport;
authenticator.authTokenType = "mail";
authenticator.username = "user";
authenticator.password = "password";
final ClientLogin.Response response = authenticator.authenticate();
и ответ возвращает этот URL:
https://developers.google.com/identity/protocols/AuthForInstalledApps
Важно: ClientLogin официально объявлен устаревшим с 20 апреля 2012 года и больше не доступен. Запросы к ClientLogin завершатся с ошибкой HTTP 404. Мы рекомендуем вам перейти на OAuth 2.0 как можно скорее.
Затем, если вы хотите отправить письмо с java basic с gmail в качестве провайдера, вы можете поставить этот код:
Первая для всех библиотека:
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
А потом вы ставите пример класса:
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 TestMail {
public static void main(String[] args) {
final String username = "username@gmail.com";
final String password = "password";
Properties prop = new Properties();
prop.put("mail.smtp.host", "smtp.gmail.com");
prop.put("mail.smtp.port", "587");
prop.put("mail.smtp.auth", "true");
prop.put("mail.smtp.starttls.enable", "true"); //TLS
Session session = Session.getInstance(prop,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("from@gmail.com"));
message.setRecipients(
Message.RecipientType.TO,
InternetAddress.parse("contact1@gmail.com, contact2@yahoo.com")
);
message.setSubject("Testing Gmail");
message.setText("Hello!!");
Transport.send(message);
System.out.println("Done");
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
Если программа выдает:
Caused by: javax.mail.AuthenticationFailedException: 534-5.7.9 Application-specific password required. Learn more at
534 5.7.9 https://support.google.com/mail/?p=InvalidSecondFactor - gsmtp
at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:965)
at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:876)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:780)
at javax.mail.Service.connect(Service.java:388)
at javax.mail.Service.connect(Service.java:246)
at javax.mail.Service.connect(Service.java:195)
at javax.mail.Transport.send0(Transport.java:254)
at javax.mail.Transport.send(Transport.java:124)
at com.mkyong.calculator.SendEmail.main(SendEmail.java:41)
Это означает, что вам нужно создать пароль приложения:
https://support.google.com/accounts/answer/185833?p=InvalidSecondFactor
И затем, сгенерированный приложением пароль, вы вводите этот пароль вместо другого пароля в коде:
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
public class TestMail {
public static void main(String[] args) {
final String username = "username@gmail.com";
final String password = "puts your app password here"; // update here
// same code...
}
}
РЕДАКТИРОВАТЬ:
Проблема «Имя пользователя и пароль не приняты» , вы можете исправить это следующим образом:
https://support.google.com/mail/answer/7126229?visit_id=636925989304024248-4140438018&rd=1&hl=en#cantsignin