smtp_client_example.c 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /*************************************************
  2. Copyright (c) 2019
  3. All rights reserved.
  4. File name: smtp_client_example.c
  5. Description: smtp发送邮件示例邮件
  6. History:
  7. 1. Version:
  8. Date: 2019-10-14
  9. Author: wangjunjie
  10. Modify:
  11. *************************************************/
  12. #include "smtp_client.h"
  13. #include "rtthread.h"
  14. //若使用TLS加密则需要更大的堆栈空间
  15. #ifdef SMTP_CLIENT_USING_TLS
  16. #define SMTP_CLIENT_THREAD_STACK_SIZE 4096
  17. #else
  18. #define SMTP_CLIENT_THREAD_STACK_SIZE 2048
  19. #endif
  20. /*
  21. *邮件信息相关宏定义
  22. */
  23. //smtp 服务器域名
  24. #define SMTP_SERVER_ADDR "smtp.qq.com"
  25. //smtp 服务器端口号
  26. #define SMTP_SERVER_PORT "25"
  27. //smtp 登录用户名
  28. #define SMTP_USERNAME ""
  29. //smtp 登录密码(或凭证)
  30. #define SMTP_PASSWORD ""
  31. //smtp 邮件发送方(必须为登录用户名)
  32. #define SMTP_MAIL_FROM SMTP_USERNAME
  33. //smtp 邮件接收方
  34. #define SMTP_RCPT_TO ""
  35. //邮件主题
  36. #define SMTP_SUBJECT "SMTP TEST"
  37. //邮件内容
  38. char *content = "THIS IS SMTP TEST\r\n"
  39. "HELLO SMTP\r\n"
  40. "--------------------------------------\r\n"
  41. "based on ---> RT-Thread\r\n"
  42. "based on ---> SMTP_CLIENT\r\n";
  43. void smtp_thread(void *param)
  44. {
  45. //手动延时等待网络初始化成功
  46. rt_thread_delay(10000);
  47. //初始化smtp客户端
  48. smtp_client_init();
  49. //设置服务器地址
  50. smtp_set_server_addr(SMTP_SERVER_ADDR, ADDRESS_TYPE_DOMAIN, SMTP_SERVER_PORT);
  51. //设置服务器认证信息
  52. smtp_set_auth(SMTP_USERNAME, SMTP_PASSWORD);
  53. //发送邮件
  54. rt_kprintf("\r\n[smtp]: O > start to send mail\r\n");
  55. if (smtp_send_mail(SMTP_MAIL_FROM, SMTP_RCPT_TO, SMTP_SUBJECT, content) == 0)
  56. {
  57. //发送成功
  58. rt_kprintf("\r\n[smtp]: O > send mail success!\r\n");
  59. }
  60. else
  61. {
  62. //发送失败
  63. rt_kprintf("\r\n[smtp]: X > send mail fail!\r\n");
  64. }
  65. }
  66. int smtp_thread_entry(void)
  67. {
  68. rt_thread_t smtp_client_tid;
  69. //创建邮件发送线程(如果选择在主函数中直接调用邮件发送函数,需要注意主函数堆栈大小,必要时调大)
  70. smtp_client_tid = rt_thread_create("smtp", smtp_thread, RT_NULL, SMTP_CLIENT_THREAD_STACK_SIZE, 20, 5);
  71. if (smtp_client_tid != RT_NULL)
  72. {
  73. rt_thread_startup(smtp_client_tid);
  74. }
  75. return RT_EOK;
  76. }
  77. INIT_APP_EXPORT(smtp_thread_entry);