2016-04-12 6 views
1

Ich verstehe das Problem überhaupt nicht. Wenn ich von der Hauptmethode versuche, während ich als Java-Anwendung laufe, dann kommt die E-Mail perfekt mit korrektem Betreff und Inhalt formatiert. während, wenn ich von localhost versuchen, kommt es in gebrochenem Format wieMail nicht Rendern HTML und kommen in gebrochenem Format

------ = _ Part_0_1765202668.1460463643056 Content-Type: text/html; charset = utf-8 Content-Transfer-Encoding: 7bit

Mein Inhalt

------ = _ Part_0_1765202668.1460463643056--

ich alle relevanten Gläser (javax hinzugefügt haben. Mail). Egal, was der Inhalt ist, es wird nur als solcher kommen. Es ist das gleiche Stück Code, das gut von den Hauptmethoden funktioniert, aber nicht mit dem lokalen Host. irgendwelche Ideen?

einige relevante Code

MimeMessage msg = new MimeMessage(session); 
    msg.setFrom(new InternetAddress(this.from)); 
    if ((this.replyTo != null) && (!this.replyTo.equals(""))) 
     msg.setReplyTo(InternetAddress.parse(this.replyTo)); 
    msg.setSentDate(new Date()); 
    InternetAddress[] address = InternetAddress.parse(this.to); 
    msg.setRecipients(Message.RecipientType.TO, address); 

    if (this.cc != null) { 
     InternetAddress[] address1 = InternetAddress.parse(this.cc); 
     msg.setRecipients(Message.RecipientType.CC, address1); 
    } 

    if (this.bcc != null) { 
     InternetAddress[] address2 = InternetAddress.parse(this.bcc); 
     msg.setRecipients(Message.RecipientType.BCC, address2); 
    } 
    msg.setSubject(this.subject); 

    Multipart mp = new MimeMultipart(); 

    MimeBodyPart mbp = new MimeBodyPart(); 
    mbp.setContent(this.body,"text/html;charset=utf-8"); 

    mp.addBodyPart(mbp); 

    if (this.attachfiles != null) { 
     for (Enumeration e = this.attachfiles.keys(); e.hasMoreElements();) { 
      String filename = (String) e.nextElement(); 
      mbp = new MimeBodyPart(); 

      FileDataSource fds = new FileDataSource(
        (String) this.attachfiles.get(filename)); 
      mbp.setDataHandler(new DataHandler(fds)); 
      mbp.setFileName(filename); 

      mp.addBodyPart(mbp); 
     } 

    } 

    msg.setContent(mp); 

    msg.setSentDate(new Date()); 

    Transport.send(msg); 
+1

ich nicht den Unterschied zwischen „aus dem Haupt versuchen“ und „versuchen, von localhost“. Kannst du besser erklären, was du tust? – Henry

+0

Mit "localhost" meinen Sie, Sie laufen in einer Art von Anwendungsserver? Sind Sie sicher, dass der Server dieselbe Version von JavaMail verwendet? Was zeigt die [JavaMail-Debugausgabe] (http://www.oracle.com/technetwork/java/javamail/faq/index.html#debug)? –

Antwort

1

Es gab ein Problem mit pom.xml Es stellte sich heraus ein Konflikt in Paketen war. Tomcat fügt automatisch ein eigenes JavaMail-Paket in das Maven-Build von zwei anderen Jars im Web-Projekt ein, das ein Problem verursachte, anstatt es aus dem standardmäßigen JavaMail-Jar zu importieren.

ausschließen Sie einfach die folgenden Gläser

<dependency> 
    <groupId>org.apache.ws.commons.axiom</groupId> 
    <artifactId>axiom-api</artifactId> 
    <version>1.2.7</version> 
    <exclusions> 
     <exclusion> 
      <artifactId>geronimo-javamail_1.4_spec</artifactId> 
      <groupId>org.apache.geronimo.specs</groupId> 
     </exclusion> 
     <exclusion> 
      <artifactId>geronimo-activation_1.1_spec</artifactId> 
      <groupId>org.apache.geronimo.specs</groupId> 
     </exclusion> 
    </exclusions> 
    </dependency>