2012-07-28 76 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 
} 

}