mboost-dp1

Tilføje tekst fra email til hjemmeside


Gå til bund
Gravatar #1 - rexys
21. maj 2014 09:15
Hej, har brug for at overføre en tekst (en temperatur) til en hjemmeside, som opdateres en gang i timen.

Planen er der bliver sendt en mail med temperaturen til hjemmesiden en gang i timen, som så ændre et temperatur felt til værdien af mailen på hjemmesiden. Eksempel på indhold i mailen kunne "19.4"

Er dette muligt?

Hilsen Jan
Gravatar #2 - gramps
21. maj 2014 09:24
#1
Hvis du kan tænke dig til det, så kan man programmere det.

Men lige hvordan, dét ved jeg ikke. Kunne man lave en løsning hvor det ikke sendes som en mail, men som en TCP el. UCP pakke?
Gravatar #3 - rexys
21. maj 2014 09:44
Det er faktisk fra en LK IHC Controller,
der bliver sat til automatisk at sende dette i
enten en mail eller sms.
Gravatar #4 - Lusk
21. maj 2014 10:14
Det kan lade sig gøre med de fleste sprog, så det afhænger af hvad du bruger på din hjemmeside - se f.eks:
.NET
PHP
Node.js
Ruby

Der er selvfølgelig en logik du skal tænke ind, såsom hvordan systemet skal afgøre om den pågældende mail er en der skal benyttes til at opdatere hjemmesiden (benyt fx defineret tekst i mailen systemet kan scanne efter, for at se om det er en værdi der skal benyttes, eller om det er noget andet (fx spam))

Derudover skal du tænke på sikkerhed. Da det er en mail der sendes er der ikke noget som udgangspunkt forhindrer en anden person at sende en mail til denne inbox - hvis du ikke tager højde for sådant kan ske, vil du i princippet åbne op for andre vil kunne opdatere din hjemmeside med skadelig kode, hvis du ikke sikrer dig i mod det.

Som udgangspunkt en simpel opgave, men da det drejer sig om at lade en klient (i dette tilfælde en uovervåget scanning af emails) opdatere en hjemmeside skal du altid sikre dig i mod uønsket adgang (og fejlhåndtering)...

Ovenstående er ikke en udtømmelig liste - der er en lang række faktorer du skal overveje, men til at komme i gang (og som svar på dit spørgsmål) skulle det være nok til at komme videre :-)
Gravatar #5 - E.T.
1. jun. 2014 12:15
Du skal næsten have et script til at køre via crontab (i linux, windows scheduler hvis du bruger windows), der regelmæssigt tjekker en indbakke.

Afhængig af strukturen i mailen kan du bruge DOM eller regex til at udtrække værdien med.

Du kan bruge stortset hvilket scriptsprog som du ønsker. Jeg vil dog anbefale dig at tage et du kender (Og som evt. har god POP3/IMAP support, hvilket nogengange godt kan være et rod at håndtere, da E-mails efter min mening er en gang slamkode indavl vi burde afskaffe, men det er en længere rant.)

Hvis du vælger at bruge PHP kan jeg evt. hjælpe dig lidt, jeg har desværre haft alt for mange opgaver hvor jeg skulle læse mails i PHP, så jeg har efterhånden fået opbygget mig en fin lille klasse til det.
Gravatar #6 - kasperd
1. jun. 2014 12:45
E.T. (5) skrev:
Du skal næsten have et script til at køre via crontab
Hvis man gerne vil have siden opdateret med det samme skal man ikke bruge crontab. Gennem et mail alias eller en .forward fil kan man pipe indholdet af indgående mails ind i en kommando. På den måde får man automatisk den pågældende kommando udført i samme øjeblik, der modtages en mail.
Gravatar #7 - E.T.
1. jun. 2014 13:26
#6 Smart - Det må jeg indrømme at jeg ikke vidste. Hvad hvis mail kontoen ligger på en anden server :-) ? (Men ja hvis og hvis min røv er spids)
Gravatar #8 - nielsbuus
1. jun. 2014 13:35
Er du sikker på at du ikke kan få controlleren til at lave et HTTP request i stedet for? Det vil gøre din opgave meget lettere.
Gravatar #9 - kasperd
1. jun. 2014 15:28
E.T. (7) skrev:
Hvad hvis mail kontoen ligger på en anden server
Hvis mailserveren og webserveren er på hver sin computer er det åbenlyst nødvendigt at kommunikere over netværket. Men så kan mailserveren jo bare have et script, der laver en HTTP request til webserveren. (Jeg har set RT håndtere indgående mails med en HTTP request på den måde, selv når mailserver og webserver er på samme computer.)

Hvis webserveren ikke kører nogen mailserver, så kan man også bare sætte en mailserver op. Hvis man kun tillader indgående forbindelser på port 25 fra controllerens IP adresse og den altid sender de samme SMTP kommandoer, så kan man også bare køre et lille shell script fra xinetd på port 25.

#!/bin/bash
echo 220 Hej
read
echo 250 OK
read
echo 250 OK
read
echo 250 OK
read
echo 354 OK
grep ^Subject > /var/www/en-fil
echo 250 OK
read
echo 221 Bye
Disclaimer: Ovenstående kode er grim.
Gravatar #10 - Web-designer-DevsSolution
2. jun. 2014 18:43
Vil mene den bedste løsning er en pipe løsning, da denne opdaterer så snart du får mailen. Dog er dette også lidt større projekt, at opsætte end et simpelt " Cronjob ".

Vi har lavet linende, løsninger før som du måske kunne få en develope udgave af.

Hvis ikke du allerede har fundet en løsning altså :)
Gravatar #11 - inckie
8. jun. 2014 23:41
Gravatar #12 - milandt
9. jun. 2014 10:58
Hvis vi nu tænker lavpraktisk og ud af boksen, så tror jeg at det letteste vil være hvis du får sendt e-mail'en til lortemail.dk til f.eks. [email protected].

Så kan du bede dit website om at kalde denne URL http://lortemail.dk/?mode=temperatur&domain=lo... og så søge den tekst frem du gerne vil finde. Det vil være let hvis du kan få temperaturen til at stå i emnefeltet, da det kommer frem på siden siden, og let vil kunne identificeres i den HTML som du får retur.

Som sagt, lavpraktisk og lidt ud af boksen. Fordelen er at du slipper for at skulle håndtere indgående mails på din web-server.
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login