Laden...

Mailsettings aus dem Configfile werden ignoriert

Erstellt von Alter Schwede vor 15 Jahren Letzter Beitrag vor 15 Jahren 2.138 Views
A
Alter Schwede Themenstarter:in
10 Beiträge seit 2008
vor 15 Jahren
Mailsettings aus dem Configfile werden ignoriert

Hallo,
Ich möchte aus meinem c# code ein mail inkl. Attachment verschicken. Dazu habe ich in meiner app.config den smtp host eingetragen um die property nicht extra auslesen zu müssen. Leider werden die settings ignoriert und ich bekomme weiter unten angeführte Exception.

Ich habe in meiner app.config folgendes definiert:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
...
  </configSections>
  <system.net>
    <mailSettings>
      <smtp>
        <network host="Srv-wdev04" defaultCredentials="true"/>
      </smtp>
    </mailSettings>
  </system.net>
  <applicationSettings>
...
   </applicationSettings>
</configuration>

und folgenden Code in meiner Klasse:


private static int SendMail(OutputChannel WorkingChannel, byte[] SignedDocument, string FileName)
{
    try
    {
        MailMessage mail = new MailMessage();

        mail.To.Add(WorkingChannel.Adress);     // recipient
        mail.Subject = "xxx";             // subject
        mail.Body = "bla bla bla "; // mailtext
        mail.From = new MailAddress("coderz@xxx.at"); // sender

        // Attachment hinzufügen
        MemoryStream stream = new MemoryStream(SignedDocument);
        Attachment MyAttachment = new Attachment(stream, FileName);
        mail.Attachments.Add(MyAttachment);

        System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();

        smtp.Send(mail);
    }
    catch (Exception ex)
    {
        return -1;
    }

    return 0;
}

hier die Exception:
System.InvalidOperationException: The SMTP host was not specified.
at System.Net.Mail.SmtpClient.CheckHostAndPort()
at System.Net.Mail.SmtpClient.Send(MailMessage message)

vielen dank im voraus für eure hilfe
lg
as

365 Beiträge seit 2007
vor 15 Jahren

System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();

Da fehlt noch dein Host im SmptClient. Woher soll er sonst wissen worüber er
die Mails versendet?!

Dokumentation in MSDN : Klick mich

greetz kubi.

Edit : Link war falsch.

D
496 Beiträge seit 2005
vor 15 Jahren

du teilst dem smptclient object ja auch nicht mit welcher der host ist
in etwa so

System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("Srv-wdev04");

//edit: zu spät

"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."

X
1.177 Beiträge seit 2006
vor 15 Jahren

huhu,

Es geht lt. Doku auch ohne den Mail-Host. Denn dann wird der auf dem Server eingetragene Host verwendet (rsp. der in der entsprechenden *.config) oder der lokale SMTP-Server - daher ja die Frage.

zum ersten Link: klick mich

Initialisiert eine neue Instanz der SmtpClient-Klasse mit den Einstellungen der Konfigurationsdatei

Warum er es bei Dir nicht macht weiss ich leider nicht.

🙂

Xynratron

Herr, schmeiss Hirn vom Himmel - Autsch!

Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.

A
Alter Schwede Themenstarter:in
10 Beiträge seit 2008
vor 15 Jahren

Wie Xynratron richtig sagt, möchte ich den in seinem msdn link beschriebenen weg gehen.
Definition der smtp settings über die mailsettings im app.config.

lg
as

G
497 Beiträge seit 2006
vor 15 Jahren

da fehlt evtl. die Definition der Sendemethode:

siehe MSDN


<configuration>
  <system.net>
    <mailSettings>
      <smtp deliveryMethod="network">
        <network
          host="localhost"
          port="25"
          defaultCredentials="true"
        />
      </smtp>
    </mailSettings>
  </system.net>
</configuration>

A
Alter Schwede Themenstarter:in
10 Beiträge seit 2008
vor 15 Jahren

hi,

das ist es leider auch nicht das hatte ich schon probiert 🙁

lg
as