电子邮件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 楼答案
最有可能的问题在于你的邮件服务器时区
您可以根据本地时区设置SendDate,但您的服务器可能位于另一个时区,并且它会重置/修改时间,假设它正在更正时间