发送邮件成功后,邮件会保存到收件箱一份并不是保存到已发送;然而我并没有在程序里设置保存的方法。我怀疑是邮件服务器的配置问题,但是用web版的并不存在这样的问题;
现在问题是处在什么地方,到底邮件服务器可不可以设置保存的地方?
这是我的发送方法:
public boolean sendHtmlAndAffixMail(MailSenderInfo mailInfo) throws Exception {
// 判断是否需要身份认证
MailAuthenticator authenticator = null;
// mailInfo.setUserName(mailInfo.getUserName()+"@cmstest.com");
logger.info("UserName----"+mailInfo.getUserName()+"----FromAddress---"+mailInfo.getFromAddress());
Properties pro = mailInfo.getProperties();
if(mailInfo.isValidateSSL()){
pro.put("mail.smtp.starttls.enable","true");
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
pro.put("mail.smtp.socketFactory.class", sf);
}
// 如果需要身份认证,则创建一个密码验证器
if (mailInfo.isValidate()) {
logger.info("身份认证------------------------"+mailInfo.getUserName());
authenticator = new MailAuthenticator(mailInfo.getUserName(),
mailInfo.getPassword());
}
// 根据邮件会话属性和密码验证器构造一个发送邮件的session
Session session = Session.getDefaultInstance(pro, authenticator);
try {
MimeMessage msg = new MimeMessage(session); // 构造MimeMessage 并设定基本的值
// MimeMessage msg = new MimeMessage();
msg.setFrom(new InternetAddress(mailInfo.getFromAddress()));//
logger.info("传入的发件人------------------"+mailInfo.getFromAddress());
// msg.addRecipients(Message.RecipientType.TO, address);
// //这个只能是给一个人发送email
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(mailInfo.getToAddress()));
logger.info("收件人------------------"+mailInfo.getToAddress());
msg.setSubject(MimeUtility.encodeText(mailInfo.getSubject()));
Multipart mp = new MimeMultipart();// 构造Multipart
MimeBodyPart mbpContent = new MimeBodyPart();// 向Multipart添加正文
mbpContent.setContent(mailInfo.getContent(),
"text/html;charset=GB2312");
mp.addBodyPart(mbpContent);// 向MimeMessage添加(Multipart代表正文)
if(mailInfo.getAttachFileNames()!=null){
Vector file = mailInfo.getAttachFileNames();
Enumeration efile = file.elements();// 向Multipart添加附件
while (efile.hasMoreElements()) {
MimeBodyPart mbpFile = new MimeBodyPart();
String filename = efile.nextElement().toString();
logger.info("-filename--------------------------"+filename.toLowerCase());
FileDataSource fds = new FileDataSource(filename);
mbpFile.setDataHandler(new DataHandler(fds));
logger.info("fds-----------------------------"+fds.getName());
mbpFile.setFileName(MimeUtility.encodeText(fds.getName()));
// 向MimeMessage添加(Multipart代表附件)
mp.addBodyPart(mbpFile);
}
file.removeAllElements();
}
// 向Multipart添加MimeMessage
msg.setContent(mp);
msg.setSentDate(new Date());
// msg.setFlag(Flags.Flag.FLAGGED, true);
msg.saveChanges();
// 发送邮件
Transport transport = session.getTransport("smtp");
try {
transport.connect(mailInfo.getMailServerHost(), mailInfo
.getUserName(), mailInfo.getPassword());
} catch (Exception e) {
logger.info("connect mail server fail--------by---"+mailInfo.getUserName()+"port:"+mailInfo.getMailServerHost());
e.printStackTrace();
return false;
}
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
} catch (Exception mex) {
mex.printStackTrace();
return false;
}
return true;
}
}