---
title: "MMSrecieve + ASP.net"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/169606-mmsrecieve-asp-net"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "fakenick!"
published: "2008-03-04T15:36:31.000Z"
updated: "2008-03-07T12:41:30.000Z"
replies: 8
views: 785
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/169606-mmsrecieve-asp-net"
---

# MMSrecieve + ASP.net

## #1 — fakenick!, 2008-03-04T15:36Z

Hejsan!

Mitt nuvarande webbhotell stödjer bara ASP.net mediumthrust. 
Därför har jag satt upp en egen server på min maskin med ASP.net 
för att få MMS-mottagarscriptet från MOSMS att fungera... 
Scriptet för att få ner MMS:et fungerar klockrent... 
Nu vill jag lägga in värdena jag får med i MMS:et till en databas...

Just nu försöker jag att i ASP.net-dokumentet (på min dator) göra en redirect till webbhotellet för att där lägga till informationen från MMS:et med hjälp av querystring från ASP.net-dokumentet... 

Där strular det till sig... 

Så fort det är mellanrum i response.redirecten så fungerar det inte... 
Så här ser den ut: 

```
Response.Redirect("http://www.test.se/mms.asp?nr="+ phone_number +"&sms="+ subject +"&mms="+ mmset +"");
```

Fungerar klockrent så länge det inte är mellanrum i "subjectet" där det är tänkt att skriva titel och ett kortfattat innehåll. 

Vad kan man göra åt detta?

Tacksam för svar
Mvh John

Permalänk: https://www.webforum.nu/p/169606

## #2 — fakenick!, 2008-03-04T15:40Z

Jag vill även göra MMS-namnet ( mimebody.GetFilename() ) till en string.... Hur gör man det? Försökt att deklarera den överst i dokumentet i olika varianter utan framsteg... 

Postar hela MMS-mottagarscriptet här: 

```
using System;
using System.Collections;
using System.IO;
using MIME;

public partial class MMSReceive : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //Mottagning av MMS från MO-SMS
        string subject = Request.ServerVariables["HTTP_MOSMS_SUBJECT"];
        string phone_number = Request.ServerVariables["HTTP_MOSMS_NUMBER"];
        string mmset = "tjena2";

        string headers = "Content-Type: " + Request.ServerVariables["CONTENT_TYPE"] + "\n";
        headers += "Content-Length: " + Request.ServerVariables["CONTENT_LENGTH"] + "\n";
        StreamReader stream = new StreamReader(Request.InputStream, System.Text.Encoding.Default);
        string mimedata = stream.ReadToEnd();

        try
        {
            MimeMessage mms = new MimeMessage();
            mms.LoadBody(headers + "\r\n\r\n" + mimedata);

            ArrayList mmsparts = new ArrayList();
            mms.GetBodyPartList(mmsparts);
            for (int i = 0; i < mmsparts.Count; i++)
            {
                //Spara alla filer i mms mappen.
                MimeBody mimebody = (MimeBody)mmsparts[i];
                if (mimebody.GetFilename() != null)
                    mimebody.WriteToFile(Server.MapPath("mms") + "\\" + [B]mimebody.GetFilename());[/B]

            }
            Response.Redirect("http://www.test.se/mms.asp?nr="+ phone_number +"&sms="+ subject +"&mms="+ mmset +"");
        }
        catch (Exception err)
        {
            //Logga felmeddelandet err.StackTrace();            
            Response.Write("Något blev fel, försök igen");
        }
    }
}
```

Permalänk: https://www.webforum.nu/p/2086250

## #3 — emission, 2008-03-04T23:01Z

> **fakenick! skrev:**
>
> Fungerar klockrent så länge det inte är mellanrum i "subjectet" där det är tänkt att skriva titel och ett kortfattat innehåll. 
> 
> 
> Vad kan man göra åt detta?

Alla värden som läggs i en querystring måste URL-kodas.

```
Response.Redirect("http://www.test.se/mms.asp?nr="+ Server.UrlEncode(phone_number) +"&sms="+ Server.UrlEncode(subject) +"&mms="+ Server.UrlEncode(mmset));
```

Avsluta inte strängar med & ""

> **fakenick! skrev:**
>
> Jag vill även göra MMS-namnet (
>
> > **fakenick! skrev:**
> >
> > Jag vill även göra MMS-namnet ( mimebody.GetFilename() ) till en string.... Hur gör man det?
>
> 
> 
> Det är den ju redan... eller vad syftar du på?
> 
>
>
> ```
> string filename= mimebody.GetFilename();
> ```

Permalänk: https://www.webforum.nu/p/2086322

## #4 — fakenick!, 2008-03-05T00:11Z

Jag försöker göra det....

Men det blir då hela tiden fel.

Ifall jag lägger: 

```
string filename = mimebody.GetFilename();
```

 

där man deklarerar alla andra "strings" så får jag detta meddelande: 

"The name 'mimebody' does not exist in the current context"

...Och ifall jag den i ifsatsen där den sparar ner filen så får jag detta: 

"Embedded statement cannot be a declaration or labeled statement"

Men nu funderar jag på att spara ut filen med "datum + tid + filändelse" istället... Hur skulle man kunna göra det i ASP.net? 

Original: 

```
mimebody.WriteToFile(Server.MapPath("mms") + "\\" + mimebody.GetFilename());
```

Detta är min bästa gissning: 

```
using System;
using System.Collections;
using System.IO;
using MIME;

public partial class MMSReceive : System.Web.UI.Page
{

    protected void Page_Load(object sender, EventArgs e)
    {
        //Mottagning av MMS från MO-SMS
[B]        System.DateTime OrderDate = new System.DateTime();
        String DateToString = "";
        OrderDate = System.DateTime.Now;[/B]

        string subject = Request.ServerVariables["HTTP_MOSMS_SUBJECT"];
        string phone_number = Request.ServerVariables["HTTP_MOSMS_NUMBER"];
        string headers = "Content-Type: " + Request.ServerVariables["CONTENT_TYPE"] + "\n";
        headers += "Content-Length: " + Request.ServerVariables["CONTENT_LENGTH"] + "\n";
        StreamReader stream = new StreamReader(Request.InputStream, System.Text.Encoding.Default);
        string mimedata = stream.ReadToEnd();

        try
        {
            MimeMessage mms = new MimeMessage();
            mms.LoadBody(headers + "\r\n\r\n" + mimedata);

            ArrayList mmsparts = new ArrayList();
            mms.GetBodyPartList(mmsparts);
            for (int i = 0; i < mmsparts.Count; i++)
            {
                //Spara alla filer i mms mappen.
                MimeBody mimebody = (MimeBody)mmsparts[i];
                if (mimebody.GetFilename() != null)
                    mimebody.WriteToFile(Server.MapPath("mms") + "\\" + [B]OrderDate.ToString()[/B]);

            }
            Response.Redirect("http://www.test.se/mms.asp?nr="+ Server.UrlEncode(phone_number) +"&sms="+ Server.UrlEncode(subject) +"&mms="+ Server.UrlEncode(subject));
        }
        catch (Exception err)
        {
            //Logga felmeddelandet err.StackTrace();            
            Response.Write("Något blev fel, försök igen");
        }
    }
}
```

...Men det gick ju inte så bra.... "Något blev fel, försök igen"... :-)

Permalänk: https://www.webforum.nu/p/2086329

## #5 — fakenick!, 2008-03-05T00:12Z

urlencode fungerade bra btw... :-)

Permalänk: https://www.webforum.nu/p/2086330

## #6 — emission, 2008-03-05T01:45Z

> **fakenick! skrev:**
>
> Jag försöker göra det....

Varför? Om du inte använder filnamnet någon annanstans  så är det väl bara onödigt att lägga det i en variabel?

> **fakenick! skrev:**
>
> Ifall jag lägger: 
> 
>
>
> ```
> string filename = mimebody.GetFilename();
> ```
>
>  
> 
> där man deklarerar alla andra "strings" så får jag detta meddelande: 
> 
> "The name 'mimebody' does not exist in the current context"

Ja, du kan inte använda mimebody förrän mimebody finns, vilket är en bra bit ner.

> **fakenick! skrev:**
>
> ...Och ifall jag den i ifsatsen där den sparar ner filen så får jag detta: 
> 
> "Embedded statement cannot be a declaration or labeled statement"

Du måste använda måsvingar {} om if-satsen spänner över flera rader.

> **fakenick! skrev:**
>
> Men nu funderar jag på att spara ut filen med "datum + tid + filändelse" istället... Hur skulle man kunna göra det i ASP.net?

Ungefär som du redan gjort, men använd strängformatering eller de olika delbitarna (Year, Month etc.) som finns på DateTime-klassen för att skapa filnamnet. Ett datum använt som det är riskerar att innehålla tecken som inte får finnas i filnamn.

```
System.DateTime OrderDate = new System.DateTime();
        String DateToString = "";
        OrderDate = System.DateTime.Now;
```

kan skrivas

```
DateTime OrderDate = DateTime.Now;
DateToString = OrderDate.ToString();
```

eller för all del

```
DateToString = DateTime.Now.ToString();
```

Permalänk: https://www.webforum.nu/p/2086332

## #7 — fakenick!, 2008-03-05T19:32Z

Vad jag försöker göra är att skicka med filnamnet i querystringen så att filnamnet sparas i en databas. 

Men nunu vill jag ha filnamnet så här: 

080305202520\.jpg (datumet då filen skapas + filändelse)

Hur skall jag göra? 

I vanliga asp så skulle jag göra så här: 

```
newdate = replace(now(),"-","")
```

 etc för att få bort sträck, mellanrum och kolon..

sedan skulle jag splita "mimebody.GetFilename()" vid punkten... Och sedan skriva ut filändelsen efter datumet så här: 

```
newdate = ""& newdate &""& filend &""
```

Hur gör man? Och vart skall man implementera den koden i den kod jag har. Blir smått snurrig av vad man får och inte får göra i ASP.NET då jag bara tidigare använt ASP. 

Mvh John

Permalänk: https://www.webforum.nu/p/2086436

## #8 — emission, 2008-03-06T23:10Z

> **fakenick! skrev:**
>
> Vad jag försöker göra är att skicka med filnamnet i querystringen så att filnamnet sparas i en databas.

OK. Visst kan du lagra det i en variabel (filename=mimebody.GetFilename()) och sedan UrlEncoda den, eller köra direkt med Server.UrlEncode(mimebody.GetFilename())

> **fakenick! skrev:**
>
> Men nunu vill jag ha filnamnet så här: 
> 
> 080305202520\.jpg (datumet då filen skapas + filändelse)
> 
> 
> Hur skall jag göra? 
> 
> I vanliga asp så skulle jag göra så här: 
> 
>
>
> ```
> newdate = replace(now(),"-","")
> ```
>
>  etc för att få bort sträck, mellanrum och kolon..

Så kan du göra i C# också (men med DateTime.Now.ToString()), men för att försäkra sig om att formatet blir rätt (oavsett datumformatsinställningar), så bör du använda

```
DateTime.Now.ToString("yyMMddHHmmss")
```

i stället. Det löser hela biffen.

> **fakenick! skrev:**
>
> sedan skulle jag splita "mimebody.GetFilename()" vid punkten...

Helt OK, men .NET ger dig den smidiga funktionen Path.GetExtension(mimebody.GetFilename()) som du kan använda (ligger  i System.IO)

> **fakenick! skrev:**
>
> Och sedan skriva ut filändelsen efter datumet så här: 
> 
>
>
> ```
> newdate = ""& newdate &""& filend &""
> ```

Då bör du läsa [denna](http://www.webforum.nu/showthread.php?t=142490&highlight=tomstr%E4ngskonkatenering)  tråden.

Permalänk: https://www.webforum.nu/p/2086642

## #9 — fakenick!, 2008-03-07T12:41Z

Endast filändelse saknas

Så här ser min kod ut just nu... Allt fungerar förutom att jag inte får ut filändelsen till min response.redirect... 

Hur skall jag skriva för att få in allt i en variabel, på rätt ställe så att mimebody hänger med samt datumet?

```
        try
        {
            MimeMessage mms = new MimeMessage();
            mms.LoadBody(headers + "\r\n\r\n" + mimedata);

            ArrayList mmsparts = new ArrayList();
            mms.GetBodyPartList(mmsparts);
            for (int i = 0; i < mmsparts.Count; i++)
            {
                //Spara alla filer i mms mappen.
                MimeBody mimebody = (MimeBody)mmsparts[i];
                if (mimebody.GetFilename() != null)
                    mimebody.WriteToFile(Server.MapPath("mms") + "\\"+ DateTime.Now.ToString("yyMMddHHmmss") + Path.GetExtension(mimebody.GetFilename()));

                    string newfilename = ""+ DateTime.Now.ToString("yyMMddHHmmss") + Path.GetExtension(mimebody.GetFilename()) +"";

            }
            Response.Redirect("http://www.test.asp?nr="+ Server.UrlEncode(phone_number) +"&sms="+ Server.UrlEncode(subject) +"&mms="+ Server.UrlEncode(newfilename));
```

Fick allting att fungera (förutom filändelsen) när jag lade in 

```
DateTime.Now.ToString("yyMMddHHmmss") + Path.GetExtension(mimebody.GetFilename())
```

 i response.redirecten...

Mvh John

Permalänk: https://www.webforum.nu/p/2086708

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/169606-mmsrecieve-asp-net
