看世界12326的gravatar头像
看世界12326 2015-01-22 12:52:15

java mail发送邮件成功后保存在已发送邮件夹为什么抛出异常:A4 No Error in IMAP command received by server

发送邮件成功后保存在已发送邮件夹报错,,,

/**
	 * 以HTML格式发送邮件
	 * @param mailInfo
	 * @return 
	 */
	public boolean sendHtmlMail(SenderMailInfoVO mailInfo){
		// 判断是否需要身份认证
		SmtpAuth authenticator = null;
		Properties pro = mailInfo.getProperties();
		// 如果需要身份认证,则创建一个密码验证器
		if (mailInfo.isValidate()) {
			authenticator = new SmtpAuth(mailInfo.getUserName(),mailInfo.getPassword());
		}
		// 根据邮件会话属性和密码验证器构造一个发送邮件的session
		Session sendMailSession = Session.getInstance(pro, authenticator);
		try {
			// 根据session创建一个邮件消息
			Message mailMessage = new MimeMessage(sendMailSession);
			// 创建邮件发送者地址
			Address from = new InternetAddress(mailInfo.getFromAddress());
			// 设置邮件消息的发送者
			mailMessage.setFrom(from);
			// 创建邮件的接收者地址,并设置到邮件消息中
			Address to = new InternetAddress(mailInfo.getToAddress());
			// Message.RecipientType.TO属性表示接收者的类型为TO
			mailMessage.setRecipient(Message.RecipientType.TO, to);
			// 设置邮件消息的主题
			mailMessage.setSubject(mailInfo.getSubject());
			// 设置邮件消息发送的时间
			mailMessage.setSentDate(new Date());
			// MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象
			Multipart mainPart = new MimeMultipart();
			// 创建一个包含HTML内容的MimeBodyPart
			BodyPart html = new MimeBodyPart();
			// 设置HTML内容
			html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");
			mainPart.addBodyPart(html);
			// 将MiniMultipart对象设置为邮件内容
			mailMessage.setContent(mainPart);
			// 发送邮件
			Transport.send(mailMessage);
			
			//保存邮件到已发送邮件夹
			IMAPStore store=MailSession.createIMAPStore(authenticator);
	        folder = (IMAPFolder) store.getFolder("Sent"); 
	        if(!folder.exists()){
	        	folder.create(Folder.HOLDS_MESSAGES);
	        	folder.open(Folder.READ_WRITE);
	        }
	        folder.open(Folder.READ_WRITE); //打开收件箱 
	        Message[] msgs={mailMessage};
	        folder.appendMessages(msgs);
	        mailMessage.setFlag(FLAGS.Flag.RECENT, true);
	        System.out.println("邮件保存到已发送收件夹");
	        System.out.println("=======:"+msgs.toString());
			return true;
		} catch (MessagingException ex) {
			ex.printStackTrace();
		}
		return false;
	}

java mail发送邮件成功后保存在已发送邮件夹为什么抛出异常:A4 No Error in IMAP command received by server

所有回答列表(2)
不靠谱先生。的gravatar头像
不靠谱先生。  LV11 2015年1月22日

forder.appendMessage();

//刚看了看当时自己写的代码,希望对你有帮助

public void saveSendEmail(HttpServletRequest request, Message mailMessage)
  {
    Message[] message = new MimeMessage[1];
    message[0] = mailMessage;
    Store store = storeAutoConnect(request);
    Folder folder = null;
    try {
      mailMessage.setFlag(Flags.Flag.SEEN, true);
      folder = store.getFolder(ServerConfig.FOLDER_TYPE_SENT);
      folder.open(2);
      folder.appendMessages(message);
    } catch (MessagingException e) {
      e.printStackTrace();
    } finally {
      closeFolderAndStore(folder, store);
    }
  }

 

//看到的有点晚,不知道你是否已经解决,我在之前都有创建默认的Folder的...

public void createDefaultFolder(HttpServletRequest request) {

        Store store = MailUtils.storeAutoConnect(request);
        try {
            Folder INBOXFolder = store.getFolder(ServerConfig.FOLDER_TYPE_INBOX);
            if (!INBOXFolder.exists()) {
                INBOXFolder.create(Folder.HOLDS_MESSAGES);
                INBOXFolder.setSubscribed(true);
            } else {
                if (!INBOXFolder.isSubscribed()) {
                    INBOXFolder.setSubscribed(true);
                }
            }
            
            Folder DRAFTSFolder = store.getFolder(ServerConfig.FOLDER_TYPE_DRAFTS);
            if (!DRAFTSFolder.exists()) {
                DRAFTSFolder.create(Folder.HOLDS_MESSAGES);
                DRAFTSFolder.setSubscribed(true);
            } else {
                if (!DRAFTSFolder.isSubscribed()) {
                    DRAFTSFolder.setSubscribed(true);
                }
            }
            Folder FOLDER_TYPE_SENT = store.getFolder(ServerConfig.FOLDER_TYPE_SENT);
            if (!FOLDER_TYPE_SENT.exists()) {
                FOLDER_TYPE_SENT.create(Folder.HOLDS_MESSAGES);
                INBOXFolder.setSubscribed(true);
            } else {
                if (!FOLDER_TYPE_SENT.isSubscribed()) {
                    FOLDER_TYPE_SENT.setSubscribed(true);
                }
            }
            Folder FOLDER_TYPE_TRASH = store.getFolder(ServerConfig.FOLDER_TYPE_TRASH);
            if (!FOLDER_TYPE_TRASH.exists()) {
                FOLDER_TYPE_TRASH.create(Folder.HOLDS_MESSAGES);
                FOLDER_TYPE_TRASH.setSubscribed(true);
            } else {
                if (!FOLDER_TYPE_TRASH.isSubscribed()) {
                    FOLDER_TYPE_TRASH.setSubscribed(true);
                }
            }
        } catch (MessagingException e) {
            e.printStackTrace();
        }
        
    }

清凉妹的gravatar头像
清凉妹  LV10 2015年1月23日

 你具体在看看是不是jar的版本对应不上

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友