我测试通过的例子。/*
 * 作成日: 2005/11/21
 */
import java.util.Properties;import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;/**
 * @author Croatia
 */
public class Test8 { static int attachnum = 1; public static void main(String args[]) {
try {
String host = "xxx.xxx.xxx.xxx";
String user = "xxxxxx";
String password = "xxxxxx"; Session session =
Session.getDefaultInstance(System.getProperties(), null);
Store store = session.getStore("pop3");
store.connect(host, -1, user, password); Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_WRITE); int totalMessages = folder.getMessageCount();
if (totalMessages == 0) {
System.out.println("没有?件");
folder.close(false);
store.close();
return;
}

Message[] messages = folder.getMessages();
for (int i = 0; i < messages.length; i++) {
sendMail(messages[i]);
// messages[i].setFlag(Flags.Flag.DELETED, true);
} // folder.close(true);
folder.close(false);
store.close();
} catch (Exception e) {
e.printStackTrace();
}
} public static void sendMail(Message m) throws Exception {
try { Properties props = System.getProperties();
props.put("mail.smtp.host", "XX.XX.XX.XX");
Session session = Session.getDefaultInstance(props, null); // Create the message to forward
MimeMessage forward = new MimeMessage(session); // Fill in header
forward.setSubject(m.getSubject()); forward.setFrom(m.getFrom()[0]);
forward.addRecipient(
Message.RecipientType.TO,
new InternetAddress("[email protected]","周","GB2312")); InternetAddress[] oAddress = (InternetAddress[])m.getRecipients(Message.RecipientType.CC);
if (oAddress != null){
for (int j=0;j<oAddress.length;j++){
forward.addRecipient(
Message.RecipientType.CC,
new InternetAddress(oAddress[j].getAddress(),oAddress[j].getPersonal()));
}
} // Create your new message part
MimeBodyPart messageBodyPart = new MimeBodyPart();
// messageBodyPart.setText("Here you go with the original message:\n\n","iso-2022-jp"); // Create a multi-part to combine the parts
Multipart multipart = new MimeMultipart();
// multipart.addBodyPart(messageBodyPart); // Create and fill part for the forwarded content
messageBodyPart = new MimeBodyPart();
messageBodyPart.setDataHandler(m.getDataHandler()); // Add part to multi part
multipart.addBodyPart(messageBodyPart); // Associate multi-part with message
forward.setContent(multipart); // Send message
Transport.send(forward); } catch (Exception e) {
e.printStackTrace();
}
}
}

解决方案 »

  1.   

    TO  Croatia(Croatia)
    "当然,C,D应该只收到第一次A发给他们的信,转发的不能到达。"
    我按你的程序作了,但是转发的信也能收到阿
      

  2.   

    恩,修改一下
    // Send message
    Transport.send(forward);把它变成
    public static void send(Message msg,
                            Address[] addresses)
    的这个方法,他就不会送给CC的人了。Address[] oAdd = {new InternetAddress(new InternetAddress("[email protected]","周","GB2312")};
    Transport.send(forward,oAdd);这样。
      

  3.   

    TO  Croatia(Croatia)
    过来接分