Avatar billede bjorn_jeppesen Nybegynder
09. oktober 2007 - 17:34 Der er 23 kommentarer og
1 løsning

Afvikling af script når der postes fra anden server

En side med nogle værdier skal sætte et script igang på min server - Lidt a la en web service. Hvordan får jeg lige gjort det?

Jeg skal i første omgang bare sende en mail med en værdi der er postet med som en querystring.
Posten sker til http:/minserver/modtagpost.aspx?testqs="Jamendog"
Siden skal aldrig åbnes og vises. Den skal bare sende en mail.
Selve eksemplet herunder virker fint, men der ligger det jo også i en funktion på en side der bliver åbnet.


Eksempel:
<%@ Page Language="VB" %>
<script runat="server">
    'create the mail message
    Dim mail As New System.Net.Mail.MailMessage()
    Dim vBody As String
        vBody = "Test af mailsend"
    'set the addresses
        mail.From = New System.Net.Mail.MailAddress("afsenderen@domain.dk")
        mail.To.Add("minmail@hubba.dk")
    'set the content
        mail.Subject = "Test af mailsend med querystring fra post"
        mail.Body = vBody
    'send the message
    Dim smtp As New System.Net.Mail.SmtpClient("smtpserveren")
    smtp.Send(mail)
</script>
Avatar billede kalp Novice
09. oktober 2007 - 17:57 #1
øhm..

if(!string.IsNullOrEmpty(Request.QueryString("testqs")))
{
dit mail script her
}

ellers må jeg indrømme at din beskrivelse ikke var helt nok for mig:)
Avatar billede olebole Juniormester
09. oktober 2007 - 18:02 #2
<ole>

var o = document.createElement("img");
o.style.display = "none";
document.getElementsByTagName("body")[0].appendChild(o);
o.setAttribute("src", "http:/minserver/modtagpost.aspx?testqs=Jamendog");

/mvh
</bole>
Avatar billede olebole Juniormester
09. oktober 2007 - 18:06 #3
Du kan også bruge XMLHttpRequest, men hvis det bare er én mail, du skal sende, er 'billed-hacket' helt fint  :)
Avatar billede nielle Nybegynder
09. oktober 2007 - 18:07 #4
I stedet for at redirecte til din side, http://minserver/modtagpost.aspx?testqs=Jamendog, kan du kalde den på denne måde:

        Dim WebReq As System.Net.HttpWebRequest = CType(System.Net.WebRequest.Create("http://minserver/modtagpost.aspx?testqs=Jamendog"), System.Net.HttpWebRequest)
        WebReq.Method = "GET"

        Dim WebResp As System.Net.HttpWebResponse = CType(WebReq.GetResponse(), System.Net.HttpWebResponse)
Avatar billede bjorn_jeppesen Nybegynder
09. oktober 2007 - 19:03 #5
nielle: Det er ikke mig der sender en post afsted.
Olebole: billedhacket? Jeg får ikke afviklet scriptet, når jeg selv laver en post fra en form på en anden side.
Det der er skrevet ovenfr er det eneste vb.net der er skrevet på siden minpostside.aspx

:-)
Avatar billede nielle Nybegynder
09. oktober 2007 - 19:09 #6
Du har to sider - hvad er forholdet mellem dem. Og er det dine begge to?

Der skal sendes en mail - hvornår skal det ske?
Avatar billede nielle Nybegynder
09. oktober 2007 - 19:18 #7
Den side som kalder den af dine som sender mailen skal bruge noget kode i stil med 09/10-2007 18:07:06. Hvis de ikke vil det, så må de finde sig i at din side bliver vist.

Du kan dog aflæse hvor posten egentlig kom fra og så redirecte brugeren tilbage til den side.
Avatar billede bjorn_jeppesen Nybegynder
09. oktober 2007 - 19:20 #8
en side ligger ude i byen og sender en post med en mailadresse til min server hver gang der har været en henvendelse.
Min side bliver aldrig ramt, så den skal bare gå i gang med at sende en mail rent server-side

Giver det mening, eller er jeg for dårlig til at forklare?

:-)
Avatar billede olebole Juniormester
09. oktober 2007 - 19:22 #9
Jeg forstår det i hvertfald ikke  :)
Avatar billede kalp Novice
09. oktober 2007 - 19:25 #10
ahh nu forstår jeg det:)

Du vil fra en ekstern side "poste" til din egen server for at udsende en mail, men uden at siden på din server bliver vist til brugeren.

Den skal jeg lige tænke over.
Avatar billede kalp Novice
09. oktober 2007 - 19:27 #11
Hvis du kan lave rettelser på den side ude i byen så kan jeg nok godt komme med forslag, men hvis du ikke kan så ved jeg det ikke.
Avatar billede nielle Nybegynder
09. oktober 2007 - 19:29 #12
Hvis du ikke har mulighed for at ændre på siden ude i byen (eller bede ejerne om at gøre det for dig), så er der vist kun muligheden tilbage med at lade din egen side om at sende brugerene tilbage der hvor de kom fra.

Response.Redirect("tilbage url");
Avatar billede olebole Juniormester
09. oktober 2007 - 21:26 #13
Jeg forstår stadig ikke. Vil man kunne få en tilfældig side - f.eks. Google's søgeside - til at sætte et mailscript i gang på éns egen server, hvergang søgesiden tilgås?
Avatar billede kalp Novice
09. oktober 2007 - 21:49 #14
olebole >> dit billede hack bla. eller en iframe som loader siden i width:1px og height:1px..

er dog usikker på om det virker med billede hack.. gør det hvis scriptet kan læse url parametre.
Avatar billede bjorn_jeppesen Nybegynder
09. oktober 2007 - 22:39 #15
kalp: Jep, korrekt forstået. I pricippet er det jo egentlig ligesom en webservice. Så spørgsmålet er om jeg ikke bare kan lade den gå ind i en webservice. Det eneste jeg selv kan definere er navnet på den url der bliver sendt imod fra det cgi script der styrer transactionerne ude i byen.
Det vil jeg straks kaste mig frådene over.
:-)
Avatar billede nielle Nybegynder
09. oktober 2007 - 22:42 #16
Hvis du laver det om til en webservice, så skal dem fra den anden side også kalde din kode på en anden måde ene de gør det nu...

Men hvis de er påarat til det, så er de vel også parat til at lave det om som i 09/10-2007 18:07:06?
Avatar billede bjorn_jeppesen Nybegynder
11. oktober 2007 - 01:22 #17
Øhhh en webservice kan vel tilgås som en http://minserver/minwebserver.asmx?do=goahead

Det har da virket fint førhen, så det gør det nok også endnu.
Avatar billede nielle Nybegynder
11. oktober 2007 - 06:46 #18
Ja da, men de slipper altså ikke for at skulle lave noget om i den ende som kalde.

Om intet andet spa de i hvert fald rette et bogstav i det url de skal kalde. ;^)

Du har ikke fortalt noget om hvorvidt de overhovedet ville være parat til at rette noget som helst i afsender-enden? Eller hvor meget.
Avatar billede nielle Nybegynder
11. oktober 2007 - 08:02 #19
I øvrigt er det en endnu dårligere løsning at bruge en webservice på den måde. Lige nu ærgre du dig over at brugerne ser en tom side hos dig. Hvis du vælger at bruge en webservice som beskrevet (frem for den rigtige måde) så bliver brugerne i stedet præsenteret for webservicens "indgangsside" - noget i stil med dette:

http://www.mindsqualls.net/wseksperten.asmx

Du har to hovedmuligheder:

1) Enten kan du få ejerne af siden som redirecter til dig til at ændre på deres løsning. Basalt set skal de kalde din side på en anden måde end de gør nu, hvor det bare sender brugerne videre til dit url. Der er et par forskellige måder de kan gøre dette.

2) ... eller du kan selv gøre noget i din ende. Her er den eneste mulighed vist at du ikke viser siden, men at du i stedet straks redirecter brugerne tilbage til den side de kom fra.
Avatar billede bjorn_jeppesen Nybegynder
12. oktober 2007 - 11:39 #20
halløjsa,
Nielle: Indgangssiden kommer ikke for det bliver jo postet i et serverside script. Der er ingen brugerinteraktion. Men løsningern er blevet at jeg kalder http://minserver/webservice.asmx?op=sendmail&mail="minmail@adresse.dk"

Der er implementeret nu og virker.

Kode i servicen er rimelig simpel. Der skal naturligvis sikkerhed på i live miljø.

<%@ WebService Language="VB" Class="SendMail" %>

Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols

<WebService(Namespace := "http://tempuri.org/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _ 
Public Class fisse
    Inherits System.Web.Services.WebService
   
    <WebMethod()> _
    Public Function SendMail() As String

        'create the mail message
        Dim mail As New System.Net.Mail.MailMessage()
        Dim vBody As String
        vBody = "Test af mailsend"
        'set the addresses
        mail.From = New System.Net.Mail.MailAddress("afsenderen@domain.dk")
        mail.To.Add(request.querystring("mail"))
        'set the content
        mail.Subject = "Test af mailsend med querystring fra post"
        mail.Body = vBody
        'send the message
        Dim smtp As New System.Net.Mail.SmtpClient("minsmtpserver")
        smtp.Send(mail)

 
        Return "OK"
    End Function

End Class
Avatar billede bjorn_jeppesen Nybegynder
12. oktober 2007 - 13:32 #21
Sorry - Der kom et fy ord med og parametrene var ikke korrekt hentet i servicen. Her er den uden fy men med parametre.

<%@ WebService Language="VB" Class="SendMail" %>

Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols

<WebService(Namespace := "http://tempuri.org/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _ 
Public Class sendmail
    Inherits System.Web.Services.WebService
   
    <WebMethod()> _
    Public Function SendMail(email as string) As String

        'create the mail message
        Dim mail As New System.Net.Mail.MailMessage()
        Dim vBody As String
        vBody = "Test af mailsend"
        'set the addresses
        mail.From = New System.Net.Mail.MailAddress("afsenderen@domain.dk")
        mail.To.Add(email)
        'set the content
        mail.Subject = "Test af mailsend med querystring fra post"
        mail.Body = vBody
        'send the message
        Dim smtp As New System.Net.Mail.SmtpClient("minsmtpserver")
        smtp.Send(mail)

 
        Return "OK"
    End Function

End Class
Avatar billede nielle Nybegynder
12. oktober 2007 - 15:52 #22
Fint nok at du har fået løst dit ptoblem. :^)

Måske er det bare mig som er blind, men jeg kan ikke lige se hvorfor den løsning er at foretrække frem for den du havde til at starte med?
Avatar billede bjorn_jeppesen Nybegynder
12. oktober 2007 - 20:47 #23
det er den heller ikke....
Jeg var bare ikke helt på plads med at det skulle være en webservice.
Jeg fik at vide af de fyre der sender post mod en url at det var muligt at lægge et script i starten af en aspx side uden at have nogen øvrig kode på siden. Manden var php fyr uden stor erfaring hverken der eller i asp.net, så det gik helt forbi.

:-)
Avatar billede nielle Nybegynder
14. oktober 2007 - 18:40 #24
En webservice er nu noget het andet end det at "ligge lidt kode ind i en aspx-side". Bl.a. bør en webservice altså kaldes som en - ja, en webservice - og det er slet ikke det samme som blot at kalde et url...

Husk at lukke dette spørgsmål. :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester