Linux下自动发送邮件程序

    技术2024-04-15  14

        近期由于项目需要,在学校的实验室里跑实验,自己呆在寝室里,实验需要跑好几天,每次去实验室看都很不方便,于是想做个一个小程序,等实验结果出来后自动发送到邮箱,其实linux本身就有mail命令可以发送,孤陋寡闻,等编完程序之后才知道,不过也算是个锻炼。

        该程序的开发环境是:ubuntu10.04(其实真实运行环境是在arch linux下),anjuta,g++4.4.3。

        自动发送邮件的本质其实就是socket交互,发送一系列验证信息、邮件信息等。流程大致如下:

        1. 初始化socket,包括设置邮件服务器地址和端口;

        2. 连接至邮件服务器,获取欢迎信息;

        3. 发送验证消息,包括EHLO、AUTH LOGIN、用户名和密码等,要注意的是,用户名和密码必须经过base64编码,这个linux系统本身就带了这个工具;

        4. 发送标题和正文,需要注意编码。

        整个过程中需要注意的是宽字符与ASCII码之间的转换,因为诸如邮件内容可能是宽字符的,而socket函数,比如send之类的所用的buffer则是char 的指针或数组。

        这个程序是从名为email.conf配置文件中读取配置信息,具体的配置信息如下:

        dst=xxx@xxx.com

        src=yyy@yyy.com

        svr=smtp.xxx.com

        prt=25

        psd=123456789

        tit=邮件标题

        dat=这是linux测试邮件。

     

       例如A要给B发邮件,那么"dst="跟的是B的邮箱地址,即目标邮箱;"src="跟的是A的地址,即发送者的地址;"psd="是A的邮箱密码;"svr="和"prt="分别是邮件发送服务器和端口,例如:smtp.163.com和25号端口;"til="是标题;"dat="是正文。请注意,上述提到的前缀,如"dst=","prt="等是不可更改的,也不要有空格,后面的内容按需填充。

        邮件的发送信息最终都会记录在info.log文件里。

        邮件发送的功能都集中在CAutoMail这个类里,方便集成至其他应用。

     

        具体源代码参看链接,顺便说一句,该死的什么时候才能开通附件上传功能?

        http://d.download.csdn.net/down/3005870/redeg

     

    最新回复(0)