如何使HTML MMS消息完整被Android设备浏览器解析?

7次阅读
没有评论

问题描述

从iOS切换到Android设备后发现,之前可以通过Base64编码并设置特定MIME头发送HTML格式的MMS消息。然而在Android设备上收到此类MMS消息时,会丢失一些HTML标签(如<style>),并且大部分内容是以纯文本形式展示。

解决方案

请注意以下操作可能对系统造成影响,请谨慎执行,并确保有恢复计划。

方案1:使用正确的HTTP/SMTP方式发送消息

步骤1: 配置邮件服务器

在你使用的邮件或聊天软件中,确保使用支持HTML MMS消息的功能。例如,设置邮件服务器将MMS消息以多部分(multipart)的形式发送。

Content-Type: multipart/mixed; boundary=frontier
--frontier
Content-Type: text/plain; charset=UTF-8; format=flowed
Message body text.
--frontier
Content-Type: multipart/related; boundary=bfooter
--bfooter
Content-Type: application/x-httpd-microsoft-html;
  name="MMSmessage.html"
Content-Transfer-Encoding: Base64
Content-Disposition: attachment;

ZmlsZXJkYXRhLzEwMDAtMCAxLDEtNi12IHsgIjAiOiAxOjA7IF0;
--bfooter--

步骤2: 确保接收端软件处理方式

目前大部分Android消息应用都未能完整解析这些消息,可能需要配置特定的设置或第三方工具。

方案2:使用Webhook API或者自定义通知策略

第一步:实现MMS发送脚本

创建一个发送HTML内容邮件的脚本,可以通过SMTP或者HTTP API实现。需要注意的是需保证邮件格式正确,并且包含正确的MIME头信息,以便接收设备可以解析。

#!/bin/bash
# 发送HTML MMS消息
echo -e 'Content-Type: multipart/related; boundary=FRONTIER\n' | \
postfix sendmsg -f you@yourdomain.com -t buddy@buddydomain.com <<'ENDHDRS'
From: me@yoursite.org
To: them@theresourcecentre.org.uk
Subject: Sample HTML MMS message
Content-Type: multipart/related; boundary=FRONTIER
.ENDHDRS
ENDHDRS
--FRONTIER
Content-Type: text/plain; charset=UTF-8;
  format=flowed
Message body text.
--FRONTIER
Content-Type: application/x-httpd-microsoft-html;
  name="MMSmessage.html"; 
Content-Transfer-Encoding: base64  
<ZmlsZXJkYXRhLzEwMDAtMCAxLDEtNi12IHsgIjAiOiAxOjA7IF0>
--FRONTIER--

第二步:配置Android设备或者第三方应用支持

对于某些特定的电子邮件客户端或即时通讯软件而言,可以尝试一些开源项目如K-9 Mail或其他自定义插件,来提供HTML消息支持。

方案3:使用Web服务作为中介

创建一个简单的web服务,接收并处理HTML MMS消息后将其转换为可在Android设备上解析的格式。这样可以确保任何不兼容的问题都可以在服务器层面解决。

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/convert')
def convert_mms_message():
    html_message = request.form.get('html_message')
    # 实现将HTML转换为Android友好的格式的逻辑

    response_data = {"converted_html": converted_html}
    return jsonify(response_data)

if __name__ == '__main__':
    app.run(port=5000)

通过上面这些方法,你可以尝试在不同应用场景下发送和接收正确的HTML MMS消息。但需要注意的是每种方案都有其局限性和适用场景,具体选择依据实际需求和个人偏好来定。

正文完