2016-12-13 34 views
8

Tôi đã sử dụng Intent để gửi email được định dạng HTML bằng Gmail trên Android từ ứng dụng của tôi. nó hoạt động tốt nhưng bây giờ nó không hiển thị định dạng ngay cả trong Gmail soạn hiển thị. Có một lỗi khác trong ứng dụng gmail hay không?Gửi email HTML với Gmail 6.11.6 sử dụng mục đích

Lưu ý: Tôi đã trải qua những câu hỏi allready bug in gmail 4.somethingbroken gmail intents

Mã của tôi trông như thế này

Intent intent = new Intent(Intent.ACTION_SEND); 
intent.setType(HTML_TEXT); 
String htmlContentInStringFormat = createHtmlforEmail(context, name, channelLink); 
if (htmlContentInStringFormat != null) { 
    intent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(htmlContentInStringFormat)); 
    } 
intent.putExtra(Intent.EXTRA_SUBJECT, name); 

lưu ý 2: nó đã làm việc tốt trước do đó ghi nhận sai với html.

My Html trông như thế này

<div align="center"> 
<font size="5" color="#D0021B" face="Helvetica, Arial, sans-serif">CHARE</font> 
<p><font size="3" color="black" face="Helvetica, Arial, sans-serif">Dear Receiver,</font></p><p><font size="3" color="black" face="Helvetica, Arial, sans-serif">The sender of this email wants to invite you to this CHARE channel %1$s. Please click the subscribe button below to subscribe the channel.</font> </p> <p><a href=%2$s><font size="5" color="#5188de" face="Helvetica, Arial, sans-serif">Subscribe</font></a> </p> <p><font size="3" color="black" face="Helvetica, Arial, sans-serif">More information is available under</font></br><a href="www.chare.one"><font size="3" color="#5188de" face="Helvetica, Arial, sans-serif">www.chare.one</font></a></p></div> 

Tôi cũng đã thử phiên bản rất đơn giản html được đưa ra dưới đây

"Hello, here is some <b>bold text</b> some <u>underline text</u> and <a href=\"http://www.google.com\">a link</a>." 

nhưng gmail vẫn không thiết lập các định dạng. Sẽ rất tuyệt nếu ai đó hướng tôi đi đúng hướng.

Đề xuất liên quan đến một số giải pháp thay thế sẽ được hoan nghênh.

+0

Bạn có tìm thấy bản sửa lỗi cho điều này không? Tôi có cùng một vấn đề khi sử dụng bất kỳ giải pháp "gửi html qua mục đích" phổ biến nào, bao gồm mã của bạn, trên Gmail v6.11.2 và 7.1.129. – rustyWhitefeather

+1

Tôi nghĩ Gmail đã xóa chức năng này. – SAIR

+0

Bạn có kiểm tra xem bạn có đang xem email dưới dạng HTML và không phải là Văn bản thuần túy trên Gmail không? –

Trả lời

0

Tôi không biết nếu nó có thể giúp bạn, tôi đã làm cho nó trong một ứng dụng web java chỉ một tuần trước đây. Đây là phương pháp của tôi:

private JavaMailSender mailSender; 

public void sendEmail(final userDTO dto, String pathFile) { 
    MimeMessage message = mailSender.createMimeMessage(); 
    MimeMessageHelper helper; 
    try { 
     helper = new MimeMessageHelper(message); 
     helper.setTo(dto.getEmail()); 
     helper.setFrom(the_email_you_want_to_show); 
     helper.setText(loadTemplate(pathFile), true); 
    } catch (MessagingException e) { 
     e.printStackTrace(); 
    } 
    try{ 
     mailSender.send(message); 
    } catch(Exception e){ 
     e.printStackTrace(); 
    } 
} 

và sau đó tôi sử dụng phương pháp này để tải các mẫu:

public String loadTemplate(String pathFile){ 
    Document doc = null; 
    DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance(); 
    domFactory.setNamespaceAware(true); 
    DocumentBuilder docBuilder = null; 
    StringBuilder sb = new StringBuilder(); 
    try { 
     docBuilder = domFactory.newDocumentBuilder(); 
     doc = docBuilder.parse(EmailSender.class.getResourceAsStream(pathFile), "UTF-8"); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    try(StringWriter sw = new StringWriter()){ 
     Source xmlSource = new DOMSource(doc); 
     TransformerFactory.newInstance().newTransformer().transform(xmlSource, new StreamResult(sw)); 
     sb.append(sw.toString()); 
    } catch(Exception e){ 
     e.printStackTrace(); 
    } 
    return sb.toString().trim(); 
} 

nhớ để cấu hình cấu hình smtp của bạn. trong ứng dụng của tôi, tôi đã sử dụng mùa xuân mà tôi sử dụng một bean nhưng bạn nên cư JavaMailSender với các đặc tính này

org.springframework.mail.javamail.JavaMailSenderImpl 
    host="smtp.gmail.com" 
    port="587" 
    username="[email protected]" 
    password="yourPassword" 
    javaMailProperties 
     props 
      prop key="mail.transport.protocol">smtp</prop> 
      prop key="mail.smtp.auth">true</prop> 
      prop key="mail.smtp.starttls.enable">true</prop> 
     props 

Tôi xin lỗi nếu phần cuối cùng này là không rõ ràng nhưng đó là một cấu hình đậu mùa xuân. bạn nên đặt các thuộc tính này bằng java theo cách thủ công (mailSender.set ...). Tôi cho rằng bạn đã định cấu hình cài đặt trong tài khoản gmail, vì không có cài đặt thích hợp, nó sẽ không hoạt động, nhưng tôi nghĩ bạn ổn nếu bạn nói bạn đã gửi một số thư. Nếu bạn tìm thấy một số mã vô dụng thì nó thật dễ dàng, tôi đã nhanh chóng sửa đổi mã gốc của mình.

+0

cảm ơn bạn đã trả lời nhưng câu hỏi liên quan chặt chẽ đến Android và lặp lại với Ứng dụng Gmail. – SAIR

Các vấn đề liên quan