遇到一个不知道如何解决的问题。我写的一个发送邮件的程序,单元测试通过了,接收方能正常收到发送的邮件,可是我在页面调用的时候,接收方只是收到邮件,但是主题和正文都是空的。说明一下,我在服务方法那加了断点,查看到值已经传过去了,也设进Message了。下面是我的代码。
public void sendMail(String[] mailDetail) {
username = email.split("@")[0];//email是成员变量,可以把它的值当作test@test.com
properties = System.getProperties();
String mailServerName = email.split("@")[1].split("\\.")[0];
setGmailProperties();//暂时只是让它以gmail为服务器
Session session = Session.getDefaultInstance(properties,
new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
message = new MimeMessage(session);
try {
message.setFrom(new InternetAddress(email));
message.setRecipient(Message.RecipientType.TO, new InternetAddress(
mailDetail[0]));
message.setSubject(mailDetail[1]);
message.setText(mailDetail[2]);
message.setSentDate(new Date());
Transport.send(message);//在这里我加了断点,查看了所有的变量都有值。
} catch (AddressException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
System.out.println("邮件发送成功");
}
private void setGmailProperties() {
properties.setProperty("mail.smtp.host", "smtp.gmail.com");
properties.setProperty("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
properties.setProperty("mail.smtp.socketFactory.fallback", "false");
properties.setProperty("mail.smtp.port", "465");
properties.setProperty("mail.smtp.socketFactory.port", "465");
properties.setProperty("mail.smtp.auth", "true");
}