有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

电子邮件java邮件发送日期设置不正确

我可以在java Web应用程序中发送邮件,它工作正常,但发送日期设置不正确,例如,它是提前18小时设置的

如果我们在2015年8月27日10:00:00发送邮件,邮件会立即到达,但发送日期设置为2015年8月28日03:00:00,如下所示

下面是我的java代码

 public void sendMail(String subject, String body, String recipients, String cc)    {
 try {
       String instructions = "<br><br><br>This is an auto generated mail. Kindly do not reply to this mail. Any reply to this mail will not be monitored or entertained.";
        Properties props = System.getProperties();
        props.setProperty("mail.transport.protocol", "smtp");
        props.setProperty("mail.host", "smtpout.secureserver.net");
        props.put("mail.smtp.auth", "true");
        props.setProperty("mail.user", "user");
        props.setProperty("mail.password", "password");
        Session mailSession = Session.getDefaultInstance(props, null);
        mailSession.setDebug(true);
        body += instructions;
        Transport transport = mailSession.getTransport("smtp");
        MimeMessage message = new MimeMessage(mailSession);
        message.setFrom(new InternetAddress("guruprasad.n@clss.in"));

        message.setSubject(subject);
        message.setContent(body, "text/html");
//            SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss a");
//            Date dateInString = new Date();
//            // To TimeZone Asia/Calcutta
//            SimpleDateFormat sdfAsia = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss a");
//            TimeZone tzInAsia = TimeZone.getTimeZone("Asia/Calcutta");
//            sdfAsia.setTimeZone(tzInAsia);
//
//            String sDateInAsia = sdfAsia.format(dateInString); // Convert to String first
//            Date dateInAsia = formatter.parse(sDateInAsia);
            message.setSentDate(new Date());


            if (recipients.indexOf(',') > 0) {
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients));
        } else {
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));
        }
        if (!cc.isEmpty()) {
            if (cc.indexOf(',') > 0) {
                message.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc));
            } else {
                message.setRecipient(Message.RecipientType.CC, new InternetAddress(cc));
            }
        }
        MimeMultipart multipart = new MimeMultipart("related");
        BodyPart messageBodyPart = new MimeBodyPart();
        messageBodyPart.setContent(body, "text/html");

        multipart.addBodyPart(messageBodyPart);
        message.setContent(multipart);

        transport.connect("smtpout.secureserver.net", "user", "password");
        transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO));
        if (!cc.isEmpty()) {
            transport.sendMessage(message, message.getRecipients(Message.RecipientType.CC));
        }

        transport.close();
    } catch (Exception ex) {
//            ex.printStackTrace();
        }
    }

我也可以使用亚洲时区,但它不工作,请帮助我

谢谢


共 (1) 个答案

  1. # 1 楼答案

    最有可能的问题在于你的邮件服务器时区

    smtpout.secureserver.net

    您可以根据本地时区设置SendDate,但您的服务器可能位于另一个时区,并且它会重置/修改时间,假设它正在更正时间