Не отправляются письма Java Mail
запустил в Google Play приложение, в котором для регистрации отправляются письма с кодом. Использую для этого библиотеку Java Mail. Проблема в том, что на части устройств все успешно, на другой письма не отправляются и все вылетает. В чем может быть проблема? Привожу код:
String email = Data.getNewUser().getEmail();
Thread thread = new Thread(() -> {
// Генерация кода
code = (int) ((Math.random() * 9 + 1) * 100000);
ArrayList<String> recipient = new ArrayList<>();
recipient.add(email);
// Данные отправляемого письма
String fromEmail = "[email protected]";
String emailPassword = "password";
String subject = getActivity().getString(R.string.email_subject);
String body = getActivity().getString(R.string.email_body) + " " + code;
MailSender sender = new MailSender(fromEmail, emailPassword, recipient, subject, body);
// Отправка
try {
sender.createEmailMessage();
sender.sendEmail();
} catch (Exception e) { // Обработка ошибок
e.printStackTrace();
ExceptionManager.showError(e, getContext());
}
});
Класс для создания письма:
public class MailSender {
private final String emailPort = "587";
private final String smtpAuth = "true";
private final String starttls = "true";
private final String emailHost = "smtp.gmail.com";
private String fromEmail;
private String fromPassword;
private List<String> toEmailList;
private String emailSubject;
private String emailBody;
private Properties emailProperties;
private Session mailSession;
private MimeMessage emailMessage;
public MailSender(String fromEmail, String fromPassword,
List<String> toEmailList, String emailSubject, String emailBody) {
this.fromEmail = fromEmail;
this.fromPassword = fromPassword;
this.toEmailList = toEmailList;
this.emailSubject = emailSubject;
this.emailBody = emailBody;
emailProperties = System.getProperties();
emailProperties.put("mail.smtp.port", emailPort);
emailProperties.put("mail.smtp.auth", smtpAuth);
emailProperties.put("mail.smtp.starttls.enable", starttls);
}
public MimeMessage createEmailMessage() throws AddressException,
MessagingException, UnsupportedEncodingException {
mailSession = Session.getDefaultInstance(emailProperties, null);
emailMessage = new MimeMessage(mailSession);
emailMessage.setFrom(new InternetAddress(fromEmail, fromEmail));
for (String toEmail : toEmailList) {
emailMessage.addRecipient(Message.RecipientType.TO,
new InternetAddress(toEmail));
}
emailMessage.setSubject(emailSubject);
emailMessage.setText(emailBody, "UTF-8");
return emailMessage;
}
public void sendEmail() throws AddressException, MessagingException {
Transport transport = mailSession.getTransport("smtp");
transport.connect(emailHost, fromEmail, fromPassword);
transport.sendMessage(emailMessage, emailMessage.getAllRecipients());
transport.close();
}
}

