webForumDet fria alternativet

Skicka e-mail m h a VB

31 svar · 713 visningar · startad av ampy

ampyMedlem sedan feb. 20011 498 inlägg
#1

Kan man skicka e-mail med hjälp av Visual Basic?

Jag vill alltså skapa ett program där man ska kunna skicka e-mail till valfri e-mailadress.

Om det går, hur gör man detta?

I ASP vet jag att man gör det med hjälp av komponenter, t ex CDONTS eller Jmail. Är det samma sak i VB?

nikoMedlem sedan juni 20022 599 inlägg
#2

Ja, visst. Varken JMail eller CDONTS har ett smack med ASP att göra. De är vanliga Windows COM-komponenter. Project -> References -> Lägg till Jmail eller Microsoft CDO for NTS så kan du köra typat och använda intellisensen. (Det går så klart att använda CreateObject också.)

ampyMedlem sedan feb. 20011 498 inlägg
#3

Ok. :)

ampyMedlem sedan feb. 20011 498 inlägg
#4

Microsoft CDO for NTS finns inte med på min lista. :l
Varför?

Om jag ska använda Jmail, vad ska jag då ange som e-posterver?

nikoMedlem sedan juni 20022 599 inlägg
#5

Microsoft CDO for NTS finns inte med på min lista.

För att den inte är installerad? Eller att den eventuellt heter nåt annat på XP. Har du den virtuella SMTP:en i IIS:en installerad?

Om jag ska använda Jmail, vad ska jag då ange som e-posterver?

Tja .. Nån server du brukar använda. localhost funkar bra om du har en lokal SMTP.

ampyMedlem sedan feb. 20011 498 inlägg
#6

Hur ser koden ut för när man skickar med hjälp av JMail?

Den koden jag har fungerar inte... :(

nikoMedlem sedan juni 20022 599 inlägg
#7

Vad är det som inte funkar då?

    Dim objMail As jmail.Message
    Set objMail = New jmail.Message
    objMail.From = "dinmailadress"
    objMail.FromName = "Ampy"
    objMail.AddRecipient "dinmottagaresadress"
    objMail.Subject = "..."
    objMail.Body = "..."
    objMail.Send "dinsmtpserver"
    Set objMail = Nothing
ampyMedlem sedan feb. 20011 498 inlägg
#8

Felmeddelande:

The message was undeliverable. All servers failed to recieve the message.

nikoMedlem sedan juni 20022 599 inlägg
#9

Vad är det för SMTP du försöker använda då? Om den kräver påloggning så kan du göra det med:

	objMail.MailServerUserName = "xxxxxx"
	objMail.MailServerPassWord = "yyyyyy"

I annat fall kan du få ut ett mer exakt fel om du kör:

    Dim objMail As jmail.Message
    On Error Resume Next
    Set objMail = New jmail.Message
    objMail.Logging = True
    objMail.From = "dinmailadress"
    objMail.FromName = "Ampy"
    objMail.AddRecipient "dinmottagaresadress"
    objMail.Subject = "..."
    objMail.Body = "..."
    objMail.Send "dinsmtpserver"
    If Err.Number <> 0 Then Debug.Print objMail.Log
    Set objMail = Nothing
ampyMedlem sedan feb. 20011 498 inlägg
#10

Jag skrev "localhost" som SMTP-server. Men jag vet inte riktigt om jag har det aktiverat på datorn eller inte.

Jag har självklart IIS installerat.

nikoMedlem sedan juni 20022 599 inlägg
#11

Vad får du för fel med Debug.Print objMail.Log? Om det är "No socket .." så har du inte SMTP:en installerad eller avstängd.

ampyMedlem sedan feb. 20011 498 inlägg
#12

Jag får samma felmeddelande som förut eftersom den raden ligger före.

Om jag skriver in koden "on error resume next" kommer inget meddelande fram.

nikoMedlem sedan juni 20022 599 inlägg
#13

Om jag skriver in koden "on error resume next" kommer inget meddelande fram.

Jo. Det finns i debug-fönstret: View - Immediate Window.

Men i vilket fall som helst: Om du startar IIS-managern så ser du ju om du har SMTP:en installerad eller om den eventuellt bara är avstängd. Eftersom du inte kunde lägga till CDONTS-referenserna tidigare så är nog risken att du får plocka fram Windows-skivan och installera den.

ampyMedlem sedan feb. 20011 498 inlägg
#14

Se bifogad bild för att se hur det ser ut i IIS.

smtp.gif
nikoMedlem sedan juni 20022 599 inlägg
#15

Ser väl bra ut. Men då är ju frågan vad du får för felmeddelande.

Kör:

If Err.Number <> 0 Then msgbox objMail.Log

om det känns bättre.

ampyMedlem sedan feb. 20011 498 inlägg
#16

Det underliga är att det står ingenting i messageboxen. :l

Den kommer alltså fram men det står inget meddelande i den.

nikoMedlem sedan juni 20022 599 inlägg
#17

Eeh? Du har inte glömt:

objMail.Logging = True

?

ampyMedlem sedan feb. 20011 498 inlägg
#18

Se bifogad fil:

error.gif
nikoMedlem sedan juni 20022 599 inlägg
#19

Högerklicka SMTP i IIS Managern->Properties->Access->Relay ..->Only list below. Lägg där till 127.0.0.1 och/eller din kort-IP.

ampyMedlem sedan feb. 20011 498 inlägg
#20

Nu blir det inget felmeddelande eller nånting men mailet kommer aldrig fram till den e-postadress jag skickade till. Har väntat i ungerfär 10 minuter nu.

Varför kommer det aldrig fram?

129 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)