Avatar billede thomas_yde Nybegynder
16. april 2002 - 19:18 Der er 9 kommentarer og
1 løsning

Javamail body??

Hejsa Eksperter, Nu har jeg anvendt javamail kompnenten men jeg kan ikke få den til at skrive teksten ud :/

Er der nogen der ved hvordan man henter en body på en Message?

Avatar billede disky Nybegynder
16. april 2002 - 19:22 #1
henter en body på en message ?

Hvad mener du ?

Vil du indsætte en body i den email som du vil sende
Avatar billede thomas_yde Nybegynder
16. april 2002 - 19:24 #2
nej jeg vil gerne se hvad den anden har skrevet.
Jeg kan få subject ud og afsender, men træt som jeg er kan jeg ikke se en metode til teksten :)

Har kodet i 10 timer i træk nu.
Avatar billede disky Nybegynder
16. april 2002 - 19:31 #3
post den kode du forsøger med
Avatar billede thomas_yde Nybegynder
16. april 2002 - 19:37 #4
Der er meget men jeg har forkortet det ned til det her:
    // TO <-- virker
        Address[] mt;
    if ((mt = m.getRecipients(Message.RecipientType.TO)) != null) {
            ebDump.setModtager(mt);
        }

    // SUBJECT <-- virker
    ebDump.setTitel(m.getSubject());
       
    // DATE <-- virker
    Date d = m.getSentDate();
        GregorianCalendar gd = new GregorianCalendar(d.getYear(), d.getMonth(), d.getDate());
        if(d != null){
           
            ebDump.setDato(gd);
        }
        else{
            ebDump.setDato(null);
        }
        //body tror jeg  <--- ingen ide til hvordan den løses
        try
        {
            String body = ((String)m.content()).toString();
        }
        catch(Exception e)
        {
            System.out.println("Fejl i body: " + e.getMessage());
        }
Avatar billede thomas_yde Nybegynder
16. april 2002 - 19:41 #5
hmm hvis du vil have hele koden kan du få det men der er rimelig meget og det ovenover er egentlig der problemet ligger.
m er en Message
ebDump er et emailbesked object
Avatar billede disky Nybegynder
16. april 2002 - 19:42 #6
Istedet for at bruge Message skal du bruge MimeMessage klassen, den har nemlig en .getContent() metode som returnere et Object, hvis din email er af type text/plain er det object en String, men kan også være andet.
Avatar billede thomas_yde Nybegynder
16. april 2002 - 20:01 #7
package NyWebPortal.Server.ModelServer;

import java.util.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import java.util.Vector;

public class Emailkonto {
   
    public String getBrugernavn(){
        return user;
    }
    public String getPassword(){
        return password;
    }
   
    public Emailkonto(String brugernavn, String usrPassword) {
        user = brugernavn;
        password = usrPassword;
    }
   
    public int sletBesked(int beskedId) {
        return 1;
    }

    public Emailbesked find(int beskedId) {
        return null;
    }

    public Vector getEmails() {
        return getMails();
    }

    public int getNyeEmails(){
        return nyeBeskeder;
    }
   
    public Vector getMails() {
       
        Emailbesked noMail = new Emailbesked(null,null,null);
        ingenMails.add(noMail);
        lnkEmailbesked = new Vector();
        int msgnum = -1;
    int optind;     

        try {

        // Get a Properties object
        Properties props = System.getProperties();
            // Get a Session object
        Session session = Session.getDefaultInstance(props, null);
        session.setDebug(debug);

        if (showMessage) {
        MimeMessage msg = new MimeMessage(session, System.in);
        return ingenMails;
        }

        // Get a Store object
        Store store = null;
        if (url != null) {
        URLName urln = new URLName(url);
        store = session.getStore(urln);
        store.connect();
        } else {
        if (protocol != null)       
            store = session.getStore(protocol);
        else
            store = session.getStore();

        // Connect
        if (host != null || user != null || password != null)
            store.connect(host, port, user, password);
        else
            store.connect();
        }

        // Open the Folder
        Folder folder = store.getDefaultFolder();
        if (folder == null) {
            System.out.println("No default folder");
            return ingenMails;
        }
        folder = folder.getFolder(mbox);
        if (folder == null) {
            System.out.println("Invalid folder");
            return ingenMails;
        }

        // try to open read/write and if that fails try read-only
        try {
        folder.open(Folder.READ_WRITE);
        } catch (MessagingException ex) {
        folder.open(Folder.READ_ONLY);
        }
        int totalMessages = folder.getMessageCount();

        if (totalMessages == 0) {
        System.out.println("Empty folder");
        folder.close(false);
        store.close();
                return ingenMails;
        }

        if (verbose) {
        nyeBeskeder = folder.getNewMessageCount();
        /*System.out.println("Total messages = " + totalMessages);
        System.out.println("New messages = " + newMessages);
        System.out.println("-------------------------------");*/
               
        }

        if (msgnum == -1) {
        // Attributes & Flags for all messages ..
                Message[] msgs = folder.getMessages();
        // Use a suitable FetchProfile
        FetchProfile fp = new FetchProfile();
        fp.add(FetchProfile.Item.ENVELOPE);
        fp.add(FetchProfile.Item.FLAGS);
        fp.add("X-Mailer");
        folder.fetch(msgs, fp);

        for (int i = 0; i < msgs.length; i++) {
                    eb = new Emailbesked();
            lnkEmailbesked.add(dumpEnvelope(msgs[i], eb));
            // dumpPart(msgs[i]);
        }
        } else {
        System.out.println("Getting message number: " + msgnum);
        Message m = null;
       
        try {
            m = folder.getMessage(msgnum);
        } catch (IndexOutOfBoundsException iex) {
            System.out.println("Message number out of range");
        }
        }

        folder.close(false);
        store.close();
    } catch (Exception ex) {
        System.out.println("Oops, got exception! " + ex.getMessage());
        return ingenMails;
    }
    return lnkEmailbesked;
    }

    public Emailbesked dumpEnvelope(Message m, Emailbesked ebDump) throws Exception
    {
    Address[] a;
    // FROM
    if ((a = m.getFrom()) != null)
        {
            ebDump.setAfsender(a);
        }
        else
        {
            InternetAddress anonym = new InternetAddress();
            anonym.setAddress("anonym");
        }
    // TO
        Address[] mt;
    if ((mt = m.getRecipients(Message.RecipientType.TO)) != null)
        {
            ebDump.setModtager(mt);
        }
    // SUBJECT
    ebDump.setTitel(m.getSubject());
    // DATE
    Date d = m.getSentDate();
        GregorianCalendar gd = new GregorianCalendar(d.getYear(), d.getMonth(), d.getDate());
        if(d != null)
        {
            ebDump.setDato(gd);
        }
        else
        {
            ebDump.setDato(null);
        }
        //body tror jeg
        try
        {
            String body = ((String)m.getContent()).toString();
        }
        catch(Exception e)
        {
            System.out.println("Fejl i body: " + e.getMessage());
        }
        return ebDump;
    }

    static String indentStr = "                                              ";
    static int level = 0;

    /**
    * Print a, possibly indented, string.
    */
    public void pr(String s)
    {
    if (showStructure)
        System.out.print(indentStr.substring(0, level * 2));
    System.out.println(s);
    }
   
    String protocol = "pop3";
    String host = "exelev.aabc.dk";
    String user;
    String password;
    String mbox = "inbox";
    String url = null;
    int port = -1;
    int nyeBeskeder = 0;
    boolean verbose = false;
    boolean debug = false;
    boolean showStructure = false;
    boolean showMessage = false;
    Emailbesked eb;
    private Vector ingenMails = new Vector();
    private Vector lnkEmailbesked;
    private String forwardadresse;
    private String adresse;
}

Hvis du gider hjælpe mig med at konvertere den til MimeMessage smider jeg nogle ekstra point oveni.
Jeg håber du vil hjælpe mig.
Avatar billede disky Nybegynder
16. april 2002 - 20:08 #8
da MimeMessage er en subclass til Message, skulle det faktisk være nok at replace 'Message' med 'MimeMessage'
Avatar billede thomas_yde Nybegynder
16. april 2002 - 20:16 #9
Message[] msgs = folder.getMessages();
vil du ændre den til MimeMessage[] ?
hvordan vil du få fat i alle beskeder så.

jeg er meget træt
Avatar billede disky Nybegynder
18. april 2002 - 16:40 #10
nej lige det sted ville jeg bibeholde Message[] da det er super klassen betyder det bare at du nemmere kan skifte til en anden sub klasse.

Lige som man aldrig siger:

Vector vect=new Vector();
men
List vect=new Vector();
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester