问题描述
从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消息。但需要注意的是每种方案都有其局限性和适用场景,具体选择依据实际需求和个人偏好来定。
正文完