Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在特定日期发送电子邮件_Java_Email_Date - Fatal编程技术网

Java 在特定日期发送电子邮件

Java 在特定日期发送电子邮件,java,email,date,Java,Email,Date,我想用Java代码发送电子邮件。我正在使用smtp.gmail.com发送邮件,它工作正常。现在我想在每个月的某一天发送电子邮件,比如说每个月的第一天。我找了很多,但没有为我工作 下面是我发送邮件的代码 public class sendMailUsingTimeInterval{ public static void main(String[] args) throws IOException{ String[] to={"to@gmail.com"}; String[]

我想用Java代码发送电子邮件。我正在使用
smtp.gmail.com
发送邮件,它工作正常。现在我想在每个月的某一天发送电子邮件,比如说每个月的第一天。我找了很多,但没有为我工作

下面是我发送邮件的代码

public class sendMailUsingTimeInterval{
 public static void main(String[] args) throws IOException{
     String[] to={"to@gmail.com"};
     String[] cc={"cc@gmail.com"};
     String subject = "hello";
     String body = "Thanks , this is test.....!!";

     //This is for google
             sendMail("from@gmail.com","password","smtp.gmail.com","465","true",
     "true",true,"javax.net.ssl.SSLSocketFactory","false",to,cc,
     subject,body);
 }
 public synchronized static boolean sendMail(String userName,String passWord,String host,String port,String starttls,String auth,boolean debug,String socketFactoryClass,String fallback,String[] to,String[] cc,String subject,String text)
    {
        Properties props = new Properties();
        //Properties props=System.getProperties();
        props.put("mail.smtp.user", userName);
        props.put("mail.smtp.host", host);
        if(!"".equals(port))
        props.put("mail.smtp.port", port);
        if(!"".equals(starttls))
        props.put("mail.smtp.starttls.enable",starttls);
        props.put("mail.smtp.auth", auth);
        if(debug){
        props.put("mail.smtp.debug", "true");
        }
        else
        {
        props.put("mail.smtp.debug", "false");         
        }
        if(!"".equals(port))
        props.put("mail.smtp.socketFactory.port", port);
        if(!"".equals(socketFactoryClass))
        props.put("mail.smtp.socketFactory.class",socketFactoryClass);
        if(!"".equals(fallback))
        props.put("mail.smtp.socketFactory.fallback", fallback);

        try
        {
        Session session = Session.getDefaultInstance(props, null);
        session.setDebug(debug);
        MimeMessage msg = new MimeMessage(session);
            msg.setContent(text,"text/html");
        msg.setSubject(subject);
        msg.setFrom(new InternetAddress("from@gmail.com"));
        for(int i=0;i<to.length;i++)
        {
            msg.addRecipient(Message.RecipientType.TO, new InternetAddress(to[i]));
        }
        for(int i=0;i<cc.length;i++)
        {
            msg.addRecipient(Message.RecipientType.CC, new InternetAddress(cc[i]));
        }
        msg.saveChanges();
        Transport transport = session.getTransport("smtp");
        transport.connect(host, userName, passWord);
        transport.sendMessage(msg, msg.getAllRecipients());
        transport.close();
        return true;
        }
        catch (Exception mex)
        {
        mex.printStackTrace();
        return false;
        }
    }
公共类sendMailUsingTimeInterval{
公共静态void main(字符串[]args)引发IOException{
字符串[]到={”to@gmail.com"};
字符串[]cc={”cc@gmail.com"};
String subject=“hello”;
String body=“谢谢,这是测试…”;
//这是谷歌的
发送邮件(“from@gmail.com“,”密码“,”smtp.gmail.com“,”465“,”真“,
“true”,true,“javax.net.ssl.SSLSocketFactory”,“false”,to,cc,
主体、主体);
}
公共同步静态布尔sendMail(字符串用户名、字符串密码、字符串主机、字符串端口、字符串starttls、字符串身份验证、布尔调试、字符串socketFactoryClass、字符串回退、字符串[]收件人、字符串[]抄送、字符串主题、字符串文本)
{
Properties props=新属性();
//Properties props=System.getProperties();
props.put(“mail.smtp.user”,用户名);
props.put(“mail.smtp.host”,host);
如果(!“”.equals(端口))
props.put(“mail.smtp.port”,port);
如果(!“”.equals(starttls))
props.put(“mail.smtp.starttls.enable”,starttls);
put(“mail.smtp.auth”,auth);
如果(调试){
props.put(“mail.smtp.debug”,“true”);
}
其他的
{
props.put(“mail.smtp.debug”,“false”);
}
如果(!“”.equals(端口))
props.put(“mail.smtp.socketFactory.port”,port);
如果(!“”.equals(socketFactoryClass))
props.put(“mail.smtp.socketFactory.class”,socketFactoryClass);
如果(!“”.equals(回退))
props.put(“mail.smtp.socketFactory.fallback”,fallback);
尝试
{
Session Session=Session.getDefaultInstance(props,null);
setDebug(debug);
MimeMessage msg=新MimeMessage(会话);
msg.setContent(text,“text/html”);
msg.setSubject(主题);
msg.setFrom(新的InternetAddress(“from@gmail.com"));

对于(int i=0;i您可以使用调度程序执行此操作。

这不是您可以通过邮件API直接执行的操作,您必须使用某种调度工具(Quartz、Spring
@Scheduled
或类似工具)在适当的时间使用适当的参数调用
sendMail

您可以使用“批注类型明细表”

@目标(值=方法) @保留期(值=运行时) 公共@接口时间表 使用基于类似cron的时间表达式的超时计划安排自动创建计时器。带注释的方法用作超时回调方法

此批注的所有元素都是可选的。如果未指定任何元素,则将创建一个持久计时器,回调将在与应用程序正在其中执行的容器关联的默认时区内每天午夜发生

文件-

示例-


您可能希望通过操作系统而不是在代码中进行调度。不需要在标题中添加主标记。您的问题不清楚您试图解决此问题的原因。您能解释一下您的研究发现了什么,并分享任何实现尝试吗?