遇到一個不知道如何解決的問題。我寫的一個發送郵件的程序,單元測試通過了,接收方能正常收到發送的郵件,可是我在頁面調用的時候,接收方只是收到郵件,但是主題和正文都是空的。說明一下,我在服務方法那加了斷點,查看到值已經傳過去了,也設進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");
}
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");
}