2012-07-28 107 views
3

我希望郵件在特定時間自動發送。我能夠發送郵件,但我無法自動完成。任何人都可以請告訴我如何自動發送?下面這些是我發送郵件代碼:java自動發送郵件

public class SendEmail { 

    String d_email = "[email protected]", 
      d_password = "", 
      d_host = "smtp.gmail.com", 
      d_port = "465", 
      m_to = "[email protected]", 
      m_subject = "Testing", 
      m_text = "Hey, this is the testing email."; 

    // Those are the values that have the email information 
    public void send(String from, String pass, String host, String port, String to, String subject, String text) { 

     Properties props = new Properties(); 

     // Read properties file. 

     props.put("mail.smtp.user", from); 
     props.put("mail.smtp.host", host); 
     props.put("mail.smtp.port", port); 
     props.put("mail.smtp.starttls.enable", "true"); 
     props.put("mail.smtp.auth", "true"); 
     props.put("mail.smtp.socketFactory.port", port); 
     props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
     props.put("mail.smtp.socketFactory.fallback", "false"); 

     SecurityManager security = System.getSecurityManager(); 

     try { 
      Authenticator auth = new SMTPAuthenticator(); 
      Session session = Session.getInstance(props, auth); 
      MimeMessage msg = new MimeMessage(session); 

      msg.setText(text); 
      msg.setSubject(subject); 
      msg.setFrom(new InternetAddress(from)); 
      msg.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); 
      Transport.send(msg); 
     } catch (Exception mex) { 
      mex.printStackTrace(); 
     } 
    } 

    public class SMTPAuthenticator extends javax.mail.Authenticator { 

     public PasswordAuthentication getPasswordAuthentication() { 
      return new PasswordAuthentication(d_email, d_password); 
     } 
    } 
} 
+0

你想要一個Java解決方案(計劃任務電子郵件任務是從你的代碼執行的)或你想,這將在特定時間運行應用程序的外部解決方案? – assylias 2012-07-28 17:02:16

回答

4

退房java.util.Timer,如果它是不夠的,你瞭解Quartz - 在純java的cron兼容調度。

+0

石英或操作系統,你想要使用的兩個選項 - 老實說,一個計劃任務(Linux上的Cron)就是你要做的。如果你有一個網絡系統石英是偉大的。 – 2012-07-28 17:24:15

1

石英似乎更好的選擇。這tutorial可能會幫助您設置石英。

0

嘗試

public class SendEmail extends TimerTask{ 

public static void main(String[] args){ 
Timer t = new Timer(); 
t.schedule(new SendEmail(), 0, 9000); //send email every 9 seconds 
} 

@Override 
public void run() { 
    // TODO Auto-generated method stub 
    //Your email syntax here 
} 

}