0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于嵌入式操作系统和开发工具实现电子邮件系统的设计

电子设计 来源:微计算机信息 作者:臧佳锋,戴月明 2020-09-23 17:24 次阅读

从1996年的Windows CE 1.0 到最新的Windows CE.Net, WINCE 已有8年历史。Windows CE设计简单灵活,可在各种小型嵌入式系统中使用,且其功能强大,在最新一代的高性能工业和家用设备中也得到了充分使用。Microsoft eMbedded Visual Tools是微软公司专为WINCE设备开发的一套开发环境,功能强大,开发方便快捷。二者的结合为实现嵌入式电子邮件系统提供了绝佳的开发环境。

本嵌入式电子邮件系统,即是以Windows CE为开发平台,结合Embedded Visual Basic 3.0开发工具设计实现的。最后采用Microsoft POCKET PC2002 for Windows SDK工具完成系统的测试。

1 移动设备邮件系统的工作原理

目前网络上的电子邮件传送有点如同日常信件中的普通信件发送,日常生活中人们首先将邮件交给邮局,邮局再按照信封上的地址投递,最后将邮件发到收信的人信箱里,收信人只要凭借他的信箱钥匙就可以拿到信件。同样的一封电子邮件从用户手中发出,首先有一个程序把这封邮件发送到SMTP服务器(发送邮件的服务器)上,再由服务器负责将邮件传递到目的信箱。然后需要一个程序接受信箱的邮件,当然也不是只要随便有一个程序就可以的,还需要帐号(如同收信人姓名)与口令(如同信箱钥匙)。所以很明显,发送邮件至少需要4个处理不同任务,有不同功能的程序:发送邮件到服务器的程序,即发送邮件客户端程序;在网络上传送邮件到对方信箱的程序,即SMTP服务器程序;接受邮件并存贮给用户提取的服务器程序,即POP3服务器程序;从POP3服务器上收取邮件的程序,即接受邮件客户端程序。

收发电子邮件依靠一套标准的会话协议,其中最为著名现在最常用的有:SMTP协议,该协议规定了与SMTP服务器进行对话的一系列命令与过程标准;POP3协议,该协议规定了与POP3服务器进行对话的一系列命令与过程标准。还有IMAP4协议,类似POP3的邮件接收协议。

1.1 SMTP协议

SMTP(Simple Mail Transfer Protocol)又叫做简单邮件传输协议。它主要对如何将电子邮件从发送方地址传送到接收方,也即是对传输的规则做了规定。SMTP协议的通信模型并不复杂,主要工作集中在发送SMTP和接收SMTP上:首先针对用户发出的邮件请求,由发送SMTP建立一条连接到接收SMTP的双工通讯链路,发送SMTP负责向接收SMTP发送SMTP命令,而接收SMTP则负责接收并反馈应答。可大致用下页的SMTP通讯模型示意图来表示:

基于嵌入式操作系统和开发工具实现电子邮件系统的设计

图 1 SMTP 通讯模型示意图

1.2 POP3协议

POP3(Post Office Protocol Version 3)是整个电子邮件系统的基本协议之一。POP3适用于C/S结构的脱机模型的电子邮件协议。 初始时,服务器通过侦听TCP端口110开始POP3服务,当客户主机需要使用服务时,它将与服务器主机建立TCP连接。当连接建立后,POP3发送确认消息,客户和POP3服务器相互(分别)交换命令和响应。这一过程一直要持续到连接终止。

2 系统设计

该邮件系统由两个客户端程序组成,SMTP MAILER实现邮件和附件的发送,POP3 MAIL CHECKER用于登陆邮件服务器接受原始的邮件信息

2.1 邮件发送端设计与实现

2.1.1发送端工作流程

下图是邮件发送流程图

2.1.2具体实现

发送邮件的功能主要由eMbedded Visual Basic下的WINSOCK控件实现WINSOCK即Windows Socket,是微软公司对Socket编程接口的集成。WINSOCK使用IP协议,同时支持TCP与UDP协议,在收发邮件这类基本网络数据通信的前提下,WINSOCK控件是最好的选择。

以A—H表示邮件发送的各部分设计:

A 在这个邮件程序中,首先要连接SMTP的邮件服务因此在cmdSend_Click()事件中最先实施的是Wsock.RemoteHost = ServerIp连接设定的服务器主机

Wsock.RemotePort = ServerPort 设定默认的端口。

B 然后开始构造邮件格式,定义字符串m_Date为发送日期,字符串mData为邮件头。语句m_Date = FormatDateTime(Date, [vbShortDate]) & “, ” & FormatDateTime(Date, [vbLongDate]) & “ ” & FormatDateTime(Time, [vbLongTime]) & “” & “ -0600” 定义了邮件的发送日期。

构造邮件标题 mData = “From:” & Chr(32) & strSendname & vbCrLf & _

“Date:” & Chr(32) & m_Date & vbCrLf & _

“X-Mailer: Harold Smtp Mailer V1.0” & vbCrLf & _

“To:” & Chr(32) & strReceiveName & vbCrLf & _

Subject:” & Chr(32) & strSubject & vbCrLf

这个典型的邮件标题包含了:发件人,发件日期,收件人,主题以及发送邮件的程序名称。

C 当邮件程序连上服务器后,进如下一步打开邮件对话,利用WINSOCK控件发送对话信息:Wsock.SendData “HELO” & “ ” & Wsock.LocalHostName & vbCrLf

如果SMTP服务器没有返回“250” 应答码,则提示“Unable to establish transaction”。

D 由于现在的邮件服务器多采用ESMTP协议,因此需要客户端程序发送用户名与密码等认证信息,故在打开对话过后便进入“Authentication“过程,:

Wsock.SendData “AUTH LOGIN” & vbCrLf

If Not WaitForResponse(“334”, 10) Then

txtMsg.Text = “Unable to Connect with ESMTP server.。..。.”

Wsock.SendData Encode(User) & vbCrLf

Wsock.SendData Encode(Pass) & vbCrLf

在这里调用了自编的Encode函数并发送了经过BASE64编码的用户名与密码信息。

E 接着是发送发送方与接受方的地址:

Wsock.SendData “MAIL FROM:” & “ ” & strFromMail & vbCrLf ‘发送方

Wsock.SendData “RCPT TO:” & “ ” & strToMail & vbCrLf ‘接受方

F 下一步是发送消息体(针对不含附件的RFC822邮件):

Wsock.SendData “DATA” & vbCrLf ‘发送消息体

Wsock.SendData mData & vbCrLf ‘发送邮件标题

Wsock.SendData strContent & vbCrLf ‘发送正文

Wsock.SendData “。” & vbCrLf ‘发送结束符

G 在发送邮件时做了附件的判断:

If Combo1.List 》 0 Then 如果附件列表非空则转入MIME邮件的构造。MIME邮件的标题部分与RFC822相同,但要扩充一些内容

Wsock.SendData “MIME-Version:1.0” & vbCrLf

Wsock.SendData “Content-Type:multipart/mixed;” & vbCrLf

Wsock.SendData “ boundary = Unique-Boundary” & vbCrLf & vbCrLf

Wsock.SendData “[ Random garbage here ]” & vbCrLf & vbCrLf

Wsock.SendData vbCrLf & “--Unique-Boundary” & vbCrLf

Wsock.SendData “Content-type: text/plain;charset=US-ASCII” & vbCrLf & vbCrLf

Wsock.SendData strContent & vbCrLf & vbCrLf

Wsock.SendData “--Unique=Boundary” & vbCrLf

Wsock.SendData “Content-Type: multipart/parallel;boundary = Unique-Boundary-2” & vbCrLf & vbCrLf

Wsock.SendData “--Unique=Boundary -2” & vbCrLf

Wsock.SendData “Content-Type: application/octest-stream;” & vbCrLf

Wsock.SendData “name =” & strAttachname & vbCrLf

Wsock.SendData “Content-Transfer-Encoding:base64” & vbCrLf

Wsock.SendData “Content-Disposition:inline;” & vbCrLf

这里附件也通过编码加入了邮件中。

H 最后结束邮件对话,返回信息:

Wsock.SendData “QUIT” & vbCrLf

txtMsg.Text = txtMsg.Text & “Mail send success!”

2.2 邮件接受端的设计与实现

2.2.1 接收端工作流程

图3 接收端工作流程

2.2.2 功能实现

POP3的通信与SMTP一样,也可以通过Winsock来实现。该POP3邮件程序的过程如同POP3对话一样。POP3服务器的应答要比SMTP简单许多,其操作的应答状态码只有两个“+OK”表示成功,“+ERR”表示失败。具体细节不再赘述。

3 软件模块功能测试

为了评估电子邮件系统的两个客户端程序的实际可用性,必须对其系统的各个模块进行测试。本测试所采用的是微软开发的POCKET PC2002 for Windows SDK程序包。

3.1 邮件发送客户端的测试

为了测试邮件发送系统的功效,可在已配置网络的模拟器上载入邮件发送程序,使其工作在虚拟机的操作系统中。

配置好SMTP服务器资料与ESMTP所需的认证信息后,发送一封简单的RFC822电子邮件到对方信箱中,成功发送。同样的方式,测试发送MIME邮件,得到如下测试结果:

图4 发送端测试结果

3.2 邮件接收客户端的测试

同邮件发送客户端一样,采用同样的网络设置,载入程序,登入网络。先选择POP3的邮件服务器地址,设定用户信息与密码,确认后获得基础的认证,并传回邮箱中信件的数量与大小统计。经测试收到了预期的效果。

以上两个程序的测试都是在网络环境下进行的,如果网络连接不正常或其他原因导致邮件的收发不成功,在程序设计的出错处理中已经有所考虑。

4 结语

与网络结合已成为所有信息产品的发展趋势,随着PDA等嵌入式系统的日益普及以及无线互联技术(802.11B)的发展,利用PDA实现掌上电脑与台式机间相互传递电子邮件,已经成为一种结合时尚和便利于一身的通信手段。作者设计实现的基于Windows CE的嵌入式电子邮件系统,为实现移动设备之间邮件传输作了良好的尝试。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5068

    文章

    19013

    浏览量

    303097
  • 服务器
    +关注

    关注

    12

    文章

    9015

    浏览量

    85169
  • 操作系统
    +关注

    关注

    37

    文章

    6734

    浏览量

    123184
收藏 人收藏

    评论

    相关推荐

    主流嵌入式操作系统有哪些?

    、Android、FreeRTOS。WINDOWS CE是微软开发的一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作系统
    发表于 07-10 19:02

    求一款基于Windows CE的嵌入式电子邮件系统设计

    移动设备邮件系统的工作原理基于Windows CE的嵌入式电子邮件系统设计
    发表于 04-25 07:04

    嵌入式Linux操作系统的使用

    这是第一次接触嵌入式设计课程,课程设计内容目标如下:1、了解嵌入式技术;2、掌握嵌入式Linux操作系统的使用;(命令)3、掌握嵌入式Lin
    发表于 11-08 06:43

    嵌入式系统应用开发工具的主要目的是什么

    嵌入式系统应用开发工具的主要目的:提高开发质量,缩短开发周期,降低开发成本。按照软硬件技术的复
    发表于 11-09 08:44

    嵌入式linux、arm嵌入式操作系统的相关资料分享

    开发工具链异常处理linux内核裁剪与移植GCC命令基本用法系统调用与中断进程间通信接口中断驱动程序引导程序C语言与汇编语言嵌入式操作系统嵌入式
    发表于 12-27 07:35

    嵌入式操作系统UCOSII移植笔记

    是STM32F103ZET6开发工具是Keil5 MDK为什么要进行操作系统移植?一般的嵌入式程序在51上运行的时候很少用到操作系统,不过也有用的(很少不抬杠),只有对时间要求比较高的
    发表于 12-27 06:35

    基于数字签名的安全电子邮件系统的研究

    本文以电子邮件系统为研究背景,在数字签名技术的基础上,提出了一种基于数字签名技术的安全电子邮件系统的设计方案,并给出了发送电子邮件模块和接收电子邮件模块的详细
    发表于 08-04 08:07 27次下载

    基于Windows CE的嵌入式电子邮件系统设计与实现

    本文分析了SMTP(ESMTP)/POP3 协议,MIME 和RFC822 的邮件格式和实现机理,以Windows CE 为开发平台,采用eMbedded Visual Tools 开发工具
    发表于 08-13 09:43 20次下载

    实时操作系统用于嵌入式应用系统的设计

    概述了嵌入式系统开发工具实时操作系统的特点和核心内容;分析了在利用实时操作系统进行嵌入式
    发表于 10-10 15:23 42次下载
    实时<b class='flag-5'>操作系统</b>用于<b class='flag-5'>嵌入式</b>应用<b class='flag-5'>系统</b>的设计

    基于Windows CE的嵌入式电子邮件系统设计与实现

    本文分析了SMTP(ESMTP)/POP3协议MIME和RFC822的邮件实现机理以Windows CE为开发平台采用eM bedded Visual Tools
    发表于 04-18 11:28 5次下载

    嵌入式操作系统FreeRTOS的原理实现

    嵌入式操作系统FreeRTOS的原理实现(嵌入式开发工具使用实验报告)-嵌入式操作系统FreeR
    发表于 07-30 12:03 31次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>操作系统</b>FreeRTOS的原理<b class='flag-5'>实现</b>

    嵌入式Linux_C语言开发工具

    C语言开发工具开发工具操作系统之间是相互促进的、相互发展的,操作系统离不开软件开发的支持,软件开发工具
    发表于 11-01 16:57 13次下载
    <b class='flag-5'>嵌入式</b>Linux_C语言<b class='flag-5'>开发工具</b>

    课堂笔记之嵌入式Linux操作系统

    嵌入式操作系统开发工具系统应用开发(&GUI)、系统移植、驱动、内核。4、所具备的知识体系
    发表于 11-02 09:51 15次下载
    课堂笔记之<b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>操作系统</b>

    慕课嵌入式系统(第六章.嵌入式开发工具)

    慕课电子科技大学.嵌入式系统.第六章.嵌入式软件系统概述.嵌入式开发工具0 目录6
    发表于 11-03 12:21 10次下载
    慕课<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>(第六章.<b class='flag-5'>嵌入式开发工具</b>)

    嵌入式操作系统

    2.2 实时操作系统的评价指标三、基于Linux的嵌入式操作系统3.1 ARMLinux简介3.2 uCLinux简介四、嵌入式操作系统设计
    发表于 11-03 18:36 46次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>操作系统</b>