none
Process.Start zum versenden einer Mail verwenden und Mail muss Plain Text sein RRS feed

  • Frage

  • Hallo,

    ich habe in Visual Studio ein Programm erstellt, welches den Inhalt mehrerer Textboxen als Mail versenden soll.

    Mit Process.Start funktioniert das auch wunderbar und genau in dem Format, in dem ich es haben will.

    Nur leider wird die Mail immer wieder als Html erstellt und ich habe noch keine Möglichkeit gefunden über Process.Start eine reine Plain Text Mail zu versenden.

    Weiß irgendjemand, ob es da eine Möglichkeit gibt, dass meine Mail nur als Plain Text verschick wird?

    VG & Danke schonmal

    Montag, 9. Januar 2017 15:23

Antworten

  • Hallo Sarina,

    mein Beispiel geht davon aus, dass lokal ein IIS mit SMTP Dienst installiert ist. Das ist allerdings nicht überall der Fall. Für Tests kann man auch ein lokales Pickup Verzeichnis angeben, dort werden dann die .eml Dateien erzeugt, die man sich bspw. mit Outlook ansehen kann. Ein Versand findet in dem Fall aber nicht statt.

    Du kannst alternativ auch einen Direktversand vornehmen, hierfür bräuchtest Du dann einen SMTP Server und die entsprechenden Zugangsdaten. Der Code sieht in dem Fall ein klein wenig anders aus.

    Imports System.Net.Mail
    
    Public Class Mail
    
        Public Shared Sub Send()
    
        Dim SmtpClient As New SmtpClient()
            SmtpClient.DeliveryMethod = SmtpDeliveryMethod.Network
            SmtpClient.Host           = "dein.mailserver.tld"
            SmtpClient.Credentials    = New NetworkCredential( "SmtpUsername", "SmtpPassword" )
     
        Dim SmtpMessage As New MailMessage()
            SmtpMessage.To.Add( New MailAddress( "seine@adresse.tld", "Sein Name" ) )
            SmtpMessage.From    = New MailAddress( "deine@adresse.tld", "Dein Name" )
            SmtpMessage.Subject = "Betreff"
            SmtpMessage.Body    = "Inhalt"
     
            SmtpClient.Send( SmtpMessage )
    
        End Sub
    
    End Class

    Falls Du eine verschlüsselte Verbindung verwendest bzw. verwenden musst:

    Imports System.Net.Mail
    
    Public Class Mail
    
        Public Shared Sub Send()
    
        Dim SmtpClient As New SmtpClient()
            SmtpClient.DeliveryMethod = SmtpDeliveryMethod.Network
            SmtpClient.Host           = "dein.mailserver.tld"
            SmtpClient.Port           = <Portnummer> ' bspw. 587
            SmtpClient.Credentials    = New NetworkCredential( "SmtpUsername", "SmtpPassword" )
            SmtpClient.EnableSsl      = True
     
        Dim SmtpMessage As New MailMessage()
            SmtpMessage.To.Add( New MailAddress( "seine@adresse.tld", "Sein Name" ) )
            SmtpMessage.From    = New MailAddress( "deine@adresse.tld", "Dein Name" )
            SmtpMessage.Subject = "Betreff"
            SmtpMessage.Body    = "Inhalt"
     
            SmtpClient.Send( SmtpMessage )
    
        End Sub
    
    End Class

    HTH


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Dienstag, 10. Januar 2017 08:38
    Moderator
  • Nur leider wird die Mail immer wieder als Html erstellt und ich habe noch keine Möglichkeit gefunden über Process.Start eine reine Plain Text Mail zu versenden.

    Weiß irgendjemand, ob es da eine Möglichkeit gibt, dass meine Mail nur als Plain Text verschick wird?

    Die Grundeinstellung deines E-Mail Clients entscheidet darüber wie der via mailto gesandte Text behandelt wird, d. h. die Einstellung für Plain Text musst Du dort vornehmen. Bei Outlook findet sich diese Einstellung unter den Optionen für "E-Mail".


    - Gruß Florian

    Dienstag, 10. Januar 2017 08:58

Alle Antworten

  • Hi,

    muss der Versand wirklich über den lokal auf dem ausführenden PC installierten Mailclient erfolgen? Falls ja: Ist denn überhaupt gesichert, dass auf dem PC ein Mailclient installiert ist, den Du aufrufen kannst?

    Sinnvoller erscheint es mir (sofern nicht zwingende Gründe dagegen sprechen), die Mail über etwas wie:

    Imports System.Net.Mail
    
    Public Class Mail
    
        Public Shared Sub Send()
    
        Dim SmtpClient As New SmtpClient()
            SmtpClient.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis
     
        Dim SmtpMessage As New MailMessage()
            SmtpMessage.To.Add( New MailAddress( "seine@adresse.tld", "Sein Name" ) )
            SmtpMessage.From    = New MailAddress( "deine@adresse.tld", "Dein Name" )
            SmtpMessage.Subject = "Betreff"
            SmtpMessage.Body    = "Inhalt"
     
            SmtpMessage.Attachments.Add( New Attachment( "X:\ordner\datei.ext" ) )
     
            SmtpClient.Send( SmtpMessage )
    
        End Sub
    
    End Class

    oder ähnliches zu senden. Dort hast Du jegliche Möglichkeit, Plaintext, HTML, ... zu senden.

    Weitere Infos zu SmtpClient findest Du bspw. hier:

      https://msdn.microsoft.com/de-de/library/system.net.mail.aspx

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Montag, 9. Januar 2017 15:30
    Moderator
  • Hey,

    habe das jetzt mal so ausgeführt, jedoch bekomme ich dabei die Fehlermeldung:
    "IIS-Pickup-Verzeichnis kann nicht abgerufen werden"

    Woran kann das liegen?

    Viele Grüße
    Sarina

    Dienstag, 10. Januar 2017 07:08
  • Hallo Sarina,

    mein Beispiel geht davon aus, dass lokal ein IIS mit SMTP Dienst installiert ist. Das ist allerdings nicht überall der Fall. Für Tests kann man auch ein lokales Pickup Verzeichnis angeben, dort werden dann die .eml Dateien erzeugt, die man sich bspw. mit Outlook ansehen kann. Ein Versand findet in dem Fall aber nicht statt.

    Du kannst alternativ auch einen Direktversand vornehmen, hierfür bräuchtest Du dann einen SMTP Server und die entsprechenden Zugangsdaten. Der Code sieht in dem Fall ein klein wenig anders aus.

    Imports System.Net.Mail
    
    Public Class Mail
    
        Public Shared Sub Send()
    
        Dim SmtpClient As New SmtpClient()
            SmtpClient.DeliveryMethod = SmtpDeliveryMethod.Network
            SmtpClient.Host           = "dein.mailserver.tld"
            SmtpClient.Credentials    = New NetworkCredential( "SmtpUsername", "SmtpPassword" )
     
        Dim SmtpMessage As New MailMessage()
            SmtpMessage.To.Add( New MailAddress( "seine@adresse.tld", "Sein Name" ) )
            SmtpMessage.From    = New MailAddress( "deine@adresse.tld", "Dein Name" )
            SmtpMessage.Subject = "Betreff"
            SmtpMessage.Body    = "Inhalt"
     
            SmtpClient.Send( SmtpMessage )
    
        End Sub
    
    End Class

    Falls Du eine verschlüsselte Verbindung verwendest bzw. verwenden musst:

    Imports System.Net.Mail
    
    Public Class Mail
    
        Public Shared Sub Send()
    
        Dim SmtpClient As New SmtpClient()
            SmtpClient.DeliveryMethod = SmtpDeliveryMethod.Network
            SmtpClient.Host           = "dein.mailserver.tld"
            SmtpClient.Port           = <Portnummer> ' bspw. 587
            SmtpClient.Credentials    = New NetworkCredential( "SmtpUsername", "SmtpPassword" )
            SmtpClient.EnableSsl      = True
     
        Dim SmtpMessage As New MailMessage()
            SmtpMessage.To.Add( New MailAddress( "seine@adresse.tld", "Sein Name" ) )
            SmtpMessage.From    = New MailAddress( "deine@adresse.tld", "Dein Name" )
            SmtpMessage.Subject = "Betreff"
            SmtpMessage.Body    = "Inhalt"
     
            SmtpClient.Send( SmtpMessage )
    
        End Sub
    
    End Class

    HTH


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Dienstag, 10. Januar 2017 08:38
    Moderator
  • Nur leider wird die Mail immer wieder als Html erstellt und ich habe noch keine Möglichkeit gefunden über Process.Start eine reine Plain Text Mail zu versenden.

    Weiß irgendjemand, ob es da eine Möglichkeit gibt, dass meine Mail nur als Plain Text verschick wird?

    Die Grundeinstellung deines E-Mail Clients entscheidet darüber wie der via mailto gesandte Text behandelt wird, d. h. die Einstellung für Plain Text musst Du dort vornehmen. Bei Outlook findet sich diese Einstellung unter den Optionen für "E-Mail".


    - Gruß Florian

    Dienstag, 10. Januar 2017 08:58
  • Danke, genau das wollte ich :)
    Dienstag, 10. Januar 2017 15:17
  • Danke, genau das wollte ich :)

    Die Problemstellen, die ich oben beschrieben hatte, sind dir aber bewusst, oder? (Anderer Mailclient, gar kein Mailclient, ...)


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Dienstag, 10. Januar 2017 16:06
    Moderator