EthernetInterface Libraryを使ったSimpleな SMTP ClientLibraryです. LOGIN認証を追加しました.(2014.4 Update) It is SMTPClient Library which is Simple using EthernetInterface Library.
Dependents: SimpleSMTPClient_HelloWorld USBHost-MSD_Sensors_1 IOT-GPS-SMS IOT_HW_5_websockets ... more
SimpleSMTPClient.h@8:311b1f7cebb7, 2015-12-01 (annotated)
- Committer:
- sunifu
- Date:
- Tue Dec 01 13:45:11 2015 +0000
- Revision:
- 8:311b1f7cebb7
- Parent:
- 7:0847fa2294a0
Update
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sunifu | 0:3ea21ce21fe1 | 1 | /* |
sunifu | 0:3ea21ce21fe1 | 2 | * |
sunifu | 0:3ea21ce21fe1 | 3 | * mbed Simple SMTP Client |
sunifu | 0:3ea21ce21fe1 | 4 | * Copyright (c) 2012 Tadao Iida |
sunifu | 0:3ea21ce21fe1 | 5 | * Released under the MIT License: http://mbed.org/license/mit |
sunifu | 0:3ea21ce21fe1 | 6 | */ |
sunifu | 0:3ea21ce21fe1 | 7 | |
sunifu | 0:3ea21ce21fe1 | 8 | /** @file |
sunifu | 0:3ea21ce21fe1 | 9 | * @brief Simple SMTP Client |
sunifu | 0:3ea21ce21fe1 | 10 | */ |
sunifu | 0:3ea21ce21fe1 | 11 | |
sunifu | 0:3ea21ce21fe1 | 12 | #ifndef SimpleSMTPC_h |
sunifu | 0:3ea21ce21fe1 | 13 | #define SimpleSMTPC_h |
sunifu | 0:3ea21ce21fe1 | 14 | |
sunifu | 0:3ea21ce21fe1 | 15 | #include "EthernetInterface.h" |
sunifu | 0:3ea21ce21fe1 | 16 | |
sunifu | 0:3ea21ce21fe1 | 17 | ///SMTP authentication |
sunifu | 0:3ea21ce21fe1 | 18 | enum SMTPAuth { |
sunifu | 0:3ea21ce21fe1 | 19 | SMTP_AUTH_NONE, ///<No authentication |
sunifu | 7:0847fa2294a0 | 20 | SMTP_AUTH_PLAIN, ///<AUTH PLAIN authentication |
sunifu | 7:0847fa2294a0 | 21 | SMTP_AUTH_LOGIN |
sunifu | 0:3ea21ce21fe1 | 22 | }; |
sunifu | 0:3ea21ce21fe1 | 23 | |
sunifu | 0:3ea21ce21fe1 | 24 | ///SimpleSMTP client results |
sunifu | 0:3ea21ce21fe1 | 25 | enum SMTPResult |
sunifu | 0:3ea21ce21fe1 | 26 | { |
sunifu | 0:3ea21ce21fe1 | 27 | SMTP_AUTH_OK = 235, ///<Authentication successful |
sunifu | 0:3ea21ce21fe1 | 28 | SMTP_OK = 250, ///<Requested mail action okay, completed |
sunifu | 0:3ea21ce21fe1 | 29 | SMTP_INPUT = 354 ///<Start mail input |
sunifu | 0:3ea21ce21fe1 | 30 | }; |
sunifu | 0:3ea21ce21fe1 | 31 | #define DEBUG |
sunifu | 0:3ea21ce21fe1 | 32 | |
sunifu | 0:3ea21ce21fe1 | 33 | #define SMTP_TIMEOUT 15000 // ms |
sunifu | 0:3ea21ce21fe1 | 34 | |
sunifu | 0:3ea21ce21fe1 | 35 | class SimpleSMTPClient |
sunifu | 0:3ea21ce21fe1 | 36 | { |
sunifu | 0:3ea21ce21fe1 | 37 | public: |
sunifu | 0:3ea21ce21fe1 | 38 | /** |
sunifu | 0:3ea21ce21fe1 | 39 | Instantiate the SimpleSMTP client |
sunifu | 0:3ea21ce21fe1 | 40 | */ |
sunifu | 0:3ea21ce21fe1 | 41 | SimpleSMTPClient(); |
sunifu | 0:3ea21ce21fe1 | 42 | |
sunifu | 0:3ea21ce21fe1 | 43 | /** send mail |
sunifu | 0:3ea21ce21fe1 | 44 | * @param host mail server |
sunifu | 0:3ea21ce21fe1 | 45 | * @param data mail body |
sunifu | 0:3ea21ce21fe1 | 46 | * @param user auth username |
sunifu | 0:3ea21ce21fe1 | 47 | * @param pwd auth password |
sunifu | 2:27053679f44b | 48 | * @param domain |
sunifu | 0:3ea21ce21fe1 | 49 | * @param port mail port |
sunifu | 0:3ea21ce21fe1 | 50 | * @param auth SMTP auth |
sunifu | 0:3ea21ce21fe1 | 51 | * @return 0:success, -1:failue |
sunifu | 0:3ea21ce21fe1 | 52 | */ |
sunifu | 2:27053679f44b | 53 | int sendmail (char *host, char *user, char *pwd,char *domain,char *port,SMTPAuth auth); |
sunifu | 0:3ea21ce21fe1 | 54 | |
sunifu | 0:3ea21ce21fe1 | 55 | /** setMessage |
sunifu | 0:3ea21ce21fe1 | 56 | * @param sub Subject <The Subject are less than 64 characters.> |
sunifu | 0:3ea21ce21fe1 | 57 | * @param msg Message |
sunifu | 0:3ea21ce21fe1 | 58 | * @return 0:success, -1:failue |
sunifu | 0:3ea21ce21fe1 | 59 | */ |
sunifu | 0:3ea21ce21fe1 | 60 | int setMessage(char *sub,char *msg); |
sunifu | 0:3ea21ce21fe1 | 61 | |
sunifu | 0:3ea21ce21fe1 | 62 | /** addMessage |
sunifu | 0:3ea21ce21fe1 | 63 | * @param msg Message |
sunifu | 0:3ea21ce21fe1 | 64 | * @return 0:success, -1:failue |
sunifu | 0:3ea21ce21fe1 | 65 | */ |
sunifu | 0:3ea21ce21fe1 | 66 | int addMessage(char *msg); |
sunifu | 0:3ea21ce21fe1 | 67 | |
sunifu | 0:3ea21ce21fe1 | 68 | /** setFromAddress |
sunifu | 0:3ea21ce21fe1 | 69 | * @param from mail address |
sunifu | 0:3ea21ce21fe1 | 70 | * @return character count, -1:failue |
sunifu | 0:3ea21ce21fe1 | 71 | */ |
sunifu | 0:3ea21ce21fe1 | 72 | int setFromAddress(char *from); |
sunifu | 0:3ea21ce21fe1 | 73 | |
sunifu | 0:3ea21ce21fe1 | 74 | /** setToAddress <The ToAddress are less than 128 characters.> |
sunifu | 0:3ea21ce21fe1 | 75 | * @param to mail address |
sunifu | 0:3ea21ce21fe1 | 76 | * @return character count, -1:failue |
sunifu | 0:3ea21ce21fe1 | 77 | */ |
sunifu | 0:3ea21ce21fe1 | 78 | int setToAddress(char *to); |
sunifu | 0:3ea21ce21fe1 | 79 | |
sunifu | 4:7d16b08a1291 | 80 | /** clearMessage |
sunifu | 4:7d16b08a1291 | 81 | * |
sunifu | 4:7d16b08a1291 | 82 | */ |
sunifu | 4:7d16b08a1291 | 83 | void clearMessage(void); |
sunifu | 5:846af4db63c5 | 84 | |
sunifu | 5:846af4db63c5 | 85 | /** msgLength |
sunifu | 5:846af4db63c5 | 86 | * |
sunifu | 5:846af4db63c5 | 87 | */ |
sunifu | 5:846af4db63c5 | 88 | int msgLength(void); |
sunifu | 2:27053679f44b | 89 | |
sunifu | 0:3ea21ce21fe1 | 90 | |
sunifu | 0:3ea21ce21fe1 | 91 | private: |
sunifu | 0:3ea21ce21fe1 | 92 | int base64enc(const char *input, unsigned int length, char *output, int outputlen); |
sunifu | 0:3ea21ce21fe1 | 93 | int receiveMessage(int code); |
sunifu | 0:3ea21ce21fe1 | 94 | char* getFromAddress(void); |
sunifu | 0:3ea21ce21fe1 | 95 | char* getToAddress(void); |
sunifu | 0:3ea21ce21fe1 | 96 | char* getSubject(); |
sunifu | 0:3ea21ce21fe1 | 97 | char* getHeader(); |
sunifu | 0:3ea21ce21fe1 | 98 | char* getMessage(); |
sunifu | 0:3ea21ce21fe1 | 99 | int makeHeader(void); |
sunifu | 0:3ea21ce21fe1 | 100 | |
sunifu | 0:3ea21ce21fe1 | 101 | TCPSocketConnection smtp; |
sunifu | 0:3ea21ce21fe1 | 102 | char header[256]; |
sunifu | 0:3ea21ce21fe1 | 103 | char body[1500]; |
sunifu | 0:3ea21ce21fe1 | 104 | char from[64]; |
sunifu | 0:3ea21ce21fe1 | 105 | char to[128]; |
sunifu | 0:3ea21ce21fe1 | 106 | char subject[64]; |
sunifu | 0:3ea21ce21fe1 | 107 | char message[1244]; |
sunifu | 0:3ea21ce21fe1 | 108 | }; |
sunifu | 0:3ea21ce21fe1 | 109 | |
sunifu | 0:3ea21ce21fe1 | 110 | #endif |