使用SMTP 和POP3 协议实现收发邮件(C C++)_pop3 curl ssl c+(1)

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

  1. 15 Sock::~Sock()
  2. 16 {
  3. 17     close(sock);
  4. 18 }
  5. 19 bool Sock::Connect(const char *host_id, const int &port)
  6. 20 {
  7. 21     server.sin_family = AF_INET;
  8. 22     hp = gethostbyname(host_id);
  9. 23     if(hp == (struct hostent *) 0)
  10. 24     {
  11. 25         std::cerr << “服务器地址获取失败!” << std::endl;
  12. 26         return false;
  13. 27     }
  14. 28     memcpy((char *)&server.sin_addr,
  15. 29             (char *)hp->h_addr, hp->h_length);
  16. 30     server.sin_port = htons(port);
  17. 31     if(connect(sock, (sockaddr *) &server, sizeof server) == -1)
  18. 32     {
  19. 33         std::cerr << “连接服务器失败!” << std::endl;
  20. 34         return false;
  21. 35     }
  22. 36     else
  23. 37         return true;
  24. 38 }
  25. void Sock::send_socket(const char *s)
  26. 40 {
  27. 41     send(sock, s, strlen(s), 0);
  28. 42 }
  29. 43 int Sock::recv_socket()
  30. 44 {
  31. 45     memset(recvbuf, 0,BUFSIZ);
  32. 46     return recv(sock, recvbuf, BUFSIZ, 0);
  33. 47 }
  34. 48 const char * Sock::get_recvbuf()
  35. 49 {
  36. 50     return recvbuf;
  37. 51 }

下面是用SMTP协议发送邮件,格式就如代码所示。了解下SMTP协议,依葫芦画瓢了。

  1. 1 #include “sock.h”
  2. 2 #include
  3. 3
  4. 4 int main()
  5. 5 {
  6. 6     Sock sock;
  7. 7     const char *host_id = “smtp.126.com”;
  8. 8     int port = 25;//smtp协议专用端口
  9. 9     char wkstr[100] = “hello,how are you?”;//邮件内容
  10. 10     if(sock.Connect(host_id, port) == false)
  11. 11         return 1;
  12. 12     sock.recv_socket();
  13. 13     std::cout << “Client : connected! \nServer :”
  14. 14         << sock.get_recvbuf() << std::endl;
  15. 15
  16. 16    /* EHLO指令是必须首先发的,相当于和服务器说hello */
  17. 17     sock.send_socket(“EHLO **********\r\n”);//邮箱用户名
  18. 18     sock.recv_socket();
  19. 19     std::cout << “Client : send helo \nServer :”
  20. 20         << sock.get_recvbuf() << std::endl;
  21. 21
  22. 22     /*发送 auth login 指令,告诉服务器要登录邮箱*/
  23. 23     sock.send_socket(“auth login\r\n”);
  24. 24     sock.recv_socket();
  25. 25     std::cout << “Client : send auth login \nServer :”
  26. 26         << sock.get_recvbuf() << std::endl;
  27. 27
  28. 28     /*告诉服务器要登录后,接着就是把用户名发过去了.
  29. 29       不过这个用户名是经过了base64编码的,smtp也支持
  30. 30       明文传送,至于具体有什么区别上网上找资料看看就知道了*/
  31. 31     sock.send_socket(“**********”);//经过base64编码后的邮箱用户名
  32. 32     sock.send_socket(“\r\n”);
  33. 33     sock.recv_socket();
  34. 34     std::cout << “Client : send name \nServer :”
  35. 35         << sock.get_recvbuf() << std::endl;
  36. 37    /* 用户名发过去后接着就是用户密码了,当然也是经过base64编码后的*/
  37. 38     sock.send_socket(“base64编码后的密码”);
  38. 39     sock.send_socket(“\r\n”);
  39. 40     sock.recv_socket();
  40. 41     std::cout << “Client : send password \nServer :”
  41. 42         << sock.get_recvbuf() << std::endl;
  42. 43
  43. 44     /*发送 mail from 指令,相当于填写发件人*/
  44. 45     sock.send_socket(“mail from: <”);
  45. 46     sock.send_socket(“yuzhenxiong0823@126.com”);
  46. 47     sock.send_socket(“>”);
  47. 48     sock.send_socket(“\r\n”);
  48. 49     sock.recv_socket();
  49. 50     std::cout << “Client: send mail from \nServer :”
  50. 51         << sock.get_recvbuf() << std::endl;
  51. 52
  52. 53     /*发送 rcpt to 指令,就是填写收件人了 */
  53. 54     sock.send_socket(“rcpt to: <”);
  54. 55     sock.send_socket(“120091241@qq.com”);
  55. 56     sock.send_socket(“>”);
  56. 57     sock.send_socket(“\r\n”);
  57. 58     sock.recv_socket();
  58. 59     std::cout << “Client : send rcpt to \nServer”
  59. 60         << sock.get_recvbuf() << std::endl;
  60. 61
  61. 62     /*发送data,标志着后面开始发送邮件的主题部分*/
  62. 63     sock.send_socket(“data\r\n”);
  63. 64     sock.recv_socket();
  64. 65     std::cout << “Client : send data \nServer :”
  65. 66         << sock.get_recvbuf() << std::endl;
  66. 67     /*发送邮件主体部分,先是邮件主题(subject),后面是邮件内容。
  67. 68      下面就是发送主体的格式*/
  68. 69     sock.send_socket(“subject:”);

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

如果你需要这些资料,可以戳这里获取

  • 29
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值