【问题标题】:Html.fromHtml within Gmail Sender .sendMail(string, string, string, string)Gmail 发件人中的 Html.fromHtml .sendMail(string, string, string, string)
【发布时间】:2013-07-09 11:17:32
【问题描述】:

我有以下代码:

dev = "email@gmail.com";
dev_p = "password";
subject = "Thank you for signing up to the company auditing app";
body = "<!DOCTYPE html><body>To " + username + ",\nThank you for signing up to the company auditing application.\nYou can login to your account via our website <a href='http://www.companyauditingapp.com/'>here</a>.\n Regards,\nThe Team</body></html>";
Spanned html = Html.fromHtml(body);
try{
    GMailSender sender = new GMailSender(dev, dev_p);
    sender.sendMail(subject,html,dev,emailadd);
} catch (Exception e) {
    Log.e("SendMail", e.getMessage(), e);
}

我希望能够通过 sendMail 方法发送 html,在 eclipse 中它一直要求我将方法参数 - 字符串 html/body 更改为跨区字符串。

谁能提出解决这个问题的方法?

提前致谢

克里斯

【问题讨论】:

  • 第二个参数应该是String类型而不是Spanned。
  • 我正在尝试将 html 添加到我的电子邮件中,在我发送的电子邮件中显示 html,是否需要更改方法参数或在电子邮件中添加标题?
  • 尝试像sender.sendMail(subject, body, dev, emailadd)这样替换方法调用。使用body 变量而不是html。然后它将工作或出现不同的错误。
  • 是的,但这会将标签的整个“字符串”传递给 sendMail 方法。我要做的就是将字符串发送到方法中,以便在另一端以 HTML 格式查看电子邮件。
  • 你应该发送一个字符串并设置一些标题来切换文本/html。我不知道你的GMailSender 课程是从哪里得到的,但如果它取自这个答案stackoverflow.com/a/2033124/427225,你可以在sendMail 方法中将text/plain 替换为text/html

标签: android html parameters gmail html-email


【解决方案1】:

原来GMailSender是一个stackoverflow用户在this post发布的自定义类。

发送 HTML 而不是纯文本的最简单方法是更改​​上面链接中的 sendMail 方法,并将 text/plain 替换为 text/html

或者你可以给方法添加一个参数,让它更加可定制:

public synchronized void sendMail(String subject, String body, String sender, String recipients, boolean isHtml) throws Exception {   
    try{
        MimeMessage message = new MimeMessage(session);
        String messageType = isHtml ? "text/html" : "text/plain";
        DataHandler handler = new DataHandler(new ByteArrayDataSource(body.getBytes(), messageType));   
        message.setSender(new InternetAddress(sender));   
        message.setSubject(subject);   
        message.setDataHandler(handler);   
        if (recipients.indexOf(',') > 0)   
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients));   
        else  
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));   
        Transport.send(message);   
    }catch(Exception e){

    }
}   

【讨论】:

    【解决方案2】:

    如果您总是想要 HTML 邮件,您可以更改 sendmail 功能并将text/plain 更改为text/html

    public synchronized void sendMail(String subject, String body, String sender, String recipients) throws Exception {   
        try{
        MimeMessage message = new MimeMessage(session);   
        DataHandler handler = new DataHandler(new ByteArrayDataSource(body.getBytes(), **"text/plain"**));   
        message.setSender(new InternetAddress(sender));   
        message.setSubject(subject);   
        message.setDataHandler(handler);   
        if (recipients.indexOf(',') > 0)   
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients));   
        else  
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));   
        Transport.send(message);   
        }catch(Exception e)
        }
    } 
    

    【讨论】:

    • sendMail函数位于公共类GMailSender中。
    猜你喜欢
    • 2011-03-21
    • 2015-11-18
    • 2022-07-29
    • 2010-09-24
    • 2021-09-28
    • 1970-01-01
    • 2017-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多