У меня есть класс почтовой службы, который отправляет электронную почту с помощью Gmail SMTP, он успешно работает до недавнего прошлого, тот же класс не может отправлять электронные письма, и я даже не см. любые сообщения об ошибках, когда я отлаживаю или запускаю этот код. Любая идея, что происходит?Java mail API не отправляет электронные письма
public class MailService {
public static void sendEmail(String subject, String msgBody, String[] toEmails,
String[] ccEmails, String[] bccEmails,
String fromEmail, String toName){
Properties props = System.getProperties();
props.put("mail.smtp.starttls.enable", true); // added this line
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.user", "mygmail-id");
props.put("mail.smtp.password", "mypassword");
props.put("mail.smtp.port", "587");
props.put("mail.smtp.auth", true);
Session session = Session.getInstance(props,null);
List<InternetAddress> toAdresses = null;
List<InternetAddress> ccAdresses = null;
List<InternetAddress> bccAdresses = null;
try {
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(fromEmail));
toAdresses = new ArrayList<InternetAddress>();
ccAdresses = new ArrayList<InternetAddress>();
bccAdresses = new ArrayList<InternetAddress>();
for(String toEmail: toEmails){
toAdresses.add(new InternetAddress(toEmail));
}
if(ccEmails != null && ccEmails.length > 0)
for(String ccEmail: ccEmails){
ccAdresses.add(new InternetAddress(ccEmail));
}
if(bccEmails != null && bccEmails.length > 0)
for(String bccEmail: bccEmails){
bccAdresses.add(new InternetAddress(bccEmail));
}
msg.addRecipients(Message.RecipientType.TO,
toAdresses.toArray(new InternetAddress[toAdresses.size()]));
msg.addRecipients(Message.RecipientType.CC,
ccAdresses.toArray(new InternetAddress[ccAdresses.size()]));
msg.addRecipients(Message.RecipientType.BCC,
bccAdresses.toArray(new InternetAddress[bccAdresses.size()]));
msg.setSubject(subject);
msg.setContent(msgBody, "text/html");
Transport.send(msg);
} catch (AddressException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
// ...
}
}
Вы взглянули на [это] (http://www.mkyong.com/java/javamail-api-sending-email-via-gmail-smtp -example /) или [this] (http://stackoverflow.com/questions/15597616/sending-email-via-gmail-smtp-server-in-java)? – MadProgrammer
Этот код никогда не будет работать. Нет свойства mail.smtp.password. Вы не делаете ничего, чтобы передать имя пользователя и пароль на транспорт. Используйте один из методов подключения, который позволяет вам передавать имя пользователя и пароль и не утруждать себя настройкой их как свойств. –
@MadProgrammer, я пробовал все пути, один из них - один из вариантов, которые я пробовал, но никто из них не работает. – user1614862