meer server toevoegen aan email programa

Status
Niet open voor verdere reacties.

wakmen

Terugkerende gebruiker
Lid geworden
3 jun 2011
Berichten
1.352
Ik wil een oude programma wat verbeteren.
De programma kan email versturen.Ik wil nu meer server toevoegen vb yahoo zit er niet bij ik gebruik de volgende code.Dus ik kan van een yahoo account geen email sturen naar een andere server bv hotmail.
Maar van hotmail naar yahoo gaat wel.
Wat moet ik er bij toevoegen?
code:
Code:
Try
            Dim message As New MailMessage()
            message.From = New MailAddress(TextBox1.Text)
            message.To.Add(TextBox3.Text)
            message.Subject = TextBox4.Text
            message.Body = RichTextBox1.Text
            If TextBox6.Text <> "" Then message.Attachments.Add(New Attachment(TextBox6.Text))
            Dim Server As String
            If TextBox1.Text.TrimEnd(" ").EndsWith("@live.nl") Or TextBox1.Text.TrimEnd(" ").EndsWith("@hotmail.com") Then
                Server = "smtp.live.com"
            Else
                Server = "smtp.gmail.com"

            End If
            Dim smtp As New SmtpClient(Server)
            smtp.Port = 587
            smtp.EnableSsl = True
            smtp.Credentials = New System.Net.NetworkCredential(TextBox1.Text, TextBox2.Text)
            MsgBox("U bericht wordt verzonden")
            smtp.Send(message)
            MsgBox("Bericht verzonden")
        Catch ex As Exception
            MsgBox(ex.Message, 16 + 4096, Me.Text)
        End Try
 
Laatst bewerkt door een moderator:
Voor Yahoo is het

Server = "smtp.mail.yahoo.com"
smtp.Port = 465
En ssl moet op true staan (Sommige anti virussen vb Avast geven een waarschuwing dat ze de e-mail niet kunnen lezen en dat het potentieel gevaarlijk is wat dan weer afschrikkend kan werken voor de gebruiker)

Of bedoel je hoe je yahoo kan toevoegen in de code zelf?

En er bestaat ook @live.be en @hotmail.be

En ps: MsgBox("U bericht wordt verzonden") dit vind ik persoonlijk irritant als het er telkens opkomt voor je een bericht stuurt, je kan het er niet mee annuleren dus is het beetje nutteloos in mijn ogen.
 
Laatst bewerkt:
Niet alleen hotmail.be en live.be
maar zo'n beetje alle landen denk ik hebben dat wel. hotmail.de noem maar op. dat had ik ook toen ik een mail programma aan 't maken was.
 
ik bedoel hoe je yahoo kan toevoegen in de code zelf?En niet alleen yahoo maar ook andere @hotmail.de enz!
Ik ik zou ook graag willen dat je niet altijd een wachtwoord moet invullen als je een email verstuur dus ik bedoel je moet jou emailadres invullen normaal maar wachtwoord zou ik toch weg willen!
 
Goede vraag,
Je kan proberen met default credentails of het mogelijk maken om het wachtwoord op te slaan, ..
Code:
UseDefaultCredentials = True

En misschien heb je iets aan deze MailHelper class, het is een shared class dus je hoeft geen instanties te maken en ook zijn alle methodes & functies dit ook.
Mediafire mirror (MailHelper.vb)

hopelijk heb je er iets aan, in beide gevallen kan ik je morgen verder helpen.

Veel succes!
 
Ik bedoel het niet zo met het wachtwoord ik bedoelde kan het dat ik helemaal geen wachtwoord hoef in te voeren ?
VB lijk dit?
http://www.youtube.com/watch?v=Q9PKjWpTYv0
Deze code vind ik makkelijker dan de gene die ik heb gegeven maar bij deze vind ik het moeilijk om meerdere servers toe te voegen!

En wat kan ik met die (MailHelper) doen?Moet ik het ergens plaatsen?:o
 
Laatst bewerkt:
de code uit het filmpje werkt niet meer. Microsoft heeft de System.Web.Mail dan ook verwijderd in .Net 3.5 en hoger. En de meeste smtp servers weigeren nu alle relay verbindingen die aangemaakt worden. (gmail, yahoo, live, ..)
Of als je een werkende relay smtp server vindt kan je de code uit het filmpje natuurlijk wel gebruiken.

Dus dan gaan je gebruikers toch hun wachtwoord moeten ingeven.
En de MailHelper is gewoon een class die je kan helpen bij het verkrijgen van de smtp server en port op basis van hun e-mail.

Gewoon heel simpel:
Code:
Server = MailHelper.GetSmtpServer(New System.Net.Mail.MailAdress(TextBox1.Text))
Werkt al voor Yahoo, Live & Hotmail, gmail, verder kan je de nodige smtp servers toevoegen in de code aangezien je de source code al hebt :)

Veel succes!
 
Laatst bewerkt:
Dus je bedoel ik moet een aparte textbox maken waar je BV yahoo.com in moet schrijven?Of hoe zet dat?
En nu gebruik ik een nieuwe code die normaal wel moeten werken via yahoo maar het lukt nog steeds niet.
En welke in het makkelijk?Met een source code of een die van mij die onderaan staat?
code:
Imports System.Net.Mail

Public Class EmailForm
Dim emailaddress As String
Dim password As String
Dim port As Integer
Dim host As String
Private Sub EmailForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
emailaddress = LoginForm.EmailTextBox.Text
password = LoginForm.PasswordTextBox.Text
If emailaddress.ToLower.Contains("@hotmail") Or emailaddress.ToLower.Contains("@live") Or emailaddress.ToLower.Contains("@msn") Then
port = 587
host = "Smtp.live.com"
ElseIf emailaddress.ToLower.Contains("@gmail") Then
port = 587
host = "smtp.gmail.com"
ElseIf emailaddress.ToLower.Contains("@aol") Then
port = 587
host = "smtp.aol.co.uk"
ElseIf emailaddress.ToLower.Contains("@yahoo") Then
port = 465
host = "smtp.mail.yahoo.com"
End If
End Sub
Private Sub SendMail_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SendMail.Click
Dim smtpServer As New SmtpClient
Dim mail As New MailMessage()
smtpServer.Credentials = New Net.NetworkCredential(emailaddress, password)
smtpServer.Port = port
smtpServer.Host = host
smtpServer.EnableSsl = True
mail = New MailMessage()
mail.From = New MailAddress(emailaddress)
mail.To.Add(TextBox1.Text)
mail.Subject = TextBox2.Text
mail.Body = TextBox3.Text
smtpServer.Send(mail)
MsgBox("Email is verzonden!", MsgBoxStyle.Information)
End Sub
End Class


Maar nu werkt het nog steeds niet.
via yahoo een email sturen
 
Laatst bewerkt:
Nee niet echt,
Ik zal het met jouw code doen ;)
Code:
Try
            Dim message As New MailMessage()
            message.From = New MailAddress(TextBox1.Text)
            message.To.Add(TextBox3.Text)
            message.Subject = TextBox4.Text
            message.Body = RichTextBox1.Text
            If TextBox6.Text <> "" Then message.Attachments.Add(New Attachment(TextBox6.Text))
            Dim Server As String = MailHelper.GetSmtpServer(New System.Net.Mail.MailAdress(TextBox1.Text))
            Dim smtp As New SmtpClient(Server)
            smtp.Port = MailHelper.GetPortFromSmtp(smtp)
            smtp.EnableSsl = True
            smtp.Credentials = New System.Net.NetworkCredential(TextBox1.Text, TextBox2.Text)
            smtp.Send(message)
            MsgBox("Bericht verzonden")
        Catch ex As Exception
            MsgBox(ex.Message, 16 + 4096, Me.Text)
        End Try
 
En ik heb nog een vraagje waar moet ik source code plaatsen?Ben ik vergeten.:o
 
Ga naar je project -> add -> existing item -> en zoek naar de MailHelper.vb bestand en voeg deze toe :)
 
Je hebt een foute gemaakt in de code die fout komt door mij :o
ik heb 2 forms gemaakt!Eerst moetje jouw inloggen met jou email en daar na word form2 weergegeven daar moet je alleen je aan wie je de bericht verstuur typen onderwerp en bericht ook.
Dus ik krijg een fouten.
Bekijk bijlage 149189
 
Laatst bewerkt:
Gewoon in je form2 deze code toevoegen:
Code:
Private _gebruikersnaam As String
Public Property Gebruikersnaam As String
Get
    retrun _gebruikersnaam
End Get
Set(Byval value As String)
    _gebruikersnaam = value
End Set 

Private _wachtwoord As String
Public Property Wachtwoord As String
Get
    retrun _wachtwoord
End Get
Set(Byval value As String)
    _wachtwoord = value
End Set

En dan voor dat je in je eerste form naar form2 gaat met
Code:
Form2.Show()

Doe je gewoon:
Code:
Form2.Gebruikersnaam = TextBox1.Text
Form2.Wachtwoord = TextBox2.Text
Form2.Show()

En ik had nog een foutje in de code -> hier is de aangepaste versie:
Code:
Try
            Dim message As New MailMessage()
            message.From = New MailAddress(Me.Gebruikersnaam)
            message.To.Add(TextBox3.Text)
            message.Subject = TextBox4.Text
            message.Body = RichTextBox1.Text
            If TextBox6.Text <> "" Then message.Attachments.Add(New Attachment(TextBox6.Text))
            Dim Server As String = MailHelper.GetSmtpServer(New System.Net.Mail.MailAddress(Me.Gebruikersnaam))
            Dim smtp As New SmtpClient(Server)
            smtp.Port = MailHelper.GetPortFromSmtp(smtp)
            smtp.EnableSsl = True
            smtp.Credentials = New System.Net.NetworkCredential(Me.Gebruikersnaam, Me.Wachtwoord)
            smtp.Send(message)
            MsgBox("Bericht verzonden")
        Catch ex As Exception
            MsgBox(ex.Message, 16 + 4096, Me.Text)
        End Try
 
Als ik jou code er bij toevoeg dan krijg ik paar errors zie bericht 12
En bij de code die ik gebruik weet ik niet erg precies waar ik deze code moet plaatsen!Dus deze
code:
Server = MailHelper.GetSmtpServer(New System.Net.Mail.MailAdress(TextBox1.Text))

En waarom staat er daar Textbox1.text waar voor dient het?
 
De eerste fout moet dit worden (was een d vergeten :p)
Code:
System.Net.Mail.MailAddress

De laatste fout moet dit worden ipv GetSmtpServer
Code:
GetSmtpHost

En het laatste was omdat ik ervan uitging dat TextBox1.Text het email adres was, maar dit kan je vervangen door:
Code:
Me.emailaddress

En dat kan je vraag over waar te plaatsen,
eerst had je dit:
Code:
Dim Server As String
            If TextBox1.Text.TrimEnd(" ").EndsWith("@live.nl") Or TextBox1.Text.TrimEnd(" ").EndsWith("@hotmail.com") Then
                Server = "smtp.live.com"
            Else
                Server = "smtp.gmail.com"

            End If

Vervang dat maar door:
Code:
Dim Server As String = MailHelper.GetSmtpServer(New System.Net.Mail.MailAddress(Me.emailaddress))

Hopelijk werkt dit wel ;)
 
alle errors zijn weg eens kijken of het nu wel werkt! :D
Ik heb het geprobeerd als ging goed totdat ik op het knoop verzenden drukte er kwam direct een error.
Bekijk bijlage 149205
 
Laatst bewerkt:
Ik heb wat aangepast maar ik zit met het volgende probleem!zie foto
Bekijk bijlage 149237
De textbox waar ik mijn email en wachtwoord in moet vullen!Staan in een andere form!
Hoe kan ik die probleem fixen?
De textboxen heten

"EmailTextBox"Waar je je email moet invullen
"PasswordTextBox" Waar ik mijn Wachtwoord moet invullen!
 
Laatst bewerkt:
Kijk eens naar post #13,

Maar goed,
Als je dus in je emailform deze code toevoegd:
Code:
Private _gebruikersnaam As String
Public Property Gebruikersnaam As String
Get
    retrun _gebruikersnaam
End Get
Set(Byval value As String)
    _gebruikersnaam = value
End Set 
End Property

Private _wachtwoord As String
Public Property Wachtwoord As String
Get
    retrun _wachtwoord
End Get
Set(Byval value As String)
    _wachtwoord = value
End Set
End Property

En dan gaje naar je Loginform,
Daar gaje bij de button_click event deze code ergens zien staan:
Code:
EmailForm.Show()

Nu plaats je deze code juist boven EmailForm.Show(),
Zodat je dit bekomt:
Code:
EmailForm.Gebruikersnaam = EmailTextBox.Text
EmailForm.Wachtwoord = PasswordTextBox.Text
EmailForm.Show()

En nu kan je in je code,
Voor hun e-mail dit gebruiken:
Code:
Me.Gebruikersnaam

En voor hun wachtwoord dit:
Code:
Me.Wachtwoord
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan