Murmelin: Mailprogramm mit Javascript zum Senden öffnen

Hallo,

wenn ich auf einen Link klicke, wird eine Javascript-Funktion aufgerufen.

Die setzt einen Ajax-Aufruf ab, PHP-Programm erzeugt und speichert PDF-Datei, meldet die URL der PDF-Datei zurück.

Diese URL baut Javascript in einen mailto: Aufruf ein und öffnet damit ein neues Fenster. Das neue Fenster öffnet das Mailprogramm.

Probleme:

1. Wenn Popups geblockt sind, muss das neue Fenster per Klick freigegeben werden.
2. Das neue Fenster bleibt offen trotz close- Kommando.

function interpretRequest()  
{  
//alert( "readyState von p136=["+request.readyState+"]" );  
  switch (request.readyState) {  
    // wenn der readyState 4 und der request.status 200 ist, dann ist alles korrekt gelaufen  
    case 4:  
      if (request.status != 200) {  
        alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+request.status);  
      } else {  
        mail_url = "mailto:"+email+"?subject=Ihre%20Rechnung%20"+request.responseText;  
//      alert( mail_url );  
        var mail_win = window.open( mail_url,"email" );  
        mail_win.close();  
      }  
      break;  
    default:  
      break;  
  }  
}  

Ist das close-Kommando falsch oder "wartet" Javascript das Öffnen gar nicht ab?

Habe auch versucht, mit window.location.href="mailto:..." das vorhandene Fenster zu nutzen, Mailprogramm öffnet nicht.

Kann ich das irgendwie anders machen?

Gruß, Murmelin

  1. Hi,

    wenn ich auf einen Link klicke, wird eine Javascript-Funktion aufgerufen.
    Die setzt einen Ajax-Aufruf ab, PHP-Programm erzeugt und speichert PDF-Datei, meldet die URL der PDF-Datei zurück.
    Diese URL baut Javascript in einen mailto: Aufruf ein und öffnet damit ein neues Fenster. Das neue Fenster öffnet das Mailprogramm.

    klingt ziemlich kompliziert ...

    1. Wenn Popups geblockt sind, muss das neue Fenster per Klick freigegeben werden.

    Kommt auf den Browser an. Eventuell passiert auch einfach gar nichts.

    1. Das neue Fenster bleibt offen trotz close- Kommando.

    Ja. Normalerweise darf Javascript ein Fenster auch wieder schließen, das es selbst geöffnet hat. Hier gehört das geöffnete Fenster aber nicht dem Browser, sondern einem anderen Programm, daher funktioniert das Schließen nicht mehr. Ich betrachte das als Variante der SOP.

    var mail_win = window.open( mail_url,"email" );
            mail_win.close();

    Öffnen und sofort wieder schließen?? Hältst du das für sinnvoll?
    Außerdem gibst du dem System überhaupt keine Zeit - wenn close() aufgerufen wird, ist das Fenster aller Wahrscheinlichkeit nach noch nicht einmal geöffnet.

    Ist das close-Kommando falsch oder "wartet" Javascript das Öffnen gar nicht ab?

    Nein. Nein.

    Javascript gibt nur die Aufforderung an den Browser, ein neues Fenster mit der gewünschten URL zu öffnen, "sobald er Zeit dafür hat". Das geschieht dann nebenläufig, während das Script nahezu ungebremst weiterläuft.
    Abgesehen davon: Selbst wenn das Schließen funktionieren würde - wozu? Schließlich muss doch der Nutzer vorher auch noch das Absenden der Mailnachricht anstoßen.

    Habe auch versucht, mit window.location.href="mailto:..." das vorhandene Fenster zu nutzen, Mailprogramm öffnet nicht.

    Du kannst ja auch nicht einfach so eine Browserinstanz in einen Mailclient umwandeln.

    Und wenn du schon serverseitig ein PDF-Dokument generierst, warum verschickst du dann nicht auch die Mailnachricht gleich von diesem PHP-Script aus?

    So long,
     Martin

    --
    ... und der FDP-Wähler gibt seine Stimme der FDP.
       (Faszinierende Erkenntnis meines Gemeinschaftskunde-Lehrers, 9. Schuljahr)
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Hi, Martin,

      du fragst zu Recht, warum ich das so umständlich mache. Das Anhängen von PDF an PHP-Mail klappt nicht, siehe Faden von vorgestern. Jett drängt die Zeit und ich muss "über die Dörfer fahren", statt im Stau zu stehen.

      Ausserdem möchte der Auftraggeber den Stand der versendeten PDF- Dateien dokumentieren, der kann sich im Laufe von Tagen ändern. Natürlich kann man das - wie immer - ganz anders machen, aber nun habe ich diesen Weg beschritten und muss ihn zuende gehen.

      Öffnen und sofort wieder schließen?? Hältst du das für sinnvoll?

      Hatte nach einer Kontrollmöglichkeit gesucht, das Öffnen in einer Schleife abzuwarten, aber <http://de.selfhtml.org/javascript/objekte/window.htm@title=zimindest hier> kann nur closed, nicht opened abgefragt werden.

      Javascript gibt nur die Aufforderung an den Browser, ein neues Fenster mit der gewünschten URL zu öffnen, "sobald er Zeit dafür hat". Das geschieht dann nebenläufig, während das Script nahezu ungebremst weiterläuft.

      Hatte ich vernutet, aber nicht gewusst.

      Abgesehen davon: Selbst wenn das Schließen funktionieren würde - wozu? Schließlich muss doch der Nutzer vorher auch noch das Absenden der Mailnachricht anstoßen.

      Wieso? Nach derselben Logik müsste Javascript (bzw. das neue Fenster) die Anforderung an das Mailprogramm geben, sich zu öffnen, "sobald er Zeit dafür hat". Hat es nach diesem Anstoß noch Kontrolle über das Mailprogramm? Kann ich mir nicht vorstellen.

      Test: Ich kann das neue (leere) Fenster schließen, ohne das von ihm geöffnete Mailprogramm mitzureissen in den Tod.

      Und wenn du schon serverseitig ein PDF-Dokument generierst, warum verschickst du dann nicht auch die Mailnachricht gleich von diesem PHP-Script aus?

      Siehe Eingangsbemerkung.

      Gruß, Murmelin

      1. Hallo,

        du fragst zu Recht, warum ich das so umständlich mache. Das Anhängen von PDF an PHP-Mail klappt nicht, siehe Faden von vorgestern.

        den hatte ich wegen des Themengebiets "Projektverwaltung" mangels Interesse links liegenlassen. Aber ein PDF-Dokument als Mailanhang zu verschicken, ist doch normalerweise ein Klacks.

        Ausserdem möchte der Auftraggeber den Stand der versendeten PDF- Dateien dokumentieren, der kann sich im Laufe von Tagen ändern.

        Dann soll er die verschickte Mailnachricht eben als CC- oder BCC-Empfänger bekommen.

        Abgesehen davon: Selbst wenn das Schließen funktionieren würde - wozu? Schließlich muss doch der Nutzer vorher auch noch das Absenden der Mailnachricht anstoßen.
        Wieso? Nach derselben Logik müsste Javascript (bzw. das neue Fenster) die Anforderung an das Mailprogramm geben, sich zu öffnen, "sobald er Zeit dafür hat". Hat es nach diesem Anstoß noch Kontrolle über das Mailprogramm?

        Eben nicht. Deswegen kann es das Fenster ja auch nicht schließen. Aber das Fenster des Mailclients mit der generierten Nachricht[1] steht dann halt irgendwo auf dem Desktop rum. Es wird aber nicht automatisch abgeschickt, das muss der Nutzer selbst tun.

        Test: Ich kann das neue (leere) Fenster schließen, ohne das von ihm geöffnete Mailprogramm mitzureissen in den Tod.

        Welches neue Fenster? Wenn ich eine mailto-URL angebe, öffnet mein Browser das Compose-Fenster des Mailclients. Sind bei dir noch mehr Fenster im Spiel?

        Ciao,
         Martin

        [1] Vorausgesetzt, es kommt überhaupt so weit - über das Glücksspiel mit mailto-URLs wurde ja hier schon oft diskutiert.

        --
        Fische, die bellen, beißen nicht.
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
        1. Hallo,

          meine Konstellation auf dem Client: Opera und Thunderbird.

          ... Aber ein PDF-Dokument als Mailanhang zu verschicken, ist doch normalerweise ein Klacks.

          Dachte ich auch, wird doch täglich gemacht. Ist aber hier bei den freundlichen Helferlein nicht bekannt. Im Sommer bekam ich den Hinweis auf TCPDF, und nun ziehe ich das durch.

          Dann soll er die verschickte Mailnachricht eben als CC- oder BCC-Empfänger bekommen.

          Anregung registriert für später.

          Test: Ich kann das neue (leere) Fenster schließen, ohne das von ihm geöffnete Mailprogramm mitzureissen in den Tod.

          Welches neue Fenster?

          Dieses: var mail_win = window.open( mail_url,"email" );

          Wenn ich eine mailto-URL angebe, öffnet mein Browser das Compose-Fenster des Mailclients. Sind bei dir noch mehr Fenster im Spiel?

          Drei. Das Browser-Fenster mit dem Link zur Javascript- Funktion, das neue Browser-Fenster, das von der Funktion geöffnet wird und the Mail-Client.

          BIst du einverstanden, die Diskussion zu schliessen? Sie bringt mich (und dich) nicht weiter.

          Ich lebe jetzt mit diesem Provisorium, das muss nächste Woche laufen.

          Lieben Gruß, Murmelin.

          1. Moin!

            Ich lebe jetzt mit diesem Provisorium, das muss nächste Woche laufen.

            Das wird es nicht, weil es das nicht kann! Du kannst auf meinen Rat (und den der anderen) hören oder Deinem Auftraggeber gleich zur Konkurrenz schicken. In das was Du vor hast weiter Arbeit zu stecken ist einfach nur für die Katz.

            MFFG (Mit freundlich- friedfertigem Grinsen)

            fastix

            1. In das was Du vor hast weiter Arbeit zu stecken ist einfach nur für die Katz.

              Unfug. Die Erstellung des PDF- Dokuments ist die Hauptaufgabe. Und die Ergebnisse werden auch für andere Versandarten gültig sein.

              Gruß, Murmelin

          2. Hi,

            meine Konstellation auf dem Client: Opera und Thunderbird.

            same here.

            Wenn ich eine mailto-URL angebe, öffnet mein Browser das Compose-Fenster des Mailclients. Sind bei dir noch mehr Fenster im Spiel?
            Drei. Das Browser-Fenster mit dem Link zur Javascript- Funktion, das neue Browser-Fenster, das von der Funktion geöffnet wird und the Mail-Client.

            Aha. Nummer zwei in deiner Aufzählung habe ich nicht. Das macht mein Opera von selbst wieder zu, bevor ich es noch so richtig wahrnehme.

            BIst du einverstanden, die Diskussion zu schliessen? Sie bringt mich (und dich) nicht weiter.
            Ich lebe jetzt mit diesem Provisorium, das muss nächste Woche laufen.

            Meinetwegen, klar.

            Ciao,
             Martin

            --
            Lieber blau machen, als sich schwarz ärgern.
            Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      2. Mahlzeit Murmelin,

        du fragst zu Recht, warum ich das so umständlich mache. Das Anhängen von PDF an PHP-Mail klappt nicht, siehe Faden von vorgestern.

        Ich hab's mir ja fast gedacht, als ich Deinen Namen und das Thema las ... dies fällt IMHO (auch) unter das Thema Doppelposting: es geht immer noch um den gleichen Sachverhalt - und hättest Du nicht einen neuen Thread eröffnet, müsstest Du nicht jedem zweiten Leser erklären, was Du vorher alles gemacht hast.

        Lies die Charta und berücksichtige sie!

        Jett drängt die Zeit und ich muss "über die Dörfer fahren", statt im Stau zu stehen.

        Ähm - nein. Wenn ein Indianer merkt, dass er auf einem toten Pferd reitet, steigt er ab. Du hingegen bleibst munter darauf sitzen, schwingst noch die Peitsche und erwartest, dass Du an Deinem Ziel ankommst.

        Steig von Deinem halb verwesten Gaul ab, tritt ein paar Schritte zurück (um mal einen anderen Blickwinkel zu bekommen) und beherzige die Dir gegebenen Tipps - das fällt im Übrigen naturgegebenermaßen leichter, wenn man nicht ständig neue Threads zum gleichen Thema aufmacht, sondern in seinem ursprünglichen bleibt ... dann bekommt man nämlich auch besser mit, wenn geantwortet wird.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:& n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  2. Liebes Murmelin,

    warum diskutierst Du diese Frage nicht in Deinem alten Thread? Auch wenn Du eine vermeintlich völlig neue technische Problemstellung zu diskutieren meinst, handelt es sich im Grunde doch noch immer um Deine Outlook-basierte Originalfrage... stimmt's?

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Liebes Murmelin,

      warum diskutierst Du diese Frage nicht in Deinem alten Thread? Auch wenn Du eine vermeintlich völlig neue technische Problemstellung zu diskutieren meinst, handelt es sich im Grunde doch noch immer um Deine Outlook-basierte Originalfrage... stimmt's?

      Felix, du hast Recht. Aber ist dir aufgefallen, dass nur du dich noch für die Problematik von vorgestern interessiert hast?

      Dein Rat ist mir wichtig, aber ich wollte die Frage öffentlich stellen.

      Gruß. Murmelin

      1. Moin!

        Felix, du hast Recht. Aber ist dir aufgefallen, dass nur du dich noch für die Problematik von vorgestern interessiert hast?

        Nochmal: Was Du vorhast ist MURKS.

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix

        1. Moin!

          Nochmal: Was Du vorhast ist MURKS.

          Ja, ist doch mein Reden. Aber es funzt erstmal.

          1. Moin!

            Nochmal: Was Du vorhast ist MURKS.

            Ja, ist doch mein Reden. Aber es funzt erstmal.

            Auch der IE ist Murks hoch drei. Und doch wird er millionenfach eingesetzt und die Welt der Webmaster treiben einen Wahnsinnsaufwand, ihm gerecht zu werden.

            Dagegen ist mein Murks doch Zwergenwerk.

          2. Moin!

            Ja, ist doch mein Reden. Aber es funzt erstmal.

            Ich gebe Dir den guten Rat am Montag beide Versionen mitzubringen und den Auftraggeber zu fragen: Welche davon soll es sein? Ich muss nur einen Schalter setzen.

            MFFG (Mit freundlich- friedfertigem Grinsen)

            fastix