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@0:3ea21ce21fe1, 2012-12-03 (annotated)
- Committer:
- sunifu
- Date:
- Mon Dec 03 09:55:59 2012 +0000
- Revision:
- 0:3ea21ce21fe1
- Child:
- 1:58550f022776
- Child:
- 3:67a97516c315
Ver1.0
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 | 0:3ea21ce21fe1 | 20 | SMTP_AUTH_PLAIN ///<AUTH PLAIN authentication |
sunifu | 0:3ea21ce21fe1 | 21 | }; |
sunifu | 0:3ea21ce21fe1 | 22 | |
sunifu | 0:3ea21ce21fe1 | 23 | ///SimpleSMTP client results |
sunifu | 0:3ea21ce21fe1 | 24 | enum SMTPResult |
sunifu | 0:3ea21ce21fe1 | 25 | { |
sunifu | 0:3ea21ce21fe1 | 26 | SMTP_AUTH_OK = 235, ///<Authentication successful |
sunifu | 0:3ea21ce21fe1 | 27 | SMTP_OK = 250, ///<Requested mail action okay, completed |
sunifu | 0:3ea21ce21fe1 | 28 | SMTP_INPUT = 354 ///<Start mail input |
sunifu | 0:3ea21ce21fe1 | 29 | }; |
sunifu | 0:3ea21ce21fe1 | 30 | #define DEBUG |
sunifu | 0:3ea21ce21fe1 | 31 | |
sunifu | 0:3ea21ce21fe1 | 32 | #define SMTP_TIMEOUT 15000 // ms |
sunifu | 0:3ea21ce21fe1 | 33 | |
sunifu | 0:3ea21ce21fe1 | 34 | class SimpleSMTPClient |
sunifu | 0:3ea21ce21fe1 | 35 | { |
sunifu | 0:3ea21ce21fe1 | 36 | public: |
sunifu | 0:3ea21ce21fe1 | 37 | /** |
sunifu | 0:3ea21ce21fe1 | 38 | Instantiate the SimpleSMTP client |
sunifu | 0:3ea21ce21fe1 | 39 | */ |
sunifu | 0:3ea21ce21fe1 | 40 | SimpleSMTPClient(); |
sunifu | 0:3ea21ce21fe1 | 41 | |
sunifu | 0:3ea21ce21fe1 | 42 | /** send mail |
sunifu | 0:3ea21ce21fe1 | 43 | * @param host mail server |
sunifu | 0:3ea21ce21fe1 | 44 | * @param data mail body |
sunifu | 0:3ea21ce21fe1 | 45 | * @param user auth username |
sunifu | 0:3ea21ce21fe1 | 46 | * @param pwd auth password |
sunifu | 0:3ea21ce21fe1 | 47 | * @param port mail port |
sunifu | 0:3ea21ce21fe1 | 48 | * @param auth SMTP auth |
sunifu | 0:3ea21ce21fe1 | 49 | * @return 0:success, -1:failue |
sunifu | 0:3ea21ce21fe1 | 50 | */ |
sunifu | 0:3ea21ce21fe1 | 51 | int sendmail (char *host, char *user, char *pwd,char *port,SMTPAuth auth); |
sunifu | 0:3ea21ce21fe1 | 52 | |
sunifu | 0:3ea21ce21fe1 | 53 | /** setMessage |
sunifu | 0:3ea21ce21fe1 | 54 | * @param sub Subject <The Subject are less than 64 characters.> |
sunifu | 0:3ea21ce21fe1 | 55 | * @param msg Message |
sunifu | 0:3ea21ce21fe1 | 56 | * @return 0:success, -1:failue |
sunifu | 0:3ea21ce21fe1 | 57 | */ |
sunifu | 0:3ea21ce21fe1 | 58 | int setMessage(char *sub,char *msg); |
sunifu | 0:3ea21ce21fe1 | 59 | |
sunifu | 0:3ea21ce21fe1 | 60 | /** addMessage |
sunifu | 0:3ea21ce21fe1 | 61 | * @param msg Message |
sunifu | 0:3ea21ce21fe1 | 62 | * @return 0:success, -1:failue |
sunifu | 0:3ea21ce21fe1 | 63 | */ |
sunifu | 0:3ea21ce21fe1 | 64 | int addMessage(char *msg); |
sunifu | 0:3ea21ce21fe1 | 65 | |
sunifu | 0:3ea21ce21fe1 | 66 | /** setFromAddress |
sunifu | 0:3ea21ce21fe1 | 67 | * @param from mail address |
sunifu | 0:3ea21ce21fe1 | 68 | * @return character count, -1:failue |
sunifu | 0:3ea21ce21fe1 | 69 | */ |
sunifu | 0:3ea21ce21fe1 | 70 | int setFromAddress(char *from); |
sunifu | 0:3ea21ce21fe1 | 71 | |
sunifu | 0:3ea21ce21fe1 | 72 | /** setToAddress <The ToAddress are less than 128 characters.> |
sunifu | 0:3ea21ce21fe1 | 73 | * @param to mail address |
sunifu | 0:3ea21ce21fe1 | 74 | * @return character count, -1:failue |
sunifu | 0:3ea21ce21fe1 | 75 | */ |
sunifu | 0:3ea21ce21fe1 | 76 | int setToAddress(char *to); |
sunifu | 0:3ea21ce21fe1 | 77 | |
sunifu | 0:3ea21ce21fe1 | 78 | |
sunifu | 0:3ea21ce21fe1 | 79 | |
sunifu | 0:3ea21ce21fe1 | 80 | private: |
sunifu | 0:3ea21ce21fe1 | 81 | int base64enc(const char *input, unsigned int length, char *output, int outputlen); |
sunifu | 0:3ea21ce21fe1 | 82 | int receiveMessage(int code); |
sunifu | 0:3ea21ce21fe1 | 83 | char* getFromAddress(void); |
sunifu | 0:3ea21ce21fe1 | 84 | char* getToAddress(void); |
sunifu | 0:3ea21ce21fe1 | 85 | char* getSubject(); |
sunifu | 0:3ea21ce21fe1 | 86 | char* getHeader(); |
sunifu | 0:3ea21ce21fe1 | 87 | char* getMessage(); |
sunifu | 0:3ea21ce21fe1 | 88 | int makeHeader(void); |
sunifu | 0:3ea21ce21fe1 | 89 | |
sunifu | 0:3ea21ce21fe1 | 90 | TCPSocketConnection smtp; |
sunifu | 0:3ea21ce21fe1 | 91 | char header[256]; |
sunifu | 0:3ea21ce21fe1 | 92 | char body[1500]; |
sunifu | 0:3ea21ce21fe1 | 93 | char from[64]; |
sunifu | 0:3ea21ce21fe1 | 94 | char to[128]; |
sunifu | 0:3ea21ce21fe1 | 95 | char subject[64]; |
sunifu | 0:3ea21ce21fe1 | 96 | char message[1244]; |
sunifu | 0:3ea21ce21fe1 | 97 | }; |
sunifu | 0:3ea21ce21fe1 | 98 | |
sunifu | 0:3ea21ce21fe1 | 99 | #endif |