网络选摘之邮件转发

    技术2022-05-11  119

    假设A发信给B,同时CC给C,DB把邮件转发给E

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

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

    =============================

    /* * 作成日: 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 forwardMimeMessage forward = new MimeMessage(session);

    // Fill in headerforward.setSubject(m.getSubject());

    forward.setFrom(m.getFrom()[0]);forward.addRecipient(Message.RecipientType.TO,new InternetAddress("EE@21cn.com","周","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 partMimeBodyPart messageBodyPart = new MimeBodyPart();//messageBodyPart.setText("Here you go with the original message:/n/n","iso-2022-jp");

    // Create a multi-part to combine the partsMultipart multipart = new MimeMultipart();//multipart.addBodyPart(messageBodyPart);

    // Create and fill part for the forwarded contentmessageBodyPart = new MimeBodyPart();messageBodyPart.setDataHandler(m.getDataHandler());

    // Add part to multi partmultipart.addBodyPart(messageBodyPart);

    // Associate multi-part with messageforward.setContent(multipart);

    // Send messageTransport.send(forward);

    } catch (Exception e) {e.printStackTrace();}}}


    最新回复(0)