Linux下自动发送邮件程序

本文介绍了一款在Linux环境下利用socket交互实现自动邮件发送的小程序。该程序通过配置文件读取邮件信息,并能够将发送结果记录到日志文件中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    近期由于项目需要,在学校的实验室里跑实验,自己呆在寝室里,实验需要跑好几天,每次去实验室看都很不方便,于是想做个一个小程序,等实验结果出来后自动发送到邮箱,其实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这个类里,方便集成至其他应用。

 

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

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

 

定时自动发送邮件服务使用说明 该软件运行环境需要.Net 3.5支持,Win7系统上可以直接运行. 主要功能可以定时自动发送邮件,发送程序做成服务形式,用户无需登录, 只要电脑是开启状态,就会自动执行发送邮件. 包含的文件, 1.AutoSendMail.exe --设置程序 2.AutoSendMail_Log.txt --存放日志的文本文件. 可自动生成 3.AutoSendMail_Setting.xml --配置文件 4.AutoSendMailService.exe --服务程序 5.InstallUtil.exe --微软的安装服务必须程序 6.tasks.mdb --Access数据库文件,用于存放邮箱内容. 可更改文件 7.安装服务.bat 8.使用说明.txt 9.卸载服务.bat 安装步骤: 第一步:安装服务 运行“安装服务.bat”文件。(需要管理员权限) 第二步:修改配置文件 修改好配置文件AutoSendMail_Setting.xml。确保Access数据库连接正确,每个任务的发送时点,和邮件信息。 每次修改配置文件必需重新启动服务才生效。 第三步:启动服务 a.从服务管理控制台启动服务,运行services.msc命令打开控制台。 b.通过设置程序启动服务。(需要管理员权限) 如果删除服务,则运行“卸载服务.bat”。 接口定义: 每个任务需要在指定的Access数据库里设置一个视图或表,用于存放邮件信息, 字段格式: 第一字段:ID 自动编号 第二字段:收件人 文本类型 第三字段:抄送人 文本类型 第四字段:主题 文本类型 第五字段:内容 备注类型 第六字段:发送次数 数字类型 备注:程序通过ID查找记录,来更新发送次数的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值