Движок приложений Google JAVA: как встроить html в почту, отправляемую при использовании java mail api на движок приложений google? - PullRequest
6 голосов
/ 10 июля 2011

это рабочий код, который я использую для отправки почты, но если я включаю html-содержимое в строковый аргумент метода setText (), тогда он отображается просто как строка для пользователя, без эффекта HTML.

        Message msg = new MimeMessage(session1);
        msg.setFrom(new InternetAddress("abc@xyz.com", "Team Application"));
        msg.addRecipient(Message.RecipientType.TO, new InternetAddress(email, "Dear "+name1+"."));
        msg.setSubject("Registration confirmation mail");
        msg.setText("Dear "+name1+",\nThanks for registering with us.");
        Transport.send(msg);

Ответы [ 3 ]

10 голосов
/ 10 июля 2011

попробуйте использовать setContent вместо setText
так для вашего примера кода:

    Message msg = new MimeMessage(session1);
    msg.setFrom(new InternetAddress("abc@xyz.com", "Team Application"));
    msg.addRecipient(Message.RecipientType.TO, new InternetAddress(email, "Dear "+name1+"."));
    msg.setSubject("Registration confirmation mail");
    msg.setContent("Dear <i>"+name1+"</i>,<br>Thanks for registering with us.", "text/html");
    Transport.send(msg);

Лично для этого я использую составное сообщение с текстовой и html версией. Это часть моего собственного кода:

        // Unformatted text version
        final MimeBodyPart textPart = new MimeBodyPart();
        textPart.setText("plain content");
        // HTML version
        final MimeBodyPart htmlPart = new MimeBodyPart();
        htmlPart.setContent("<b>html content</b>", "text/html");
        // Create the Multipart.  Add BodyParts to it.
        final Multipart mp = new MimeMultipart();
        mp.addBodyPart(textPart);
        mp.addBodyPart(htmlPart);
        // Set Multipart as the message's content
        msg.setContent(mp);
1 голос
/ 15 января 2014

Вы должны использовать MailService.Message и MailService из низкоуровневого API. Пример:

Message msg = new Message();
    msg.setSender(_sender);
    msg.setTo(_recipient);
    msg.setSubject(_msgSubject);
    msg.setHtmlBody("<h1 style="height:1200px;">THIS IS RUSSIA!!!</h1>");
    MailService service = MailServiceFactory.getMailService();
    try {
        service.send(msg);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
1 голос
/ 11 июля 2011

Проверяя документацию MimeMessage , вы можете перегрузить подпись setText () , где можно указать кодировка и подтип Mime :

msg.setText("Your html body", "utf-8", "html");
...