PIC_SERVER (11) SMTP ( ) ( ) PIC_SERVER (10) SMTP PIC_SERVER (event driven) PIC_SERVER SMTP 1. E-

Similar documents
(Methods) Client Server Microsoft Winsock Control VB 1 VB Microsoft Winsock Control 6.0 Microsoft Winsock Control 6.0 1(a). 2

Simulator By SunLingxi 2003

Windows RTEMS 1 Danilliu MMI TCP/IP QEMU i386 QEMU ARM POWERPC i386 IPC PC104 uc/os-ii uc/os MMI TCP/IP i386 PORT Linux ecos Linux ecos ecos eco

untitled

TCP/IP TCP/IP OSI IP TCP IP IP TCP/IP TCP/IP

Data Server_new_.doc

UDP 8.2 TCP/IP OSI OSI 3 OSI TCP/IP IP TCP/IP TCP/IP Transport Control Protocol TCP User Datagram Protocol UDP TCP TCP/IP IP TCP TCP/IP TC

<4D F736F F F696E74202D20A1B6CFEEC4BFD2BB20B3F5CAB6BCC6CBE3BBFACDF8C2E7A1B7C8CECEF1C8FD20CAECCFA A1A24950D0ADD2E9BACD4950B5D8D6B72E707074>

工程师培训

51 C 51 isp 10 C PCB C C C C KEIL

飞鱼星多WAN防火墙路由器用户手册

100/120EX A-61588_zh-tw 9E8696

IP505SM_manual_cn.doc

C6_ppt.PDF

ch08.PDF

ebook67-1

自由軟體教學平台

Microsoft Word - 46.doc

C/C++ - 字符输入输出和字符确认

标题

專業式報告

84

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

穨IC-1000

專業式報告

C 1

SL2511 SR Plus 操作手冊_單面.doc

自由軟體教學平台

Total Internet Connectivity in a Single Chip

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南

untitled

自由軟體教學平台

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile..

Chap6.ppt

R3105+ ADSL

ch09.PDF


第 1 章 概 述 1.1 计 算 机 网 络 在 信 息 时 代 中 的 作 用 1.2 计 算 机 网 络 的 发 展 过 程 *1.2.1 分 组 交 换 的 产 生 *1.2.2 因 特 网 时 代 *1.2.3 关 于 因 特 网 的 标 准 化 工 作 计 算 机 网 络 在

目 彔 1. 准 备 工 作 登 彔 设 置 功 能 说 明 实 时 监 控 基 本 控 制 功 能 设 置 画 质 调 节 彔 像 与 抓 拍

C/C++ - 文件IO

(Guangzhou) AIT Co, Ltd V 110V [ ]! 2

C/C++ 语言 - 循环

untitled

ebook140-11

C3_ppt.PDF

IC-900W Wireless Pan & Tilt Wireless Pan & Tilt Remote Control / Night Vision FCC ID:RUJ-LR802UWG

KL DSC DEMO 使用说明

ebook70-11

Socket Socket TcpClient Socket.Connect TcpClient.Connect Socket.Send / Receive NetworkStream 6-5

EMC® VNX® Series VNX8000™ Block 安装指南

Microsoft PowerPoint - ds-1.ppt [兼容模式]

CC213

C/C++语言 - 运算符、表达式和语句

2Office 365 Microsoft Office 365 Microsoft Office Microsoft Office Microsoft Office 365 Office (Office Web Apps) Office WindowsMAC OS Office 365 Offic

VoIP Make a Rtp Call VoIP Abstract... 2 VoIP RTP...3 Socket IP...9 Config Two Voice-hub

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

05 01 X Window X Window Linux Linux X Window X Window Webmin Web Linux Linux X Window X Window Notebook PC X Window X Window module Linux Linux kernel

Microsoft Word - 選擇_無解答2_.doc

2 25ms (DX1002 DX1004 DX2004 DX2008) : 200MB 2GB CF USB CF 200MB 170 CF

9 Internet 10 Internet

ebook140-8

ARP ICMP

概述

经华名家讲堂

D-link用户手册.doc

solutions guide

C/C++ - 字符串与字符串函数

(UTM???U_935_938_955_958_959 V )

untitled

(Real-time) (Local Host) (Buffer) (Video Conference) (VoD) (NetRadio) ,000 [1]( ) ( ) 1400 (2001 ) 75 (2005 ) DFC Intelligence [2] 1

C/C++语言 - C/C++数据

概述

<4D F736F F D20C9CFBAA3CAD0BCC6CBE3BBFAB5C8BCB6BFBCCAD4C8FDBCB6BFBCCAD4B4F3B8D95FBDA8D2E9B8E55F5F E646F63>

38 诚 信 始 于 入 口 从 入 口 处 着 手 打 好 律 师 队 伍 建 设 的 诚 信 基 础 / 刘 彦 平 4 0 我 国 证 券 公 司 治 理 缺 陷 的 根 源 及 其 出 路 / 黄 运 成 曹 里 加 李 畅 4 3 中 止, 因 为 什 么? 被 告 人 胡 鹏 等 五 人


untitled

Microsoft Word htm

Microsoft Word - MSP430 Launchpad 指导书.docx

北京市工商局网络安全系统解决方案

Microsoft Word - 11.doc

11N 无线宽带路由器

AN INTRODUCTION TO PHYSICAL COMPUTING USING ARDUINO, GRASSHOPPER, AND FIREFLY (CHINESE EDITION ) INTERACTIVE PROTOTYPING

GPRS IP MODEM快速安装说明

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

User ID 150 Password - User ID 150 Password Mon- Cam-- Invalid Terminal Mode No User Terminal Mode No User Mon- Cam-- 2

EPSON

<4D F736F F D20B1B1BEA9D6B8C4CFD5EBBFC6BCBCB7A2D5B9B9C9B7DDD3D0CFDEB9ABCBBEB4B4D2B5B0E5CAD7B4CEB9ABBFAAB7A2D0D0B9C9C6B1D5D0B9C9CBB5C3F7CAE9A3A8C9EAB1A8B8E C4EA36D4C23230C8D5B1A8CBCDA3A92E646F63>

QVM330 多阜寬頻路由器

Microsoft Word - ch04三校.doc

目录

C/C++程序设计 - 字符串与格式化输入/输出

一个开放源码的嵌入式仿真环境 ― SkyEye

<4D F736F F D20B9F9B0EABBCDBBAFAB48DEB3B4C1A5BDB3F8A7692E646F63>

13 根 据 各 种 网 络 商 务 信 息 对 不 同 用 户 所 产 生 的 使 用 效 用, 网 络 商 务 信 息 大 致 可 分 为 四 级, 其 中 占 比 重 最 大 的 是 ( A ) A 第 一 级 免 费 信 息 B 第 二 级 低 收 费 信 息 C 第 三 级 标 准 收 费

PPP Intranet Chapter 3 Chapter IaaS PaaS SaaS

QVM330 多阜寬頻路由器

Microsoft Word - YDB doc

目 录

1. 什 么 是 信 息 公 开? 信 息 公 开 基 本 原 则 是 什 么? 答 : 信 息 公 开 是 指 除 特 定 的 法 定 不 予 公 开 的 信 息 之 外, 国 家 机 关, 主 要 是 行 政 机 关, 应 依 据 法 律 的 规 定, 积 极 向 社 会 发 布 公 共 信 息

Transcription:

(2005-02-01) (2005-04-28) PIC_SERVER (10) SMTP E-mail PIC_SERVER (event driven) E-mail PIC_SERVER SMTP E-mail 1. E-mail E-mail 1 (1) (2) (3) (4) 1

1. 2 E-mail A E-mail B E-mail SMTP(Simple Mail Transfer Protocol) POP3(Post Office version 3) E-mail (1) A (Mail User Agent, MUA) Outlook E-mail SMTP (2) A (Mail Transfer Agent, MTA) Mail Server A E-mail (3) B POP3 B Mail Server E-mail MTA SMTP IP POP3 Outlook SMTP POP3 E-mail 2

2. E-mail PIC_SERVER E-mail 3 PIC_SERVER MUA MTA E-mail SMTP MTA PIC_SERVER E-mail SMTP MTA 3. PIC_SERVER E-mail 3

2. SMTP SMTP TCP Port 25 ASCII 4 SMTP SMTP 5 SMTP E-mail 4. SMTP SMTP server 4 SMPT SMTP server HELO E-mail. E-mail SMTP server Mail accepted SMTP server HELO SMTP IP msa.hinet.net Hello 4

[140.138.40.129], pleased to meet you IP SMTP IP MAIL FROM: E-mail @ SMTP 5 telnet SMTP server E-mail s919204 SMTP 5 SMTP server 6 E-mail IP ping ping msa.hinet.net 5. telnet SMTP server 6. E-mail 5

5 SMTP E-mail SMTP E-mail 7 E-mail TO: s919204@mail.yzu.edu.tw Subject: This E-mail is sent from PIC_SERVER 7. E-mail 3. PIC_SERVER SMTP E-mail PIC_SERVER E-mail SMTP Mail server IP TCP port 25 SMTP server PIC_SERVER E-mail (1) SMTP server SMTP server IP PIC_SERVER TCP UDP SERVER (2) E-mail E-mail (3) SMTP E-mail E-mail E-mail (4) TCP port 25 SMTP (5) SMTP HELO E-mail ex_9_send_email.c PIC_SERVER E-mail E-mail TCP client PIC_SERVER (9) (10) ex_8_tcp_client.c ex_9_send_email.c ex_8_tcp_client.c 6

pic_server_email.c SMTP dosmtpsendemail() PIC_SERVER E-mail 3.1 sendemail_to_smtpserver() 3.3 sendemail_to_smtpserver() 3.2 11 3.1 SMTP server E-mail ICP SMTP server SMTP server 140.138.36.11 port 25 8 bios_initarptable() 8. ICP SMTP server 9 SMTP E-mail I_WANT_EMAIL TCP port 25 SMTP DEBUG_MAIL RS-232 SMTP server PIC_SERVER E-mail 7

#ignore_warnings 201, 203, 204 #include <18F4620.H> // <18F452.H> <18F6680.H> #define PIC_SERVER_PCB_V_2 TRUE // 'FALSE' for V_1.0, default 'TRUE' #define I_WANT_EMAIL 1 // set '1' for E-mail via SMTP #define DEBUG_MAIL 1 // set '1' for debugging #define MAIL_TIMEOUT 10 // int8 mail_sender [48]; // int8 mail_recipient[80]; // int8 mail_subject [80]; // int8 mail_data [300]; //... 1.3 kb for 1.5 kb Ether frame #include "pic_server_lib.h" // default baud rate 115200 9. E-mail 3.2 10 LCD PIC_SERVER IP bios_initarptable() PIC_SERVER TCP UDP SERVER E-mail disp_arptable() E-mail ( sendemail_to_smtpserver()) while (1) PIC_SERVER E-mail m E-mail sendemail_to_smtpserver() E-mail mail_data 3.3 12 (2) bios_ethernethandler() TCPserver callback_tcpserverdataarrival() TCPserver SMTP_PORT(TCP port 25) SMTP server dosmtpsendemail() SMTP server E-mail mail_data printf( nic_putc, %s, mail_data) SMTP dosmtpsendemail() pic_server_email.c 8

(3) TCP E-mail dohousekeeping() pic_server.h TCP_TIMEOUT 10 MAIL_TIMEOUT 20 9 void main() char keyin; printf( PROJ_TITLE_VERSION ); pic_server_init(); lcd_init(); lcd_dispip(); disp_arptable(); bios_initarptable(); disp_arptable(); disp_picports(); beep(440,500); delay_ms(200); beep(880,200); printf("\r\n"); while(1) // // system clock and hardware I/O configuration // read Internet configuration from Data EEPROM //LCD // PIC_SERVER IP LCD // // // PIC bios_ethernethandler(); //... // ARP/IP/ICMP/UDP/TCP/HTTP/SMTP/dhcp... // Callback function. dohousekeeping(); // E-mail TCP if( kbhit() ) // PC putc ( keyin = getc() ); if ( keyin == 'm' ) sendemail_to_smtpserver(); // m E-mail else disp_arptable(); disp_picports(); // ---- Callback functions ---------------------------------------------------- void callback_httpclientcmdhandler(void) void callback_httpclientrequestdata(void) void callback_udpserverdataarrival(void) void callback_udpclientdataarrival(void) void callback_timeserverdataarrival(void) void callback_tcpserverdataarrival (void) if ( rtcpserver.port == SMTP_PORT ) dosmtpsendemail(); void callback_tcpclientdataarrival(void) // ---- Callback functions ---- over ------------------------------------------ // TCP port 25 // 10. 9

3.3 11 sendemail_to_smtpserver() E-mail E-mail E-mail 12 E-mail sprintf(mail_data, ) mail_data bios_connectremotehost() strcpy(temp_str, something more to say, ); strcat(mail_data, temp_str); strcpy(temp_str, Happy new year! ); strcat(mail_data, temp_str); mail_data CCS-C strcat(mail_data, something more ) mail_data CCS-C C CCS-C 10

void sendemail_to_smtpserver(void) if (!tcpclienttask.isrunning ) // client task if ( arp.rtcpserver_ok ) // --- SMTP --- \r\n --- // sprintf( mail_sender, "s919204@mail.yzu.edu.tw\r\n" ); sprintf( mail_recipient, "s919204@mail.yzu.edu.tw\r\n" ); // --- SMTP --- - \r\n? -- // sprintf( mail_subject, "Subject36.14: Something happened at %02u:%02u:%02u\r\n", clock.hour,clock.min,clock.sec); // --- SMTP --- ---------------------------- // sprintf( mail_data, "Analog input, AN0 = %lu\r\n", read_analog(0) ); mail_state = MAIL_INIT; // e-mail state machine, start up condition tcpipheader.rem_ip = rtcpserver.ip; // IP tcpipheader.rem_port = rtcpserver.port; // PORT tcpipheader.loc_port = mypic.tcpclient.port; // PORT bios_connectremotehost(); // sendout a request to remote host else putc('!'); // arp.rtcpserver_ok => failed! else putc('?'); // client task is still running! 11. sendemail_to_smtpserver() dosmtpsendemail() 12 pic_server_email.c SMTP server SMTP HELO localnet MAIL FROM RCPT TO DATA QUIT dohousekeeping() 13 TCP E-mail dotcpclienthousekeeping() 14 pic_server.c TCP E-mail 11

void dosmtpsendemail(void) char c, e; if ( nic_getc(&c) ) #if DEBUG_MAIL printf("\r\nsmtp_server: "); while (nic_getc(&e) && e!='\n') #else while (nic_getc(&e) && e!='\n'); #endif if (e!= '\n') putc('!'); else if (c == '2' ) if putc(c); putc(e); (mail_state == MAIL_INIT) printf(nic_putc,"helo localnet\r\n"); else if(mail_state == MAIL_HELO)printf(nic_putc,"MAIL FROM: ");print_sender(); else if (mail_state == MAIL_FROM)printf(nic_putc,"RCPT TO: "); print_recipient(); else if (mail_state == MAIL_TO ) printf(nic_putc,"data\r\n"); else if (mail_state == MAIL_END ) printf(nic_putc,"quit\r\n"); else if (mail_state!= MAIL_QUIT) mail_state--; mail_state++; else if (c == '3') if (mail_state == MAIL_DATA) printf(nic_putc,"from: ");print_sender(); printf(nic_putc,"to: "); print_recipient(); printf(nic_putc,"%s", mail_subject ); // // printf(nic_putc,"%s", mail_type ); // printf(nic_putc,"%s", mail_data ); // printf(nic_putc,"\r\n.\r\n"); mail_state++; // <CRLF>.<CRLF> else mail_state = MAIL_DONE; printf("\r\ne-mail failed!\r\n"); if (mail_state == MAIL_DONE)printf("\r\nE-mail done.\r\n");tcpclienttask.action=tfin+tack; 12. dosmtpsendemail() 12

void dohousekeeping (void) SYSLED = time.tick > 1000; nic_check_error(); dotcpclienthousekeeping(); // LED if( (mail_state &&!tcpclienttask.isrunning) // timeout? mail_state == MAIL_DONE ) // or finished. mail_state = MAIL_IDLE; tcpclienttask.isrunning = 0; 13. dohousekeeping() void dotcpclienthousekeeping(void) // called by dohousekeeping() in main() if( tcpclienttask.isrunning ) if( tcpclienttask.flag_2_resend ) tcpclienttask.flag_2_resend= 0; putc('>'); // tcpclienttask.ncountsresend++; bios_resendtcpsegment(); // socket 5 if((mail_state && tcpclienttask.ncountsresend > MAIL_TIMEOUT) // (!mail_state && tcpclienttask.ncountsresend > TCP_TIMEOUT) ) tcpclienttask.state = TCP_CLIENT_IDLE; tcpclienttask.ncountsresend = 0; tcpclienttask.isrunning = 0; putc('!'); // 14. dotcpclienthousekeeping() PIC_SERVER PIC_SERVER 10 E-mail 10 40 E-mail 13