Homepage

  • Projekte
  • Shop
  • Forum
Erweiterte Suche
  • Schnellzugriff
    • Unbeantwortete Themen
    • Aktive Themen
    • Suche
  • FAQ
  • Anmelden
  • Registrieren
  • Foren-Übersicht
  • Suche

E_mail Versand

Ethernet Mega32 Experimentierboard
Antworten
  • Druckansicht
Erweiterte Suche
3 Beiträge • Seite 1 von 1
christora
Beiträge: 1
Registriert: 06.11.2009, 21:00:29

E_mail Versand

  • Zitieren

Beitrag von christora » 08.11.2009, 09:00:46

Hallo allerseits,

ich möchte mit dem Webserver von Ulrich Radig (Version 1.2.2) zyklisch E-Mails versenden.
Das Versenden der Mails funktioniert auch eine gewisse Zeit. Leider hört das Board irgendwann
auf zu senden. Manchmal startet der E-Mailversand wieder von alleine, manchmal nicht.

In der Hauptschleife (main.c) habe ich folgenden Code hinzugefügt:

Code: Alles auswählen

     //Empfang von Zeitinformationen
		#if USE_NTP
		if(!ntp_timer){
			ntp_timer = NTP_REFRESH;
			ntp_request();
		}
[b]---->>> Hier startet mein Code[/b]
    // Scheduler 
    
    decode_time(time,&dati); // dati ist ein ntp_struct
    if(dati.minute%15!=0) // Falls Minute/15 einen Rest >0 hat -- die Zykluszeit ist ein vielfaches von 15 Minuten
      merker=0;
    if(dati.minute%15==0&& merker==0) // 
      {
      merker=1;// der Merker dient dazu, dass dieser Zweig nur einmal aufgerufen wird
      if(zeitzaehler>=schedulerparam) // Schedulerparam = 15 oder 30 oder 45 .... oder 120 
        {
        usart_write("\n\r");
        usart_write_str(dati.timestr);
        usart_write("   scheduler: ");
        itoa(schedulerparam,&schstring[0],10);
        usart_write_str(&schstring[0]);
        usart_write("    formdata: ");
        usart_write_str(&formdata[31][0]);
        usart_write("\n\r");
        mail_send();
        zeitzaehler=0;
        }
      zeitzaehler=zeitzaehler+15; 
      }
    // Ende Scheduler
    -----> hier endet mein Code
      
		#endif //USE_NTP
		
        //Versand von E-Mails
        #if USE_MAIL
        if (mail_enable == 1)
        {
            mail_enable = 0;
            mail_send();
        }
      
Anbei auch ein Auszug aus dem Terminalprogramm, bezüglich der Debugausgaben:
Um 20:15 Uhr geht dann keine E-Mail mehr raus, der Webserver läuft aber weiterhin,
er ist auch per Browser erreichbar.

Code: Alles auswählen

System Ready
Compiliert am Nov  4 2009 um 23:43:58
Compiliert mit GCC Version 4.3.2



TWI jetzt frei!!

IP   192.168.178.222
MASK 255.255.255.0
GW   192.168.178.1

TIME: 16:52:38

17:15:00   scheduler: 30    formdata: 2
Send E-Mail (Sie haben Post ;-)
Mail empfang am Clientport (-8675)TCP Eintrag gefunden (Mailserver)!
220 XXXXXXXXXXXXXX ESMTP
0: SMTP_HELO
250 XXXXXXXXXXXXXXXXX
1: SMTP_AUTH
334 VXNlcm5hbWU6
2: Send Username: XXXXXXXXXXXXXXXXXXXXXXXXXXXX==
334 XXXXXXXXXXXXXXXXXX
3: Send Password: XXXXXXXXXXX=
235 go ahead
4: SMTP_MAIL_FROM
250 ok
5: SMTP_MAIL_RCPT_TO
250 ok
6: SMTP_MAIL_DATA
354 go ahead
7: SMTP_MAIL_TEXT
8: SMTP_MAIL_END
250 ok 1257524131 qp 4822
9: SMTP_MAIL_QUIT

10: Mail wurde versendet!!

17:45:00   scheduler: 30    formdata: 2
Send E-Mail (Sie haben Post ;-)
Mail empfang am Clientport (-17095)TCP Eintrag gefunden (Mailserver)!
220 XXXXXXXXXXXXXXXXXXXX ESMTP
0: SMTP_HELO
250 XXXXXXXXXXXXXXXXXXXXXXXXXX
1: SMTP_AUTH
334 XXXXXXXXXXXXXXX
2: Send Username: XXXXXXXXXXXXXXXXXXXXXXXXXX==
334 XXXXXXXXXXXXXXXXX
3: Send Password: XXXXXXXXXXXX=
235 go ahead
4: SMTP_MAIL_FROM
250 ok
5: SMTP_MAIL_RCPT_TO
250 ok
6: SMTP_MAIL_DATA
354 go ahead
7: SMTP_MAIL_TEXT
8: SMTP_MAIL_END
250 ok 1257525931 qp 15635
9: SMTP_MAIL_QUIT

10: Mail wurde versendet!!

18:15:00   scheduler: 30    formdata: 2
Send E-Mail (Sie haben Post ;-)
Mail empfang am Clientport (-23715)TCP Eintrag gefunden (Mailserver)!
220 XXXXXXXXXXXXXXXXX ESMTP
0: SMTP_HELO
250 XXXXXXXXXXXXXXXXXXXXXX
1: SMTP_AUTH
334 XXXXXXXXXXXXXXX
2: Send Username: XXXXXXXXXXXXXXXXXXXXXXXXx=
334 XXXXXXXXXXXXXX
3: Send Password: XXXXXXXXXXX=
235 go ahead
4: SMTP_MAIL_FROM
250 ok
5: SMTP_MAIL_RCPT_TO
250 ok
6: SMTP_MAIL_DATA
354 go ahead
7: SMTP_MAIL_TEXT
8: SMTP_MAIL_END
250 ok 1257527731 qp 20197
9: SMTP_MAIL_QUIT

10: Mail wurde versendet!!

18:45:00   scheduler: 30    formdata: 2
Send E-Mail (Sie haben Post ;-)
Mail empfang am Clientport (-28535)TCP Eintrag gefunden (Mailserver)!
220 XXXXXXXXXXXXXXXXXXX ESMTP
0: SMTP_HELO
250 XXXXXXXXXXXXXXXXXXXXXXXXXXX
1: SMTP_AUTH
334 XXXXXXXXXXXXXXXXXXX
2: Send Username: XXXXXXXXXXXXXXXXXXXX
334 XXXXXXXXXXXXXXXXXXXX
3: Send Password: XXXXXXXXX
235 go ahead
4: SMTP_MAIL_FROM
250 ok
5: SMTP_MAIL_RCPT_TO
250 ok
6: SMTP_MAIL_DATA
354 go ahead
7: SMTP_MAIL_TEXT
8: SMTP_MAIL_END
250 ok 1257529531 qp 23380
9: SMTP_MAIL_QUIT

10: Mail wurde versendet!!

19:15:00   scheduler: 30    formdata: 2
Send E-Mail (Sie haben Post ;-)
Mail empfang am Clientport (-31555)TCP Eintrag gefunden (Mailserver)!
220 XXXXXXXXXXXXXXXXXXXx ESMTP
0: SMTP_HELO
250 XXXXXXXXXXXXXXXXXX
1: SMTP_AUTH
334 XXXXXXXXXXXXXXX
2: Send Username: XXXXXXXXXXXXXXXXXXXXXXXX
334 XXXXXXXXXXXXXXXx
3: Send Password: XXXXXXXXXXX
235 go ahead
4: SMTP_MAIL_FROM
250 ok
5: SMTP_MAIL_RCPT_TO
250 ok
6: SMTP_MAIL_DATA
354 go ahead
7: SMTP_MAIL_TEXT
8: SMTP_MAIL_END
250 ok 1257531331 qp 26366
9: SMTP_MAIL_QUIT

10: Mail wurde versendet!!

19:45:00   scheduler: 30    formdata: 2
Send E-Mail (Sie haben Post ;-)
Mail empfang am Clientport (32761)TCP Eintrag gefunden (Mailserver)!
220 XXXXXXXXXXXXXXXXX ESMTP
0: SMTP_HELO
250 XXXXXXXXXXXXXXXXX
1: SMTP_AUTH
334 XXXXXXXXXXXXXXXX
2: Send Username: XXXXXXXXXXXXXXXXXXXXXX
334 XXXXXXXXXXXX
3: Send Password: XXXXXXXXXXX
235 go ahead
4: SMTP_MAIL_FROM
250 ok
5: SMTP_MAIL_RCPT_TO
250 ok
6: SMTP_MAIL_DATA
354 go ahead
7: SMTP_MAIL_TEXT
8: SMTP_MAIL_END
250 ok 1257533131 qp 29469
9: SMTP_MAIL_QUIT

10: Mail wurde versendet!!

20:15:00   scheduler: 30    formdata: 2
Send E-Mail (Sie haben Post ;-)
Mail empfang am Clientport (-32195)TCP Eintrag gefunden (Mailserver)!

20:45:00   scheduler: 30    formdata: 2
Hat jemand eine Idee?

Für Eure Mühen besten Dank
Nach oben

kendo
Beiträge: 32
Registriert: 24.06.2008, 19:22:04

Re: E_mail Versand

  • Zitieren

Beitrag von kendo » 19.11.2009, 10:04:15

Hallo

ev. hilft dir diese Umgehungslösung.

http://www.ulrichradig.de/forum/viewtop ... =27&t=1402

Gruss Kendo
Nach oben

Maarten
Beiträge: 1
Registriert: 27.12.2009, 12:48:58

Re: E_mail Versand

  • Zitieren

Beitrag von Maarten » 27.12.2009, 13:35:41

Hast du das Problem schon gelost?
Ich hatte ein problem mit das schnell hinter ein ander senden mehrere emails.
Im stack.c habe ich ein bug gefunden(version 1.2.4) die das Problem behoben hat:

Im Funktion: void tcp_socket_process(void):

line 984:
if (index >= MAX_TCP_ENTRY) //Eintrag nicht gefunden
{
DEBUG("TCP Eintrag nicht gefunden\r\n");

if(tcp->TCP_HdrFlags & FIN_FLAG || tcp->TCP_HdrFlags & RST_FLAG)
{
tcp_entry_add (eth_buffer);//Temporärer Indexplatz
result32 = htons32(tcp_entry[index].seq_counter) + 1;
tcp_entry[index].seq_counter = htons32(result32);

if (tcp_entry[index].status & FIN_FLAG)
{
tcp_entry[index].status = ACK_FLAG;
create_new_tcp_packet(0,index);
}
tcp_index_del(index);
DEBUG("TCP-Stack Eintrag gelöscht! STACK:%i\r\n",index);
return;
}
return;
}

Da die index auf MAX_TCP_ENTRY steht in line 984 wird in line 992:
tcp_entry_add (eth_buffer) ein neuen temp index gesucht. Es wird aber
weiter gearbeited mit MAX_TCP_ENTRY.

Ich habe die Funktion void tcp_entry_add (unsigned char *buffer) geandert in:

unsigned char tcp_entry_add (unsigned char *buffer)
{
unsigned long result32;

struct TCP_Header *tcp;
struct IP_Header *ip;

tcp = (struct TCP_Header *)&buffer[TCP_OFFSET];
ip = (struct IP_Header *)&buffer[IP_OFFSET];

//Eintrag schon vorhanden?
for (unsigned char index = 0;index<(MAX_TCP_ENTRY);index++)
{
if( (tcp_entry[index].ip == ip->IP_Srcaddr ) &&
(tcp_entry[index].src_port == tcp->TCP_SrcPort) )
{
//Eintrag gefunden Time refresh
tcp_entry[index].ack_counter = tcp->TCP_Acknum;
tcp_entry[index].seq_counter = tcp->TCP_Seqnum;
tcp_entry[index].status = tcp->TCP_HdrFlags;
if ( tcp_entry[index].time != TCP_TIME_OFF )
{
tcp_entry[index].time = TCP_MAX_ENTRY_TIME;
}
result32 = htons(ip->IP_Pktlen) - IP_VERS_LEN - ((tcp->TCP_Hdrlen& 0xF0) >>2);
result32 = result32 + htons32(tcp_entry[index].seq_counter);
tcp_entry[index].seq_counter = htons32(result32);

MY_DEBUG2("TCP Entry gefunden %i\r\n",index);
return index; //@@ return value
}
}

//Freien Eintrag finden
for (unsigned char index = 0;index<(MAX_TCP_ENTRY);index++)
{
if(tcp_entry[index].ip == 0)
{
tcp_entry[index].ip = ip->IP_Srcaddr;
tcp_entry[index].src_port = tcp->TCP_SrcPort;
tcp_entry[index].dest_port = tcp->TCP_DestPort;
tcp_entry[index].ack_counter = tcp->TCP_Acknum;
tcp_entry[index].seq_counter = tcp->TCP_Seqnum;
tcp_entry[index].status = tcp->TCP_HdrFlags;
tcp_entry[index].app_status = 0;
tcp_entry[index].time = TCP_MAX_ENTRY_TIME;
tcp_entry[index].error_count = 0;
tcp_entry[index].first_ack = 0;
MY_DEBUG2("TCP Entry neuer Eintrag %i\r\n",index);
return index; //@@ return value
}
}
//Eintrag konnte nicht mehr aufgenommen werden
MY_DEBUG2("Server Busy (NO MORE CONNECTIONS)!\r\n");
return MAX_TCP_ENTRY;
}

und line 992 geandert in: index = tcp_entry_add (eth_buffer);//Temporärer Indexplatz
Nach oben

Antworten
  • Druckansicht

3 Beiträge • Seite 1 von 1

Zurück zu „ETH_M32_EX“



  • Foren-Übersicht
  • Alle Zeiten sind UTC+02:00
  • Alle Cookies löschen

Powered by phpBB® Forum Software © phpBB Limited

Deutsche Übersetzung durch phpBB.de

Datenschutz | Nutzungsbedingungen

 

 

sitemap  |    |  datenschutz   |  impressum