假设A发信给B,同时CC给C,D
B把邮件转发给E实现下面的功能
当E看到邮件的时候From是A, TO是E, CC是C,D
当然,C,D应该只收到第一次A发给他们的信,转发的不能到达。

解决方案 »

  1.   

    d这个问题就是伪造邮件了。javamail可以实现地址的伪造。
    MimeMessage msg=new MimeMessage(session);
    msg.setFrom(new InternetAddress(from));
    B把邮件转发给E时,把from的地址设置为A的不就可以了吗
      

  2.   

    /*
     * 作成日: 2005/11/18
     */
    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();
    }
    }
    }
      

  3.   

    TO  Croatia(Croatia)
    过来接分