c编程邮件传输

来源:互联网 发布:毛概网络课程答案 编辑:程序博客网 时间:2024/05/18 18:17

发送邮件需要使用STMP协议,注意SMTP协议的每条指令都是以“\r\n”作为结束标志,所以必须在每一条要发送的指令后加上“\r\n”。


我们先以发送本地的IP地址为例。


要获得本地地址信息,要用到两个函数,【gethostname】和【gethostbyname】,前者获得本机的名称,

是个字符串,后者根据其获得本机的地址信息,返回值是一个指向hostent结构的指针,这个截个图具体定义:

struct hostent

{

char FAR * h_name;

char FAR *FAR *h_aliases;

short h_addrtype;

short h_length;

char FAR *FAR * h_addr__list;//IP地址

}

我们获得的IP信息就在h_addr_list中,但一台机器可能有很多的IP地址,我们要将其记录下来,使用一个循环,,并且

调用【inet_ntoa】函数将其转化成我们习惯的点分字符串格式的IP地址,如192.168.1.1.这样就获得了IP。


下面我们根据STMP协议的规定,发送邮件,以qq邮箱作为发送邮箱,


第一,配置参数。必须和服务器简历链接,先得到服务器的地址,调用【gethostbyname】,将smtp.qq.com作为参数,保存返回的hostent结构的地址

,用他的h_addr_list[0]来初始化sockaddr_in结构的sin_addr.S_un.S_addr成员,端口写成25,这是邮件服务标准端口。

第二,服务器链接。配置好参数后进行【connect】链接,链接上后就使用SMTP来通信了,要注意SMTP协议一发一收的原则。

链接上腾讯的邮箱服务器后,先接受服务器的反馈信息,然后就是发送邮件用户名来验证,(注意你必须要有一个自己的邮箱)。首先发送“AUTH LOGIN\r\n",接收后发送用户名(机邮箱地址@前面的部分),在发送密码,此时服务器返回是否验证成功的信息,若成功则返回代码为235的信息,否则返回535,注意有可能由于服务器的繁忙导致验证失败,那就要从头链接,还有就是用户名和密码要采用base64编码。

第三,邮件发送。邮件发送也有一定的格式,首先发件人,“发件人:<用户名:@qq.co>\r\n",(其实也可以都不写)。其次收件人”RCPT TO: <目的邮箱>",

要发送给几个人,就发送几个"TCPT TO:<目的邮箱>"(这个是必写的不然会找不到目的邮箱),然后“DATA\r\n" 表示要发送具体数据了,数据格式为:邮件头+邮件体


原创粉丝点击