2016-04-12 24 views
1

Sorunu hiç anlamadım. Java uygulaması olarak çalışırken ana yöntem deniyorsam, posta düzgün konu ve içerik biçimlendirilmiş ile mükemmel geliyor. Ben localhost'tan çalıştığınızda, bozulmuş biçimde gelir ise örneğinposta html oluşturmuyor ve bozuk formatta geliyor

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

İçerik

------ = _ Part_0_1765202668.1460463643056-- Ben tüm ilgili kavanoz (javax ekledik

. posta). İçerik ne olursa olsun, sadece böyle gelecektir. Ana yöntemlerden iyi çalışan ancak yerel ana bilgisayarla aynı olmayan bir kod parçası. herhangi bir fikir?

gerekli bazı kod

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

aşağıdaki kavanozları dahil değildir. Ne yaptığını daha iyi açıklayabilir misin? – Henry

+0

"localhost" ile bir çeşit uygulama sunucusunda çalışıyorsunuz demek istiyor musunuz? Sunucunun aynı JavaMail sürümünü kullandığından emin misiniz? [JavaMail hata ayıklama çıkışı] (http://www.oracle.com/technetwork/java/javamail/faq/index.html#debug) neyi gösterir? –

cevap

1

paketlerinde çakışma olduğu ortaya çıktı pom.xml bir sorun oluştu. Tomcat, standart JavaMail kavanozundan ithal etmek yerine, soruna neden olan web projesindeki diğer iki kavanozdan Maven yapısında kendi JavaMail paketini otomatik olarak içerir.

Tıpkı "ana den çalışıyor" ve "localhost dan çalışıyor" arasındaki farkı alamadım

<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> 
İlgili konular