Trình gửi thư SMTP dựa trên T5L mã nguồn mở

Vấn đề này giúp bạn thúc đẩy một trường hợp nguồn mở từng đoạt giải thưởng của Diễn đàn Nhà phát triển Diwen rất thiết thực - Người gửi thư smtp dựa trên T5L, các kỹ sư sử dụng màn hình thông minh T5L, thông qua mô-đun WiFi để truy cập máy chủ smtp, để đạt được chức năng gửi email đối với quản trị viên, thao tác của màn hình để nhập địa chỉ email của người nhận, tiêu đề email, nội dung email và các thông tin khác có thể được nhập trên màn hình.Điều đáng chú ý là nội dung email cũng hỗ trợ văn bản thuần túy, điều khiển cấu hình, cài đặt màu văn bản và các phương pháp chỉnh sửa khác.

1. Kiến trúc chương trình

Màn hình thông minh T5L điều khiển mô-đun WiFi tương tác với máy chủ smtp thông qua cổng nối tiếp 5 để đạt được chức năng gửi email.

ava (1)

2. Phát triển giao diện

Phần mềm DGUS hoàn thiện việc phát triển các chức năng hiển thị và cảm ứng thông qua việc xếp chồng các lớp.Người dùng chỉ cần tải các tài liệu hình ảnh đã chuẩn bị sẵn vào phần mềm DGUS và thiết lập các chức năng hiển thị và cảm ứng.

ava (2)

1. C51Sphần mềmDthiết kế

Cổng nối tiếp màn hình thông minh T5L 5 giao tiếp với mô-đun WiFi để hoàn tất tương tác với máy chủ smtp.Một phần của mã chính như sau:

void uart5_init(u32 baud)

{

SCON3T = 0x80;

SCON3R = 0x80;

baud = (u32)((double)(FOSC/8.0)/baud);

BODE3_DIV_H = (baud>>8)&0xff;

BODE3_DIV_L = baud&0xff;

ES3R = 0;

ES3T = 0;

}

void u5_send_byte(u8 byte)

{

SBUF3_TX = byte;

while(!(SCON3T&0x01));

SCON3T &= 0xfe;

}

void u5_send_bytes(u8 *byte,u16 len)

{

u16 tôi;

vì(i=0;i

{

SBUF3_TX = byte;

while(!(SCON3T&0x01));

SCON3T &= 0xfe;

}

}

void get_input(u8 * val,u8 len)

{

u8 tôi;

vì(i=0;i

{

nếu(val==0xff)

{

giá trị = 0x00;

giá trị [i+1] = 0x00;

trở lại;

}

}

}

u8 Esp8266_send_cmd(u8 *cmd,u8 *ack,u16 waittime,u8 clearBuffer)

{

u8 độ phân giải=0;

rx_sta=0;

if(ack&&waittime&&cmd)

{

trong khi(--thời gian chờ)

{

sys_delay_ms(10);

nếu(rx_sta&0X8000)

{

if(esp8266_check_respond(ack))

phá vỡ;

}

}

if(waittime==0)res=1;

if(clearBuffer==1)rx_sta=0;

}

trả lại độ phân giải;

}

cấu trúc typedef{

u8 cmd;

email u8[20];

tên u8[20];

tiêu đề u8[20];

tin nhắn u8[60];

}THÔNG TIN THƯ ĐIỆN TỬ;

EMAIL_INFO email_thông tin;

u8 phản hồi[80];

u8 wifi_name[30];

u8 wifi_passwd[30];

máy chủ u8 [30];

cổng u8[30];

tên người dùng u8 [30];

u8 auth_code[30];

u8 rx_sta;

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

nếu(btn_val)

{

nếu(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));

nếu(rx_sta)

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

}nếu không thì(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);

}nếu không(btn_val==3)

{

sys_read_vp(0x3200,máy chủ,15);

sys_read_vp(0x3220,port,15);

sys_read_vp(0x3240,tên người dùng,15);

sys_read_vp(0x3260,auth_code,15);

get_input(server,30);

get_input(port,30);

get_input(tên người dùng,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)

{

nếu(btn_val2==1)

sys_write_vp(0x3060,"Đây là email từ T5L!\0\0",30);

khác nếu(btn_val2==2)

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

khác nếu(btn_val2==3)

sys_write_vp(0x3060,"In đậmMàu đỏ\0\0",30);

old_val = btn_val2;

}


Thời gian đăng: 31/10/2023