# Die E-mail Parts mit JavaMail erkennen?



## Stromerzeuger (15. August 2006)

Hallo an alle.
Kann mir jemand sagen wie das eigentlich Funk.
Ich habe eine E-mail mit text/plain, text/html und einem image/gif
die Email ist eine multipart/mixed
und besteht aus 2 Pards:
->multipart/alternative
->image/gif
der Part multipart/alternative enthält mein text/plain und text/html
(also Parts im Part)

wie kann ich darauf zugreifen?
mit 
*if* (content *instanceof* Multipart) 
{
	Multipart mp = (Multipart) content;
	if (mp.isMimeType("text/plain"))
        {...}
} klappt das nicht :suspekt:

gruss martin


----------



## kroesi (15. August 2006)

Hi !

Müsste so funktionieren :


```
Part messagePart=message;
      Object content=messagePart.getContent();
      if (content instanceof Multipart)
      {
        messagePart=((Multipart)content).getBodyPart(0)
        String contentType=messagePart.getContentType();
        
        if (contentType.startsWith("text/plain") || contentType.startsWith("text/html"))
        {
             ....
        }
      }
```

Gruss,

Krösi


----------



## Stromerzeuger (15. August 2006)

Hi, nun klappt irgendwie nicht so wie ich das will.
hab den Code auch schon etwas verändert. das mit dem image/gif habe ich schon abgefangen. Das Problem ist aber das selbe.
ich will auf die UnterParts des Part: Multipart/alternative kommen (bzw. zugreifen)
ich habe den Code schon so weit:

```
...
 Object body = message[i].getContent();
  if (body instanceof Multipart) 
      { Multipart multipart=(Multipart)body;
        int    multizahl= multipart.getCount();
           for(int z=0; z < multizahl; z++)
                  {   
                     ...
                     Part part = multipart.getBodyPart(j);
                     MimeBodyPart mbp = (MimeBodyPart)part;                                  
                    if (part.isMimeType("multipart/alternative"))
                   {
```
 
und jetzt 

gruss Martin


----------



## kroesi (15. August 2006)

Hi !

Hast du mal den Original-Text (also quasi den "Sourcecode") einer Mail, die du Parsen willst ? Kannst ihn unter Outlook mit "strg + F3" ansehen. Hab mich damit auch mal auseinandergesetzt, allerdings nicht unter Java.

Krösi


----------



## Stromerzeuger (16. August 2006)

Hi, nun mein Problem ist das alle schreiben das es Unterparts von Parts gibt, aber ich habe nirgends wo gesehen wo und wie man drauf zugreifen.!?

Den Code habe ich nicht mehr aber das passiert wenn man eine Html E-Mail verschickt mit Anhang. (z.B. mit GMX oder Yahoo)  dann bekommt der Empfänger  eine E-Mail mit zwei Parts einmal  wie schon gesagt mit  Multipart/alternative  (die wiederum aus  text/plan und text/Html bestecht) und dem  Part image/gif  (also den Anhang).
nun wollte ich wissen wie man auf das Html/part unter multipart/alternative kommt um es in der Datenbank zu speichern. 

Ich habe es so gelöst das ich mir den (Stream)  Multipart/alternative Part mit BufferedReader in ein  String geschrieben habe und den dann jeweils an dem Boundary mit dem Nummercode abgeschneitten habe (mit split() ) und dann erfragte ob der Content-Type in den jeweiligen String[] ein text/html ist.

Die Frage ist ob man das nicht etwas schneller und einfacher heraus bekommt 

Gruß Stromerzeuger


----------



## Stromerzeuger (16. August 2006)

Hier eine e-mail in der ich text/html erfragen will.
gruss Stromerzeuger


From: xxx@xxx.de
Message-ID: <xxx@xxx.net>
MIME-Version: 1.0
Subject: Test
To: xxx@xxx.de
X-Authenticated: #6670726
X-Flags: 0001
X-Mailer: WWW-Mail 6100 (Global Message Exchange)
X-Priority: 3

--========GMX274111155717332566322
Content-Type: multipart/alternative;
 boundary="========GMXBoundary274111155717332566567"

--========GMXBoundary274111155717332566567
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit

Hallo das ist ein text    
http://www.gmx.net/de/go/topmail?CUSTOMERNO=6670726&t=de1497157272.1155713258.b395be32

--========GMXBoundary274111155717332566567
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: 7bit

<html>
    <head>
        <title></title>
        <style type="text/css" media="screen">
body {font-family: verdana, arial, helvetica, sans-serif;font-size: 12px;padding: 5px;margin: 0;background-color: #FFF;}
p, ul, li {margin-top: 0;margin-bottom: 0;}
blockquote {margin-left: 5px;}
div.signature {color: #666;font-family: monospace; font-size: 0.8em;}
</style>
    </head>
    <body>
        Hallo das ist ein text
    <div class="signature"><br /><br /><br />-- <br /><br /><br />
</div></body>
</html>

--========GMXBoundary274111155717332566567--

--========GMX274111155717332566322
Content-Type: image/jpeg; name="xxx.jpeg"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="xxx.jpeg"

/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a
...
...
VEwJY4xHx+rPhRfbmndKp4oxVow5A4x3R3oNRMdwcW1jvSaL4zRdKr4oPDA4V35pXDSfVQphQG44
--========GMX274111155717332566322--


----------

