2012-08-13 3 views
1

메일을 보내기 위해 javaMail API를 사용하고 있습니다. 코드가 제대로 작동하지만 메일을 보내는 동안 메일을 보내는 데 시간이 걸립니다. (지연 시간은 거의 15에서 20 초입니다.지연을 사용하여 Java를 사용하여 메일을 보내려합니다.

public class sendMail { 

public static void main(String[] args) { 
    Properties props = new Properties(); 
    props=System.getProperties(); 
    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", "587"); 

    String mail="[email protected]"; 


    Session session = Session.getDefaultInstance(props, 
     new javax.mail.Authenticator() { 
      protected PasswordAuthentication getPasswordAuthentication() { 
       return new PasswordAuthentication("[email protected]","********"); 
      } 
     }); 

    try { 
    String emails="[email protected]"+","+"[email protected]"; 
     Message message = new MimeMessage(session); 
     message.setFrom(new InternetAddress("[email protected]")); 
     message.setRecipients(Message.RecipientType.TO, 
       InternetAddress.parse(emails)); 
     message.setSubject("Testing Subject"); 
     message.setText("Dear Rejender," + 
       "\n\n Please find the like!"); 

    //Transport.send(message); 
     Transport tr=session.getTransport("smtp"); 
     //tr.sendMessage(message, message.getRecipients(message.)); 
     tr.send(message); 
     tr.close(); 
//Transport   

     System.out.println("Done"); 

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

답변

2

당신은을 실행할 수 있습니다 :)이 내 응용 프로그램이 불통가는 아이디어 여기

줄 호야 메일을 전송하는 동안 밖으로 어떤 시간을내어 함께 메일을 보내려고하는 이유는 내 코드입니다 메서드를 사용하면 자체 스레드에서 너무 많은 시간이 걸리므로 기본 프로그램에서 다른 작업을 계속할 수 있습니다.

new Thread(new Runnable() { 
    public void run() { 
     tr.send(message); 
     tr.close(); 
    } 
}).start(); 

ps : trmessage으로 지정해야하며 실행 방법에 오류 처리를 추가해야합니다.

+1

대단히 감사합니다. 위 메일을 보내려면 시간이 걸립니다. – user1548560

2

전자 메일 보내기는 배달 시간에 대해 어떠한 보증이나 기대도하지 않습니다. JavaMail API는 프로세스에 지연을 추가하거나 추가하지 않으며 즉시 지정된 SMTP 서버로 전자 메일을 보냅니다. 실제받는 사람의 사서함으로 릴레이 된 전자 메일까지 걸리는 시간이 사용자의 제어 범위를 벗어납니다. 경우에 따라 메시지는 여러 중개 서버를 통과해야 할 수 있으며 전송 중 여러 시점에서 처리 될 수도 있고 처리되지 않을 수도 있습니다 (바이러스 검사 등).

메시지가 특정 시간 내에 배달되어야한다는 특정 요구 사항이있는 경우 전자 메일은 매우 나쁜 전송 수단입니다. 나의 충고는 가변적이고 비 결정적 인 배달 시간을 허용하거나 동기식 통신을 제공하는 다른 메시징 방법을 사용하여 가능한 것으로 바라보기 위해 아키텍처를 다시 생각해보십시오.

관련 문제