Announcement

Collapse
No announcement yet.

Emails auf anderen PC's versenden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Emails auf anderen PC's versenden

    Hallo,

    ich weiß nicht wieso, aber irgendwie möchte mein Programm keine E-Mails von anderen Computern versenden, währenddessen es auf meinem funktioniert.

    [highlight=c#] private void sendMail()
    {
    string subject = "Titel";
    string body = "Message";
    string host = "smtp.mail.yahoo.com";
    string mailFrom = "[email protected]";
    string mailTo = "[email protected]";
    string pass = "XX";

    try
    {
    System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage(mailFrom, mailTo);
    msg.Subject = subject;
    msg.Body = body;
    mail.Credentials = new System.Net.NetworkCredential(mailFrom, pass);
    mail.Host = host;
    mail.Send(msg);
    }
    catch
    { }
    }[/highlight]

    Ich möchte damit eigentlich bezwecken, dass mir letztendlich bei Programmabbruch die Exception zugesandt wird. Aber wenn er die Email gar nicht erst auf anderen Computern versendet, nützt mir das ja alles nicht viel.. Ich vermute, dass es irgendwie an SMTP liegt. Weiß jemand, wie ich das lösen kann?

    Lieben Gruß

  • #2
    Mal das ausprogrammieren (Exception anzeigen).
    Andere Rechner könnten irgendwelche Schutzprogramm laufen haben, die einen unbekannten Mailversandt blocken
    Christian

    Comment


    • #3
      Hey Christan,

      die exeption wird in anderen Catch-Blöcken des Programmes als string-Variable "exc" gespeichert und in der sendMail()-Methode als body übermittelt.

      [highlight=c#]
      string exc = "";
      System.Net.Mail.SmtpClient mail = new System.Net.Mail.SmtpClient();

      try
      {
      doSomething();
      }
      catch (Exception e)
      {
      exc = e;
      sendMail()
      }

      private void sendMail()
      {
      string subject = "Fehler bei Programmausführung";
      string body = exc;
      string host = "smtp.mail.yahoo.com";
      string mailFrom = "[email protected]";
      string mailTo = "[email protected]";
      string pass = "XX";

      try
      {
      System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage(mailFrom, mailTo);
      msg.Subject = subject;
      msg.Body = body;
      mail.Credentials = new System.Net.NetworkCredential(mailFrom, pass);
      mail.Host = host;
      mail.Send(msg);
      }
      catch
      { }
      }[/highlight]

      Aber daran sollte es ja nicht scheitern. Nun gut, wenn es an anderen Schutzprogrammen liegt, denn kann ich mein Anliegen ja einfahren..

      Danke für deinen Tipp und lieben Gruß
      Zuletzt editiert von kogen; 26.11.2014, 22:14.

      Comment


      • #4
        Die catch-Methode des Mailversandt selbst


        catch { }

        ausprogrammieren

        Nun gut, wenn es an anderen Schutzprogrammen liegt,
        Das ist eine Vermutung, eine Möglichkeit, keine gesicherte Erkenntnis
        Christian

        Comment


        • #5
          Aber daran sollte es ja nicht scheitern. Nun gut, wenn es an anderen Schutzprogrammen liegt, denn kann ich mein Anliegen ja einfahren..
          Es geht nicht um die Exceptions woanders sondern um die in dieser Methode die du scheinbar einfach schluckst. So kannst du nunmal nicht rausbekommen was da passiert. Also einfach mal die vermutlich gefeuerte SmtpException abfangen und komplett in eine Datei schreiben und dir geben lassen.

          Comment


          • #6
            Oh sorry, mein Versehen!

            Sehr guter Tipp, hätte ich eigentlich auch selber drauf kommen können :-(

            Ich werde das die Tage mal nachgehen und dementsprechend noch mal recherchieren / berichten!

            Lieben Gruß und danke!

            Comment


            • #7
              ich geh bei meiner antwort davon aus, dass du deine applikation via setup auf andere PCs bringst? In dem fall fehlen deiner app ausreichende Rechte...?
              JonDonym: privacy needs anonymity more than ever

              Comment


              • #8
                ich geh bei meiner antwort davon aus, dass du deine applikation via setup auf andere PCs bringst? In dem fall fehlen deiner app ausreichende Rechte...?
                Welche Rechte sollten das sein? Warum wären die Rechte von der Art der Installation abhängig?
                Christian

                Comment


                • #9
                  Hey,

                  nein, das ist keine setup-Datei. Es ist 'ne normale ausführbare .exe-Datei die beim debuggen im bin-Ordner von Visual-Studio angelegt wird.

                  Mein aktueller Fortschritt ist nun angepasst. Ich werde das später denn noch mal testen und recherchieren/berichten.

                  [highlight=c#]using System;
                  using System.Windows.Forms;
                  using System.Net.Mail;
                  using System.Net;

                  namespace E_Mail_Spammer
                  {
                  public partial class Form1 : Form
                  {
                  SmtpClient mail = new SmtpClient();
                  string subject = "Titel";
                  string body = "Inhalt";
                  string host = "smtp.mail.yahoo.com";
                  string mailFrom = "[email protected]";
                  string mailTo = "[email protected]";
                  string pass = "XYZ";

                  public Form1()
                  {
                  InitializeComponent();
                  mail.EnableSsl = true;
                  }

                  private void button1_Click(object sender, EventArgs e)
                  {
                  richTextBox1.Clear();
                  MailMessage msg = new MailMessage(mailFrom, mailTo);

                  try
                  {
                  msg.Subject = subject;
                  msg.Body = body;
                  mail.Credentials = new NetworkCredential(mailFrom, pass);
                  mail.Host = host;
                  mail.Send(msg);
                  richTextBox1.Text += "Mail wurde versandt";
                  }
                  catch (SmtpFailedRecipientsException ex)
                  {
                  for (int i = 0; i < ex.InnerExceptions.Length; i++)
                  {
                  SmtpStatusCode status = ex.InnerExceptions[i].StatusCode;
                  if (status == SmtpStatusCode.MailboxBusy ||
                  status == SmtpStatusCode.MailboxUnavailable)
                  {
                  richTextBox1.Text += "Zustellung fehlgeschlagen - Neuversuch in 5 Sekunden";
                  System.Threading.Thread.Sleep(5000);
                  mail.Send(msg);
                  }
                  else
                  {
                  richTextBox1.Text += "Konnte die Nachricht an " +
                  ex.InnerExceptions[i].FailedRecipient + " nicht zusenden";
                  }
                  }
                  mailsNotDelivered++;
                  }
                  catch (Exception ex)
                  {
                  richTextBox1.Text += "Exception wurde in RetryIfBusy() abgefangen: " +
                  ex.ToString();
                  }
                  }
                  }
                  }
                  [/highlight]
                  Zuletzt editiert von kogen; 26.11.2014, 23:50.

                  Comment


                  • #10
                    Ich stelle jetzt mal noch eine andere banale Frage. Das Programm selbst läuft aber auf anderen Rechnern, oder? Dort muss nämlich zumindest die .Net Runtime installiert sein und dazugehörige Libraries müssen mit kopiert werden. Sorry falls Du das schon gecheckt hast, aber oft vergessen Leute das wirklich

                    Comment


                    • #11
                      @Christian Marquardt
                      die Art der Installation ist nicht gemeint.

                      Aber (ganz im Ernst, ohne Sarkasmus) wenn Du das fragst, dann sag, dass UAC keine Rolle spielt(im Fall von Setup auf andern Maschinen, ab Vista).
                      JonDonym: privacy needs anonymity more than ever

                      Comment


                      • #12
                        Spielt keine Rolle
                        Christian

                        Comment


                        • #13
                          Heyho,

                          ich bin es noch mal. Ich habe es bisher bei einem Kumpel probiert, bei dem es nun irgendwie doch funktioniert hat. Am Campus erhielt ich jedoch folgende Exception

                          Spoiler:
                          ----------------------------------------------------------------
                          13:30 Exception wurde in RetryIfBusy() abgefangen:
                          ----------------------------------------------------------------
                          System.Net.Mail.SmtpException: Fehler beim Senden von Mail. ---> System.Net.WebException: Die Verbindung mit dem Remoteserver kann nicht hergestellt werden. ---> System.Net.Sockets.SocketException: Ein Verbindungsversuch ist fehlgeschlagen, da die Gegenstelle nach einer bestimmten Zeitspanne nicht richtig reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da der verbundene Host nicht reagiert hat 188.125.69.59:25
                          bei System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
                          bei System.Net.ServicePoint.ConnectSocketInternal(Bool ean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
                          --- Ende der internen Ausnahmestapelüberwachung ---
                          bei System.Net.ServicePoint.GetConnection(PooledStream PooledStream, Object owner, Boolean async, IPAddress& address, Socket& abortSocket, Socket& abortSocket6)
                          bei System.Net.PooledStream.Activate(Object owningObject, Boolean async, GeneralAsyncDelegate asyncCallback)
                          bei System.Net.PooledStream.Activate(Object owningObject, GeneralAsyncDelegate asyncCallback)
                          bei System.Net.ConnectionPool.GetConnection(Object owningObject, GeneralAsyncDelegate asyncCallback, Int32 creationTimeout)
                          bei System.Net.Mail.SmtpConnection.GetConnection(Servi cePoint servicePoint)
                          bei System.Net.Mail.SmtpTransport.GetConnection(Servic ePoint servicePoint)
                          bei System.Net.Mail.SmtpClient.GetConnection()
                          bei System.Net.Mail.SmtpClient.Send(MailMessage message)
                          --- Ende der internen Ausnahmestapelüberwachung ---
                          bei System.Net.Mail.SmtpClient.Send(MailMessage message)


                          Ich denke aber, dass es auf dem Campus normal ist, da dort eh starker Verbindungsschutz zu anderen Servern herrscht.

                          Lieben Gruß

                          Comment


                          • #14
                            Den "Verbindungsschutz" hast du mit einem Ping verifiziert?
                            Christian

                            Comment


                            • #15
                              Port 25 anzupingen wird eher schwer

                              Comment

                              Working...
                              X