如何制作MMS彩信文件?

nowSms 短信、彩信(可用其中mmscomp.exe生成彩信文件) Now SMS/MMS Gateway(NowSMS)是一套SMS和MMS的内容交付解决方案。NowSMS是部署和开发SMS、MMS和WAP Push方案的快捷方法,可以用于Windows 2000/XP下的SMS网关、MMS网关、WAP Push网关以及多媒体消息中心。 立即下载

一,MMSCOMP命令行方式
  
     MMSCOMP.exe需要安装nowSms后才有,可在网上搜索下载(此文不再作详细介绍):

 1> nowSms的安装目录下将会有mmscomp.exe文件,该应用程序能通过所配置的头文件生成彩信.
 2> 首先准备制作彩信所需要的资源文件.
 SMIL文件:
 --------------------1.smil-----------------
 <smil xmlns='http://www.w3.org/2000/SMIL20/CR/Language'>
 <head>
 <meta name='title' content='create mms' />
 <meta name='author' content='aking(lmx88@163.com)' />
 <layout>
 <root-layout width='122px' height='1424px'  background-color='#FFFFFF' />
 <region id='Text' width='122px' height='1296px' top='148px' left='0px' fit='hidden' />
 <region id='Image' width='122px' height='128px'  top='20px' left='0px' fit='hidden' />
 </layout>
 </head>
 <body>
 <par>
 <img src='1.gif' region='Image' />
 <text src='1.txt' region='Text' ></text>
 </par>
 </body>
 </smil>

 SMIL文件中所指定的图片文件:1.gif
 SMIL文件中所指定的文本文件:1.txt

 3> 头描述文件1.hdr
 X-Mms-Message-Type: m-retrieve-conf
 X-Mms-Transaction-Id: 0123456789
 From:03005/TYPE=PLMN
 Subject:MMS MSG 下发

 头描述文件选项如下:
  1,表示该内容为彩信类型.
  X-Mms-Message-Type: m-retrieve-conf   (required)
  2,事物ID,可以是一数字串.
  X-Mms-Transaction-Id: text-string
  3,版本
  X-Mms-Version: 1.0
  4,消息ID,不重复的数字串.
  Message-Id: text-string (usually x@x format)
  5,数据表单
  Date: HTTP-date-format
  6,彩信发送者号码.可自己填写
  From: address@domain or +InternationalPhoneNumber/TYPE=PLMN (Address-present-token is assumed)
  7,彩信接收者号码
  To: address@domain or +InternationalPhoneNumber/TYPE=PLMN  (use multiple headers for multiple recipients)
  8,抄送方.
  Cc: (same format as To)
  9,密送.
  Bcc: (same format as To)
  10,彩信标题
  Subject: text-string
  11,类别,缺省为标准Personal
  X-Mms-Message-Class: Personal, Advertisement, Informational or Auto (default is Personal)
  12,优先级别,缺省为普通
  X-Mms-Priority: Low, Normal or High (default is Normal)
  13,状态报告,默认为不需要.
  X-Mms-Delivery-Report: Yes or No (default is No)
  14,已读报告
  X-Mms-Read-Reply: Yes or No (default is No)
  15,内容类型,MMS的MIME-TYPE为application/vnd.wap.multipart.related.应用服务器如IIS,TOMCAT,RESIN等设置:application/vnd.wap.multipart.related
  Content-type: MIME-Type (default is application/vnd.wap.multipart.related, override default with caution!)
  16,内容列表,分号隔开文件名与内容类型.
  X-NowMMS-Content-Location: filename;content-type (optional, use multiple headers for multiple files)

 X-Mms-Message-Type为头文件必需提供的选项,其它参数可选;但建议保留发送方与标题

 4>  上面已经准备好了MMS制作的相关文件,现在只需要在DOS下运行命令: mmscomp 1.hdr 1.smil
     注意要将所有的资源文件均保存在相同路径下.

     出错时将会有扬声器的警报提醒,运行成功后生成1.mms文件.该文件即可用于彩信的发送(关于彩信发送将在以后的文章中介绍.)


二,JAVA编程方式
 
 使用JAVA程序生成MMS文件需要到诺基亚论坛下载NMSS SDK(但我下载时好像已不提供该SDK工具了,若哪位有该工具包希望能发份我),
 由于NMSS SDK没有下到,在网上只下到mms java library的JAR文件.该包生成的MMS好像只适合NOKIA系列手机,具体我没作测试.
 
 1> 将MMSLibrary.jar设置到classpath中.
 2> 创建JAVA:

 -----------------------------------SampleMMSCreation.java----------------------------------
 import java.io.*;
 import java.util.*;
 import java.net.*;
 import com.nokia.mms.*;

 public class SampleMMSCreation {

  public SampleMMSCreation() {
   MMMessage mms = new MMMessage();
   // 1)Set headers
   SetHeaders(mms);
   // 2)Add various content parts
   AddContents(mms);

   MMEncoder encoder = new MMEncoder();
   encoder.setMessage(mms);

   try {
    // 3)Encode the message
    encoder.encodeMessage();
    byte[] out = encoder.getMessage();
    // 4)Print the encoded message to a file
    createMmsFile(out, "1.mms");
   } catch (Exception e) {
    System.out.println("ex="+e.getMessage());
   }
  }

  private void SetHeaders(MMMessage m) {
   // Just going to set the mandatories, and the subject...
   // Type,TransID,Version are all mandatory, and must be the first
   // headers, in this order!
   m.setMessageType(IMMConstants.MESSAGE_TYPE_M_SEND_REQ);
   m.setTransactionId("0123456789");
   m.setVersion(IMMConstants.MMS_VERSION_10);

   m.setFrom("+03005/TYPE=PLMN");
   m.addToAddress("+13728672084/TYPE=PLMN"); // at least one To/CC/BCC is
   // mandatory

   m.setSubject("My first test message!"); // subject is optional

   // ContentType is mandatory, and must be last header! These last 3 lines
   // set the ContentType to
   // application/vnd.wml.multipart.related;type="application/smil";start="<0000>"
   // In case of multipart.mixed, only the first line is needed (and change
   // the constant)

   // Any string will do for the Content-ID, but it must match that used
   // for the presentation part,
   // and it must be Content-ID, it cannot be Content-Location.
   m.setPresentationId("<1.smil>"); // presentation part has
   m.setContentType(IMMConstants.CT_APPLICATION_MULTIPART_RELATED);
   m.setMultipartRelatedType(IMMConstants.CT_APPLICATION_SMIL); // presentation
   // part
   // is
   // written
   // in
   // SMIL
   
   // Content-ID=<0000>

  }

  private void AddContents(MMMessage m) {

   // This is where the majority of the work is done. Note that here we are
   // adding the parts of the
   // message in the order we want them to appear. Actually the
   // presentation part specifies that,
   // but in terminals which cannot understand the presentation part, the
   // order may be significant,
   // so there seems to be no reason to use random order.

   // Note also, that the current version (1.1) of the library encodes the
   // message in some sort
   // of random order, so developers must either fix that problem using the
   // source code, or
   // be prepared for random order output.

   // Path where contents are stored assumed to be same as this class...
   String path = getPath();
   //System.out.println("path="+path);
   // Add SMIL content
   MMContent smil_part = new MMContent();
   byte[] b1 = readFile(path + "1.smil");
   smil_part.setContent(b1, 0, b1.length);
   smil_part.setContentId("<1.smil>"); // If "<>" are used with this
   // method, the result is Content-ID
   smil_part.setType(IMMConstants.CT_APPLICATION_SMIL);
   m.addContent(smil_part);

   // Add slide1 text
   MMContent s1_text = new MMContent();
   byte[] b2 = readFile(path + "77691_1.txt");
   s1_text.setContent(b2, 0, b2.length);
   s1_text.setContentId("<77691_1.txt>"); // If "<>" are not used with
   // this method, the result is
   // Content-Location
   s1_text.setType(IMMConstants.CT_TEXT_PLAIN);
   m.addContent(s1_text);
   MMContent s1_image = new MMContent();
   byte[] b3 = readFile(path + "76444.gif");
   s1_image.setContent(b3, 0, b3.length);
   s1_image.setContentId("<76444.gif>");
   s1_image.setType(IMMConstants.CT_IMAGE_GIF);
   m.addContent(s1_image);
  }

  private byte[] readFile(String filename) {
   int fileSize = 0;
   RandomAccessFile fileH = null;

   // Opens the file for reading.
   try {
    fileH = new RandomAccessFile(filename, "r");
    fileSize = (int) fileH.length();
   } catch (IOException ioErr) {
    System.err.println("Cannot find " + filename);
    System.err.println(ioErr);
    System.exit(200);
   }

   // allocates the buffer large enough to hold entire file
   byte[] buf = new byte[fileSize];

   // reads all bytes of file
   int i = 0;
   try {
    while (true) {
     try {
      buf[i++] = fileH.readByte();
     } catch (EOFException e) {
      break;
     }
    }
   } catch (IOException ioErr) {
    System.out.println("ERROR in reading of file" + filename);
   }

   return buf;
  }

  private String getPath() {
   URL url = getClass().getResource(getClass().getName() + ".class");
   String classPath = url.getHost() + url.getFile();
   int pos = classPath.lastIndexOf("/");
   return classPath.substring(0, pos + 1);
  }

  public void createMmsFile(byte[] output, String filename) {
   try {
    String path = getPath();
    File f = new File(path + filename);
    FileOutputStream out = new FileOutputStream(f);

    out.write(output);
    out.close();
   } catch (Exception e) {
    System.out.println(e.getMessage());
   }
  }

  public static void main(String[] args) {
   SampleMMSCreation oa = new SampleMMSCreation();
  }

 }

 --------------------------------------------------------------------------

 3> 编译运行JAVA程序即可生成MMS文件,需要注意淘汰文件的路径与CLASS文件一致.

三,总结

 虽然两种方式都能生成MMS文件,但下发到手机手第一种方式的能正常打开,第二种方式则提示破损信息.

 编程方式实现的MMS创建需要注意很多的细节,比如setContentId是否需要加上<>,还有包里面一个类需要修改成UTF-8编码的问题.

 因为第二种方式只有JAR,反编译后能看到JAVA源代码,但未再作更深的研究,希望研究透了的网友能将程序发一份到我的邮箱:lmx88@163.com

四,参考资料

 Sending MMS Notifications and Content  (http://www.ihub.com/MMS%20Messages.htm)

   How To Create MMS Services v4_0

 GettingStartedWithMMSv1_1

 open mobile alliance (开发移动联盟)  


 
NowSMS环境搭建 NowSMS工具用于手机发送信息的测试,本文图文并茂介绍如何搭建NowSMS测试环境,方便新手快速搭建手机测试环境。 立即下载

相关推荐

彩信smil经典教程

不是经典我不发! 整体上面, SMIL就好像一场电影摄制当中的导演, 摄像以及布景, 完成对于整个演示过程当中素材的整理, 剪接和渲染工作, 将”死”的各类材料组合成一场”活”剧.

使用NOKIA MMS LIBRARY发送中国移动彩信

Nokia MMS Library是一个开放源代码的Java MMS开发包,里面包含了源码、文档、示例程序等,很容易就能学会。下面是用这个包发送彩信的方法:1、电脑通过GPRS/EDGE MODEM或手机连接移动梦网,注意,必须是移动梦网(CMWAP),不是互联网(CMNET),如果手动拨号,一般是拨*99***1#或*99***2#,拨通之后打开命令行窗口,telnet 10.0.0.172 8

xujunjie的专栏 1956

彩信制作之SMIL规范

该文档说明了在MMS中消息的组装方式。主要介绍了SMIL方式的组装消息,并简单介绍了SMIL语言。 本文档主要从下面几个方面进行介绍:  MM的组装方式  SMIL基础知识  混合格式组装举例  关联格式组装举例

java mas,java 移动MAS的DB接口实现彩信发送

/*** 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。* @param filePath彩信文件(.smil)的路径*/public String readFileByBytes(String filePath){String content="";File file = new File(filePath);ByteArrayOutputStream out = new...

weixin_31749207的博客 297

彩信文件测试

项目中sip的mms设计验证,主要是测试彩信协议和sip协议,

初学制作彩信MMS7的一个实例

这是初学制作彩信MMS7的一个实例,通过它可以学会做MM7的彩信包。

android 彩信mms文件生成,如果生成彩信mms文件

下面教大家如何快速制作彩信mms文件,首先安装NowMMS软件,这个是国外的一个mms、mms模拟平台,其中有一个软件为mmscomp.exe,使用该软件,就可以快速生成彩信文件了,主要分为下面几步:第一步:制作hdr描述文件,其格式如下:Message-type: m-retrieve-confTransaction-id: 45adb06dMMS-version: 1.0From: 8888/...

weixin_42503223的博客 621

深度学习batch、batch_size、epoch、iteration以及小样本中episode、support set、query set关系

训练整个数据集是epoch、把数据集分为多少小块就是batch,每个小块(batch)多少个数据就是batch_size,整个数据集需要训练多少轮是iteration

qq_42740834的博客 1610

android+彩信mms文件生成,如果生成彩信mms文件

下面教大家如何快速制作彩信mms文件,首先安装NowMMS软件,这个是国外的一个mms、mms模拟平台,其中有一个软件为mmscomp.exe,使用该软件,就可以快速生成彩信文件了,主要分为下面几步:第一步:制作hdr描述文件,其格式如下:Message-type: m-retrieve-confTransaction-id: 45adb06dMMS-version: 1.0From: 8888/...

weixin_36184985的博客 520

群晖NAS变身私有Git服务器:DS218+部署与TortoiseGit客户端实战指南

本文详细介绍了如何将群晖NAS(如DS218+)变身为私有Git服务器,并配置TortoiseGit客户端实现高效代码管理。通过硬件检查、系统更新、Git Server套件安装及权限配置等步骤,帮助开发者在局域网内搭建安全、高速的代码托管环境,特别适合小团队协作。

weixin_29252171的博客 223

华为od 面试八股文_操作系统_01_含答案

华为od 面试八股文_操作系统_01_含答案

MISAYAONE的博客 3269

制作彩信mms文件smil的Demo(转载)

下面给出了一个MMS消息的SMIL示例: &lt;smil&gt; &lt;head&gt;            &lt;meta name="title" content="vacation photos" /&gt;            &lt;meta name="author" content="Danny Wyatt&qu

manok的专栏 767

智能车图像处理24-进阶篇16--三叉路口的判断

这篇文章主要讲述图像处理中如何判断三叉路口并进行补线操作。

taiyuezyh的博客 1万+

制作彩信mms文件smil的Demo(转载)_manok_新浪博客

下面给出了一个MMS消息的SMIL示例: <smil> <head> <meta name="title" content="vacation photos" /> <meta name="author" content="Danny Wyatt" /> ...

manok的专栏 238

cesium加载geotiff的 四种方法

本文介绍了在Cesium中加载GeoTIFF数据的两种主要方法。首先解析了核心前置知识,包括坐标系匹配、数据类型区分和性能优化。方法1详细演示了如何将RGB影像GeoTIFF转换为Cesium影像图层,包含从数据解析到Canvas转换的完整代码流程。方法2则针对高程数据(DEM)处理,展示了前端直接解析构建地形网格的方案。文章提供了完整的代码示例和关键实现要点,适用于卫星影像、专题图和数字高程模型等多种GeoTIFF数据类型在三维场景中的可视化需求。

大剑师兰特的GIS世界 392

【OpenClaw从入门到精通】零基础入门——OpenClaw核心概念快速理解(2026入门版)

OpenClaw是一个强大的AI代理框架,旨在构建智能化的自动化任务处理系统。随着人工智能技术的快速发展,OpenClaw为开发者和企业提供了一个完整的解决方案,用于创建能够理解、学习和执行复杂任务的智能体。本文将带领零基础的读者快速理解OpenClaw的核心概念,从基础架构到实际应用,为后续深入学习奠定坚实基础。通过本文的学习,你将掌握OpenClaw的基本原理、核心组件和快速上手方法。

一键难忘的博客 324

mm7开发--从mime转彩信的问题

最近在做中国移动的彩信,要求根据mime生成一个彩信,再利用mm7api将彩信发送出去。 解析mime的过程真是痛苦,有人知道彩信的mime长啥样不?比如:mixed型的彩信的mime啥样?related型的彩信长啥样? 还有,解析mime中文件的方法也很痛苦,有人做过类似的不?指点一下,谢谢!...

hbcui1984的专栏 352

YOLOv改进 | YOLOv11更换主干Backbone之MobileNetV2(轻量化主干网络结构--高效轻量移动模型)

本文提出将YOLOv11的主干网络替换为轻量化的MobileNetV2,以提升模型在移动端设备的部署效率。MobileNetV2通过倒残差结构和线性瓶颈层,显著减少了计算量和参数量(降至1M~3M),同时保持多尺度特征提取能力。实验表明,改进后的模型在移动设备上可实现20-30 FPS的实时检测,适用于手机APP、无人机和工业监控等场景。核心代码展示了倒残差块的实现,通过深度可分离卷积和通道扩展/压缩实现高效特征提取。

走向CTO的路上... 1460

彩信MMS

彩信,英文名是MMS,它是Multimedia Messaging Service的缩写,意为多媒体信息服务,通常又称为彩信。它最大的特色就是支持多媒体功能,能够传递功能全面的内容和信息,这些信息包括文字、图像、声音、数据等各种多媒体格式的信息。 彩信与原有的普通短信比较,除基本的文字信息以外,更配有丰富的彩色图片、声音、动画、震动等多媒体的内容,图文并貌,生动直观 彩信是一种全新

hailongge的专栏 1518

双目摄像头全景解析:从几何光学到深度智能

双目视觉系统基于仿生学原理,通过水平排列的双摄像头模拟人眼视差机制实现三维感知。其核心是通过标定、校正、匹配等算法流程,将视差转换为深度信息,最终生成三维点云。该系统在自动驾驶、机器人导航、工业检测等领域有广泛应用,但面临弱纹理、重复图案等挑战。未来发展趋势包括与事件相机、深度学习等技术的融合,进一步提升精度和动态性能。

reset2021的博客 120

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

MMS彩信是怎么炼成地(一)

 一、概述  MMS彩信大家都看到过,或者都编辑过。在这里,利用一系列的文章来说明彩信的编辑、发送和接收的过程。首先这里,简单描述一下彩信的编辑过程。这是彩信的第一步。二、MMS的表述(presentation)语言——SMIL概述MMS由一系列类似于“power point style”类型的slide组成,由这些slide来组织各种格式的文本、音频、视频信息。这些我们在发送

技术收藏 1448

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

用Now SMS/MMS 发送中国移动彩信

Now SMS/MMS是一个强大的短信/彩信发送服务器,它内置了彩信中心,在某些运营商的网络内可以通过普通的短信猫发送彩信,而不需要使用支持GPRS的短信猫,也就是说系统本身就具有了运营商的彩信中心的功能。然而,在中国移动的网络内是不能实现这种方式发送彩信的,必须通过移动梦网的彩信中心转发。彩信的发送其实是两个过程:1、向目标手机发送一条普通的提醒短信,其中包含了发送者号码

googoo3的专栏 2498

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Android-MMS中彩信附件的格式及分析

一、概述 MMS彩信大家都看到过,或者都编辑过。在这里,利用一系列的文章来说明彩信的编辑、发送和接收的过程。首先这里,简单描述一下彩信的编辑过程。这是彩信的第一步。 二、MMS的表述(presentation)语言——SMIL概述 MMS由一系列类似于“power poin

漂流瓶の海岸 2624

SIM900发送MMS彩信的流程

这是一篇介绍SIM900发送MMS彩信的详细流程,具体请参考SIMCom公司标准文档“SIM900_MMS_AT Command Manual_V1.01.pdf”。

weixin_42550185的博客 804
上一篇: M-notification 结构详细分析
下一篇: 实现Java动态类载入机制
xiaojunjava
博客等级 码龄21年 7粉丝 28原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值