• Linux下SMTP发送邮件的例子


    C++通过socket套接字,使用smtp协议和pop3协议进行邮件发送和读取。 Smtp协议很简单,在建立socket之后。 依次发送如下消息。 EHLO   服务器地址 AUTH LOGIN USER   邮箱帐号 PASS    邮箱密码      /*邮箱密码是需要base64加密的*/ MAIL FROM:   发件人地址 RCPT TO: 收件人地址 DATA Subject: 主题 From: 发件人 To: 收件人 邮件内容   /*base64编码*/ .              /*符号 "." 独占一行*/ QUIT Socket初始化: sock = socket(AF_INET, SOCK_STREAM, 0); fcntl(sock, F_SETFD, O_NONBLOCK); memset(&server, 0,sizeof(server)); server.sin_family = AF_INET; hp = gethostbyname(serverUrl.c_str()); 每将一行数据发送到socket,就再发送一个回车换行符 "\r\n" 。通知系统执行命令。 在写这个程序的时候,最初是用同步方式。在同步通信下,如果某步骤延时,将导致这个软件一直无法返回。随后改为异步通信,上面代码为异步通信参数设置。 每发送一次命令,就读取服务器响应,超时,将返回。 在linux c++,不熟悉定时器使用,就改为程序里计算运行时间的方式,在write_socket函数里面,判断是否超时,超时则抛出一个TimeoutException异常,由外层程序接受异常,进行处理。 ------------------------------------------------------------------------------------------------------------ POP3 Pop3协议收取邮件和smtp发送邮件类似,但是邮件内容解码比较麻烦,很多邮件还带有附件。 USER   邮箱帐号 PASS    密码 STAT                /*邮箱情况*/ LIST               /*列出邮件编号 及大小*/ RETR   邮件编号     /*第i封邮件内容*/ QUIT Pop3处理附件是对附件进行base64编码,然后放在邮件内容中的,使用特定的分隔符进行分割。获得邮件后,需要解析邮件内容,将里面的附件内容部分,保存为附件文件。 因为使用标准c++ ,所以windows平台下也可以进行同样处理。
  • 相关阅读:
    设计模式之代理模式
    Java面试总结系列之Collections.sort()
    Scala基础
    Win7 电脑设置临时网络,无法加入网络;internet禁止网络共享
    Java面试题系列 提高Java I/O 性能
    电子商务中:B2C、B2B、C2B、C2C、O2O、P2P
    JVM内存格局总结
    Dubbo相关博文整理
    Java面试题汇总(一)
    Java多线程总结
  • 原文地址:https://www.cnblogs.com/adodo1/p/4327164.html
Copyright © 2020-2023  润新知