Enkelt att skicka mail - VB
Förord
Innehåll
'Såhär skickar jag mail från min sajt:
'KLART
Nu fungerar det att skicka mail. Nedan följer lite tips på hur man kan snygga till mailet.
Ibland låter man användaren skriva in det meddelande som ska skickas. Då kan det behövas snyggas till lite innan man skickar det:
Det kan t.ex vara om användaren skriver en internetadress. Istället för att skriva ut adressen som vanlig text vill man göra om den till en länk.
Ett annat exempel är om användaren delar upp sin text i stycken genom att trycka enter. Då får man fånga upp det och infoga radbryt, annars kommer texten i ett enda långt stycke ändå.
Här är en funktion som fixar det jag nämnt ovan:
Hur använder man då den här funktionen? Jo, du börjar med att lägga funktionen i code-behind.
Meddelandet i mailet ovan ser ut så här för tillfället:
MailMessage.Body = "Smile, and the world will smile with you!"
Istället för att skriva meddelandet i koden vill vi hämta input från en textbox på sidan. Lägg till en textbox och kalla den t.ex txtMessage.
Nu kan du byta ut "Smile, and the world will smile with you!" mot txtMessage.Text. Det innebär att det som användaren har skrivit kommer att skickas som MailMessage.Body (dvs som mailets innehåll). Vi har inte fixat till texten än utan vi skickar den precis som den är. Men vi ville ju först snygga till texten innan vi skickar den så då använder vi får funktion så här:
MailMessage.Body = FixarTexten(txtMessage.Text)
Vad som händer är att vi skickar in texten, som användaren har skrivit i textfältet txtMessage, till funktionen FixarTexten. Funktionen returnerar sedan den tillsnyggade texten och det är den som skickas som MailMessage.Body
'deklarerar smtpklient
Dim SmtpClient As SmtpClient = New SmtpClient("smtp.mittForetag.se")
'jag loggar in för att kunna skicka mail
SmtpClient.Credentials = New NetworkCredential("annelie@mittForetag.se", "mittLosenord")
'deklarerar meddelande
Dim MailMessage As MailMessage = New MailMessage()
'skriver vilken adress som ska anges som avsändare på mailen jag skickar
MailMessage.From = New MailAddress("info@mittForetag.se")
'här skriver jag en eller flera mailadresser som mailet ska skickas till
'Man kan hårdkoda mailadressen, som nedan
'Eller hämta adressen som input från användaren. Ex från en textbox
MailMessage.To.Add(New MailAddress("namn@hotmail.com"))
MailMessage.To.Add(New MailAddress("namn@gmail.com"))
'osv...
'skriver ämnet för meddelandet
MailMessage.Subject = "Det här är ett testmail"
'skriver själva meddelandet
MailMessage.Body = "Smile, and the world will smile with you!"
'anger om meddelandet ska visas i text- eller html-format
MailMessage.IsBodyHtml = True
'skickar
SmtpClient.Send(MailMessage)
'KLART
Nu fungerar det att skicka mail. Nedan följer lite tips på hur man kan snygga till mailet.
Ibland låter man användaren skriva in det meddelande som ska skickas. Då kan det behövas snyggas till lite innan man skickar det:
Det kan t.ex vara om användaren skriver en internetadress. Istället för att skriva ut adressen som vanlig text vill man göra om den till en länk.
Ett annat exempel är om användaren delar upp sin text i stycken genom att trycka enter. Då får man fånga upp det och infoga radbryt, annars kommer texten i ett enda långt stycke ändå.
Här är en funktion som fixar det jag nämnt ovan:
Private Function FixarTexten(ByVal Text As String) As String
'Du skickar in en text som du vill snygga till
'1) internetadresser blir länkar
'först om http:// finns med i länken som användaren har skrivit:
Text = Regex.Replace(Text, "(\bhttp://\S+|\bnews://\S+|\bftp://\S+)", "$1", RegexOptions.IgnoreCase)
'Sedan om inte http:// finns utan bara www:
Text = Regex.Replace(Text, "(www\.\S+)", " $1", RegexOptions.IgnoreCase)
'2) enterslag blir radbrytning
Text = Text.Replace(Environment.NewLine, "
")
'3) funktionen returnerar texten
Return Text
Hur använder man då den här funktionen? Jo, du börjar med att lägga funktionen i code-behind.
Meddelandet i mailet ovan ser ut så här för tillfället:
MailMessage.Body = "Smile, and the world will smile with you!"
Istället för att skriva meddelandet i koden vill vi hämta input från en textbox på sidan. Lägg till en textbox och kalla den t.ex txtMessage.
Nu kan du byta ut "Smile, and the world will smile with you!" mot txtMessage.Text. Det innebär att det som användaren har skrivit kommer att skickas som MailMessage.Body (dvs som mailets innehåll). Vi har inte fixat till texten än utan vi skickar den precis som den är. Men vi ville ju först snygga till texten innan vi skickar den så då använder vi får funktion så här:
MailMessage.Body = FixarTexten(txtMessage.Text)
Vad som händer är att vi skickar in texten, som användaren har skrivit i textfältet txtMessage, till funktionen FixarTexten. Funktionen returnerar sedan den tillsnyggade texten och det är den som skickas som MailMessage.Body
Gert Lindholm
förstora en rad eller byta färg på en text eller lägga in en bild?
Christoffer Rosén
Bra kommentarer i koden, uppskattas.