У меня есть программа, как показано ниже, которая продолжает получать сообщения электронной почты для отправки.Он работал хорошо без каких-либо ошибок.Внезапно я замечаю, что не отправляю электронную почту без сгенерированных ошибокНиже приведен фрагмент кода.В моем основном я уже инициализирую его new Thread(new MailProcessor()).start();
, снаружи я поместил этот приватный LinkedBlockingQueue<String> eMailQueue = new LinkedBlockingQueue<String>();
, и из другого класса я называю его так eMailQueue.add(sendEmailMessage);
.Я перезапустил его, он вернулся к нормальной работе, и я хотел бы знать, почему он остановился на эти несколько часов?
class MailProcessor implements Runnable {
public void run() {
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
Session session = Session.getDefaultInstance(props,new javax.mail.Authenticator()
{
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication("*****","******");
}
});
try
{
while (true) {
try
{
int count=0;
String emailMessageString = "";
emailMessageString = eMailQueue.take();
if (emailMessageString.equals(null)) {
System.out.println("Email Processor is shutting down");
break; // exit while loop, ends run() method
}
try
{
String[] eMArray = null;
eMArray = emailMessageString.split("@EmL@");
Message emailMessage = new MimeMessage(session);
emailMessage.setFrom(new InternetAddress("scvmgr@gmail.com"));
emailMessage.setRecipients(Message.RecipientType.TO,InternetAddress.parse(eMArray[1]));
//System.out.println("EArray Length is :"+eMArray.length+" "+"Second Email :"+eMArray[2]);
if(eMArray.length==3)
{
String cc1 = eMArray[2];
emailMessage.addRecipient(Message.RecipientType.CC,new InternetAddress(cc1));
}
//emailMessage.setRecipients(Message.RecipientType.CC,InternetAddress.parse(eMArray[2]));
//emailMessage.addRecipient(Message.RecipientType.CC,new InternetAddress(cc1));
String cc2 = "******";
emailMessage.addRecipient(Message.RecipientType.CC,new InternetAddress(cc2));
System.out.println("\n\nAlready in add receiptntTypeCC : "+emailMessageString);
emailMessage.setRecipients(Message.RecipientType.BCC,InternetAddress.parse("shaimyhtc@gmail.com"));
emailMessage.setSubject("******");
emailMessage.setText(eMArray[0]);
//eMailQueue.add(emailMessage);
Transport.send(emailMessage);
System.out.println("\n\nSend email :"+eMArray[0]);
}
catch (Exception e)
{
System.out.println("Transport Problem");
e.printStackTrace();
}
}
//System.out.println("Processing " + message);
//catch (IOException ex)
catch (Exception e)
{
e.printStackTrace();
}
}
}
catch(Throwable th)
{
th.printStackTrace();
}
}
}