Javamail读取消息体直到EOF

时间:2016-06-06 06:10:36

标签: email javamail yahoo

以下代码应该发送并保存通过yahoomail发送的消息。发送部分工作正常但id不保存发送的消息。我一直在研究并找到以下代码:

/**
 * Read the body of the message until EOF.
 */
public static String collect(BufferedReader in) throws IOException {
String line;
StringBuffer sb = new StringBuffer();
while ((line = in.readLine()) != null) {
    sb.append(line);
    sb.append("\n");
}
return sb.toString();
}

如何将其合并到以下代码中?

public void doSendYahooMail(){
    from = txtFrom.getText();
    password= new String(txtPassword.getPassword());
    to = txtTo.getText();
    cc = txtCC.getText();
    bcc = txtBCC.getText();
    subject = txtSubject.getText();
    message_body = jtaMessage.getText();
    //String imapHost = "imap.mail.yahoo.com";

    Properties props = new Properties();
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.host", "smtp.mail.yahoo.com");
    props.put("mail.smtp.port", "465");
    props.put("mail.smtp.ssl.enable", "true");
    props.put("mail.imap.host", "imap.mail.yahoo.com");
    props.put("mail.imap.ssl.enable", "true");
    props.put("mail.imap.port", "993");

    Session session = Session.getInstance(props,null);

    try {           
        // message definition
        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));
        message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
        if(!cc.equals("")){
            message.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc));
        }
        if(!bcc.equals("")){
            message.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(bcc));
        }
        message.setSubject(subject);
        if(!filename.equals("")){// if a file has been attached...
            BodyPart messageBodyPart = new MimeBodyPart();
            messageBodyPart.setText(message_body);// actual message
            Multipart multipart = new MimeMultipart();// create multipart message
            // set the text message part
            multipart.addBodyPart(messageBodyPart);//add the text message to the multipart

            // attachment part
            messageBodyPart = new MimeBodyPart();
            String attachment = fileAbsolutePath;
            DataSource source = new FileDataSource(attachment);
            messageBodyPart.setDataHandler(new DataHandler(source));
            messageBodyPart.setFileName(filename);
            multipart.addBodyPart(messageBodyPart);//add the attachment to the multipart message
            // combine text and attachment
            message.setContent(multipart);
            // send the complete message
            Transport.send(message, from, password);
        }
        else{// if no file has been attached
            message.setText(message_body);
            Transport.send(message, from, password);
        }

        JOptionPane.showMessageDialog(this, "Message Sent!","Sent",JOptionPane.INFORMATION_MESSAGE);

        filename = "";//reset filename to null after message is sent
        fileAbsolutePath = "";//reset absolute path name to null after message is sent

        // save sent message
        Store store = session.getStore("imap");
        store.connect(from, password);
        Folder folder = store.getFolder("Sent");
        if(!folder.exists()){
            folder.create(Folder.HOLDS_MESSAGES);
            Message[] msg = new Message[1];
            msg[0] = message;
            folder.appendMessages(msg);
        }
        store.close();
    } catch (Exception e) {
        JOptionPane.showMessageDialog(this, e.toString());
    }
}

0 个答案:

没有答案