SMTP Mailer з відкритим кодом на основі T5L

Ця проблема для вас, щоб підштовхнути дуже практичну справу з відкритим вихідним кодом, відзначену нагородами на форумі розробників Diwen. Відправник пошти smtp на основі T5L, інженери використовують T5L smart screen через модуль WiFi для доступу до сервера smtp, щоб отримати функцію надсилання електронних листів. для адміністратора, операції на екрані для введення адреси електронної пошти одержувача, заголовка електронної пошти, вмісту електронної пошти та іншої інформації можна ввести на екрані.Варто зазначити, що вміст електронної пошти також підтримує звичайний текст, елементи керування конфігурацією, налаштування кольору тексту та інші методи редагування.

1. Архітектура програми

Розумний екран T5L керує модулем WiFi для взаємодії з сервером smtp через послідовний порт 5 для досягнення функції надсилання електронної пошти.

ава (1)

2. Розробка інтерфейсу

Програмне забезпечення DGUS завершує розробку функцій дисплея та дотику шляхом накладання шарів.Користувачам потрібно лише завантажити підготовлені графічні матеріали в програмне забезпечення DGUS і налаштувати дисплей і сенсорні функції.

ава (2)

1. C51Sпрограмне забезпеченняDesign

Послідовний порт 5 смарт-екрана T5L зв’язується з модулем WiFi для завершення взаємодії з сервером smtp.Частина основного коду така:

void uart5_init(u32 бод)

{

SCON3T = 0x80;

SCON3R = 0x80;

бод = (u32)((подвійний)(FOSC/8.0)/бод);

BODE3_DIV_H = (бод>>8)&0xff;

BODE3_DIV_L = швидкість&0xff;

ES3R = 0;

ES3T = 0;

}

void u5_send_byte(u8 байт)

{

SBUF3_TX = байт;

while(!(SCON3T&0x01));

SCON3T &= 0xfe;

}

void u5_send_bytes(u8 *байт,u16 len)

{

u16 i;

for(i=0;i

{

SBUF3_TX = байти;

while(!(SCON3T&0x01));

SCON3T &= 0xfe;

}

}

void get_input(u8 * val,u8 len)

{

u8 i;

for(i=0;i

{

якщо (val==0xff)

{

значення = 0x00;

val[i+1] = 0x00;

повернення;

}

}

}

u8 esp8266_send_cmd(u8 *cmd,u8 *ack,u16 час очікування,u8 clearBuffer)

{

u8 res=0;

rx_sta=0;

if(ack&&waittime&&cmd)

{

поки (--час очікування)

{

sys_delay_ms(10);

якщо (rx_sta&0X8000)

{

if(esp8266_check_respond(ack))

перерва;

}

}

if(час очікування==0)res=1;

if(clearBuffer==1)rx_sta=0;

}

повернення res;

}

typedef struct{

u8 cmd;

u8 email[20];

u8 ім'я[20];

u8 title[20];

u8 повідомлення[60];

}EMAIL_INFO;

EMAIL_INFO email_info;

u8 відповісти[80];

u8 wifi_name[30];

u8 wifi_passwd[30];

сервер u8[30];

порт u8[30];

u8 ім'я користувача[30];

u8 auth_code[30];

u8 rx_sta;

sys_read_vp(0x1000,(u8*)&btn_val,1);

якщо (btn_val)

{

якщо (btn_val==1)

{

sys_read_vp(0x3000,email_info.name,10);

sys_read_vp(0x3020,email_info.email,10);

sys_read_vp(0x3040,email_info.title,10);

sys_read_vp(0x3060,email_info.msg,30);

get_input(email_info.name,20);

get_input(email_info.email,20);

get_input(email_info.title,20);

get_input(email_info.msg,60);

send_packet((u8*)&email_info,sizeof(EMAIL_INFO));

якщо (rx_sta)

send_mail(email_info.email,email_info.title,email_info.msg);

}інакше якщо (btn_val==2)

{

sys_read_vp(0x3100,wifi_name,15);

sys_read_vp(0x3120,wifi_passwd,15);

get_input(wifi_name,30);

get_input(wifi_passwd,30);

}інакше якщо (btn_val==3)

{

sys_read_vp(0x3200,сервер,15);

sys_read_vp(0x3220,порт,15);

sys_read_vp(0x3240,ім’я користувача,15);

sys_read_vp(0x3260,auth_code,15);

get_input(сервер,30);

get_input(порт,30);

get_input(ім'я користувача,30);

get_input(auth_code,30);

}

 

btn_val = 0;

sys_write_vp(0x1000,(u8*)&btn_val,1);

}

sys_read_vp(0x2050,(u8*)&btn_val2,1);

if(btn_val2!=old_val)

{

якщо (btn_val2==1)

sys_write_vp(0x3060,"Це електронний лист від T5L!\0\0",30);

інакше якщо (btn_val2==2)

sys_write_vp(0x3060," \0\0",30);

інакше якщо (btn_val2==3)

sys_write_vp(0x3060,"ЖирнийЧервоний\0\0",30);

old_val = btn_val2;

}


Час публікації: 31 жовтня 2023 р