kostenloser Webspace werbefrei: lima-city


Mails über SMTP verschicken (GMX)

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    l*******************t

    Hi,
    Also ich hab da nen Code mit dem ich meine Mails verschicken will.
    Aber das Problem ist
    1. schickt er mir den Absender nicht mit ($sender)
    2. schickt er mir den Inhalt nicht mit ($content)

    ????

    Hier der Code:

    <?php
    $smtp_server = "smtp.gmx.de";
    $port = 25;
    $mydomain = "localhost";
    $username = "sender@gmx.net";
    $password = "blabla";
    $sender = $username;
    $recipient = "empfaenger@gmx.de";
    $subject = "Betreff";
    $content = "Nachricht";

    // Initiate connection with the SMTP server
    $handle = fsockopen($smtp_server,$port);
    fputs($handle, "EHLO ".$mydomain."\n");

    // SMTP authorization
    fputs($handle, "AUTH LOGIN\n");
    fputs($handle, base64_encode($username)."\n");
    fputs($handle, base64_encode($password)."\n");
    // Send out the e-mail
    fputs($handle, "MAIL FROM: ".$sender."\n");
    fputs($handle, "RCPT TO: ".$recipient."\n");
    fputs($handle, "DATA\n");
    fputs($handle, "To: ".$recipient."\n");
    fputs($handle, "Subject: ".$subject ."\n");
    fputs($handle, $content."\n");
    fputs($handle, ".\n");

    // Close connection to SMTP server
    fputs($handle, "QUIT\n");
    echo(fgets($handle))."<br>";
    echo(fgets($handle))."<br>";
    echo(fgets($handle))."<br>";
    echo(fgets($handle))."<br>";
    echo(fgets($handle))."<br>";
    echo(fgets($handle))."<br>";
    echo(fgets($handle))."<br>";
    echo(fgets($handle))."<br>";
    echo(fgets($handle))."<br>";
    echo(fgets($handle))."<br>";
    echo(fgets($handle))."<br>";
    echo(fgets($handle))."<br>";
    echo(fgets($handle))."<br>";
    echo(fgets($handle))."<br>";
    echo(fgets($handle))."<br>";
    echo(fgets($handle))."<br>";

    ?>


    Außerdem hab ich noch das Problem, wenn ich meine Mails abrufe (über imap_open etc.) und meine Mailbox/Posteingang ist leer, bringt er mir folgende Meldung:

    Notice: Unknown: Mailbox is empty (errflg=1) in Unknown on line 0

    Wie kann ich die unterdrücken? Mit @ vor den Funktionen funktioniert das nicht.

    Danke.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hallo luzerne-sprossenzucht,

    wieso verbindest du mittels Socket und nicht mit den IMAP-Funktionen für PHP (mit denen man auch zu POP3 verbinden kann)?

    Des weiteren heißt der SMTP-Server von GMX nciht smtp.gmx.de sondern mail.gmx.net (oder besser: meinerzeit hieß er noch so)


    gruß
    ferdinand24
  4. Autor dieses Themas

    l*******************t

    ich hab keine Ahnung wie das senden über die Imap-Funktionen geht. Ich habs mal so probiert, aber das geht nich.

    $server = "{pop.gmx.de/pop3:110}INBOX";
    $mailbox = imap_open($server, $ktname, $paswd);
    imap_mail($mail_empfaenger, $betreff,$text,"from:$mail_absender");
    imap_close($mailbox);

    den anderen code hab ich ausm Internet, und er funktioniert ja auch im Prinzip, aber er sendet nur den absender und Inhalt nicht
  5. Die Mail() Funktion ist hier immer noch abgeschaltet oder täusche ich mich?
    Denn mein PHP-Script verschickt auch nichts ;(

    Welche Möglichkeit habe ich denn noch um von meiner Webseite hier auf lima eine Mail zu versenden? Ich hab da noch nicht so den großen Plan von.

    Beitrag geaendert: 28.4.2007 0:43:11 von karpfen

  6. Die Mail() Funktion ist hier immer noch abgeschaltet oder täusche ich mich?
    Denn mein PHP-Script verschickt auch nichts ;(


    Die Mail-Funktion geht glaube ich.
    Nur fopen geht nicht.
    Und bei seinen Skript braucht er das.

    luzerne-sprossenzucht schrieb:
    $server = '{pop.gmx.de/pop3:110}INBOX';


    Versuch mal: $server = '{pop.gmx.de:110/pop3}INBOX';

    Wobei du pop3 glaube ich garnicht angeben brauchst.

    Jens


    Beitrag geaendert: 28.4.2007 0:44:57 von jacr
  7. Also ich habe hier in meinem Script die mail()-Funktion in Gebrauch und es wird keine E-mail verschickt. Auf einem anderen Server ging das noch. Ich hab auch nichts geändert. Deshalb frage ich.
  8. Autor dieses Themas

    l*******************t

    also ich hab mir n anderes script gezogen, mit dem man über smtp mails verschiecken kann, auch bei lima ich poste es euch mal hier, weil die mail()-funktion sowie die imap-funktionen hier nicht funktionieren.
    Der code funktioniert und ist getestet. Ihr könnt ihn grad auf der seite einfügen wo ihr mails schicken wollt, oder extern und dann über include() einbeziehen und grad der funktion smtpmail() - die im prinzip wie mail() aufgebaut ist - empfänger, betreff, message und header verpassen.
    Ihr müsst halt noch eure daten (smtp-server, absender etc.) in der funktion smtpmail() eintragen (ich mache das auch extern (datenbank), damit ich die daten, wenn ich sie mehrfach verwende an einer stelle ändern kann)

    Ich hab nur noch keinen code gefunden, der mir das auf die gleiche weise mit dem empfang macht (wie gesagt, imap geht hier nicht), wenn ihr was hättet, wäre nett...

    Code:
    <?php
    function server_parse($socket, $response, $line = __LINE__)
    {
    $server_response = '';
    while (substr($server_response, 3, 1) != ' ')
    {
    if (!($server_response = fgets($socket, 256)))
    {
    echo 'Couldn\'t get mail server response codes<br />';
    }
    }

    if (!(substr($server_response, 0, 3) == $response))
    {
    echo "Ran into problems sending Mail. Response: $server_response<br />";
    }
    }

    function smtpmail($mail_to, $subject, $message, $headers)
    {
    $smtp_host = ''; //zb 'mail.gmx.net'
    $smtp_username = $absender = ''; //eure eigene email-adresse
    $smtp_password = ''; //passwort eurer email
    $smtp_user = ''; //der name der zusätzlich als absender neben der adresse
    //erscheint

    $message = preg_replace("#(?<!\r)\n#si", "\r\n", $message);
    if ($headers != '')
    {
    if (is_array($headers))
    {
    if (sizeof($headers) > 1)
    {
    $headers = join("\n", $headers);
    }
    else
    {
    $headers = $headers[0];
    }
    }
    $headers = chop($headers);
    $headers = preg_replace('#(?<!\r)\n#si', "\r\n", $headers);
    $header_array = explode("\r\n", $headers);
    @reset($header_array);

    $headers = '';
    $cc = $bcc = '';
    while(list(, $header) = each($header_array))
    {
    if (preg_match('#^cc:#si', $header))
    {
    $cc = preg_replace('#^cc:(.*)#si', '\1', $header);
    }
    else if (preg_match('#^bcc:#si', $header))
    {
    $bcc = preg_replace('#^bcc:(.*)#si', '\1', $header);
    $header = '';
    }
    $headers .= ($header != '') ? $header . "\r\n" : '';
    }

    $headers = chop($headers);
    $cc = explode(', ', $cc);
    $bcc = explode(', ', $bcc);
    }

    if (trim($subject) == '')
    {
    echo 'No email Subject specified<br />';
    }

    if (trim($message) == '')
    {
    echo 'Email message was blank<br />';
    }

    if( !$socket = @fsockopen($smtp_host, 25, $errno, $errstr, 20) )
    {
    echo "Could not connect to smtp host : $errno : $errstr<br />";
    }

    server_parse($socket, "220", __LINE__);

    if( !empty($smtp_username) && !empty($smtp_password) )
    {
    fputs($socket, "HELO " . $smtp_host . "\r\n");
    server_parse($socket, "250", __LINE__);

    fputs($socket, "AUTH LOGIN\r\n");
    server_parse($socket, "334", __LINE__);

    fputs($socket, base64_encode($smtp_username) . "\r\n");
    server_parse($socket, "334", __LINE__);

    fputs($socket, base64_encode($smtp_password) . "\r\n");
    server_parse($socket, "235", __LINE__);
    }
    else
    {
    fputs($socket, "EHLO " . $smtp_host . "\r\n");
    server_parse($socket, "250", __LINE__);
    }

    fputs($socket, "MAIL FROM: <" . $absender . ">\r\n");
    server_parse($socket, "250", __LINE__);

    $to_header = '';

    $mail_to = (trim($mail_to) == '') ? 'Undisclosed-recipients:;' : trim($mail_to);
    if (preg_match('#[^ ]+\@[^ ]+#', $mail_to))
    {
    fputs($socket, "RCPT TO: <$mail_to>\r\n");
    server_parse($socket, "250", __LINE__);
    }

    @reset($bcc);
    if (isset($bcc))
    {
    while(list(, $bcc_address) = each($bcc))
    {
    $bcc_address = trim($bcc_address);
    if (preg_match('#[^ ]+\@[^ ]+#', $bcc_address))
    {
    fputs($socket, "RCPT TO: <$bcc_address>\r\n");
    server_parse($socket, "250", __LINE__);
    }
    }
    }

    @reset($cc);
    if (isset($cc))
    {
    while(list(, $cc_address) = each($cc))
    {
    $cc_address = trim($cc_address);
    if (preg_match('#[^ ]+\@[^ ]+#', $cc_address))
    {
    fputs($socket, "RCPT TO: <$cc_address>\r\n");
    server_parse($socket, "250", __LINE__);
    }
    }
    }

    fputs($socket, "DATA\r\n");

    server_parse($socket, "354", __LINE__);

    fputs($socket, "Subject: $subject\r\n");

    fputs($socket, "From: $smtp_user <$smtp_username>\r\n");

    fputs($socket, "To: $mail_to\r\n");

    fputs($socket, "$headers\r\n\r\n");

    fputs($socket, "$message\r\n");

    fputs($socket, ".\r\n");
    server_parse($socket, "250", __LINE__);

    fputs($socket, "QUIT\r\n");
    fclose($socket);

    return true;
    }
    ?>
  9. Autor dieses Themas

    l*******************t

    ps: die smileys die er mir jetzt in den code eingefügt hat sind natürlich entsprechend zu ersetzten, ich hab nur keine ahnung wie man hier anständig code postet, ich hätts ja auch gern über anhang oder so gemacht (des platzes wegen), aber wie gesagt, ich weiß net wie.

    und:

    jacr schrieb:

    luzerne-sprossenzucht schrieb:
    $server = '{pop.gmx.de/pop3:110}INBOX';


    Versuch mal: $server = '{pop.gmx.de:110/pop3}INBOX';

    Wobei du pop3 glaube ich garnicht angeben brauchst.



    ne des geht nicht, hab ich schon getestet - es geht nur

    $server = '{pop.gmx.de/pop3:110}INBOX';

    aber danke.
  10. e**6

    Also bei mir funktioniert das so : $server='pop.gmx.net:110/pop3'
    oder besser :

    $mailbox = imap_open("{".$server."}INBOX", $ktname, $paswd);



    Beitrag geaendert: 28.4.2007 12:36:35 von ef06
  11. Autor dieses Themas

    l*******************t

    ja, hatte ich zuerst auch so, hat mir ne fehlermeldung gebracht, dann hab ich mal gegoogelt und die andere (von mir beschrieben) variante gefunden, die hat gefunzt.
    Weiß jemand den Unterschied?

    Beitrag geaendert: 28.4.2007 12:44:30 von luzerne-sprossenzucht
  12. e**6

    ob es manchmal an Lc liegt?
    Hatte heute schon ein "korioses" Erlebnis, wo etwas nicht wollte wie es eigentlich sollte oder auch müste!
  13. Kleiner Tip:

    Hier wurde extra eine Formatierung für Code eingefügt.
    Wenn du die benutzt, dann wird auch kein Smiley mehr angezeigt.
    Diese Option ist schon sehr praktisch und befindet sich, wenn du einen Beitrag schreibst auf der rechten Seite unter den Smileys ;)

  14. ja, hatte ich zuerst auch so, hat mir ne fehlermeldung gebracht, dann hab ich mal gegoogelt und die andere (von mir beschrieben) variante gefunden, die hat gefunzt.
    Weiß jemand den Unterschied?

    Beitrag geaendert: 28.4.2007 12:44:30 von luzerne-sprossenzucht


    wenn du imap nutzen willst musst du einen kostenpflichtigen GMX Zugang haben, der ist beim kostenlosen nciht dabei.
  15. e**6



    ja, hatte ich zuerst auch so, hat mir ne fehlermeldung gebracht, dann hab ich mal gegoogelt und die andere (von mir beschrieben) variante gefunden, die hat gefunzt.
    Weiß jemand den Unterschied?

    Beitrag geaendert: 28.4.2007 12:44:30 von luzerne-sprossenzucht


    wenn du imap nutzen willst musst du einen kostenpflichtigen GMX Zugang haben, der ist beim kostenlosen nciht dabei.

    Dem kann ich nicht zustimmen zumindest praktiziere ich dies schon seit Jahren und habe einen "Umsonst" Account!



  16. ja, hatte ich zuerst auch so, hat mir ne fehlermeldung gebracht, dann hab ich mal gegoogelt und die andere (von mir beschrieben) variante gefunden, die hat gefunzt.
    Weiß jemand den Unterschied?

    Beitrag geaendert: 28.4.2007 12:44:30 von luzerne-sprossenzucht


    wenn du imap nutzen willst musst du einen kostenpflichtigen GMX Zugang haben, der ist beim kostenlosen nciht dabei.

    Dem kann ich nicht zustimmen zumindest praktiziere ich dies schon seit Jahren und habe einen "Umsonst" Account!


    das ist seltsam, denn ich kann zB. meinen Thunderbird nciht auf imap einstellen, aus besagtem Grund, dann müsste ja eigentlich auch ein PHP script scheitern, oder?
    :confused::confused:
  17. Autor dieses Themas

    l*******************t

    danke karpfen, jetzt seh ichs.
    ich hatte mir mit imap ein php-script geschrieben zum emails abholen und anzeigen - bei gmx mit kostenlosem account keine problem (keine ahnung was thunderbird macht, ich weiß nur, das rechts viele thunderbird mit kostenlosem gmx-account nutzen). bei mir auf localhost war das auch kein problem - nur als ichs dann auf lima nutzen wollte, hab ich gemerkt, das des hier net unterstützt wird.
    also an gmx liegt des nicht, sondern am server und des is bei lima halt nicht aktiviert oder was auch immer (steht aber auch irgendwo schon in nem forumbeitrag).
    Aber man müsste des ja genauso über socket machen können, wie mails über smtp schreiben (siehe mein letzter code), oder nicht?
  18. e**6


    Aber man müsste des ja genauso über socket machen können, wie mails über smtp schreiben (siehe mein letzter code), oder nicht?



    geht soweit ich feststellen muste bei Lc alles nicht!
  19. Autor dieses Themas

    l*******************t

    doch über socket funzt des perfekt...
  20. e**6


    doch über socket funzt des perfekt...


    meinste nen Code (ähnlich diesem) :
    <?
    $pop = fsockopen("pop.gmx.de","110"); //Verbindung zum Server aufbauen
    fputs($pop3, command("USER username\r\n")); //POP-Kommandos an den server senden
    echo fgets($pop3, 1024); //Ausgeben der Antwort des Servers
    ?>


    Habe da nen Mailoffice was überall läuft nur bei Lc nicht (;-(
    Da das script 100% funktioniert versuche ich die richtigkeit nicht in Frage zu stellen!
    Also muß ich davon ausgehen, dass es bei Lc nicht geht
  21. Autor dieses Themas

    l*******************t

    naja, also zumindest das smtp-zeugs funktioniert... ich kann mails darüber schicken (mit der funktion die ich gepostet hatte -> smtpmail() )
    mit pop3 - also mails abholen - hab ichs noch nicht probiert (bin da noch am rumbasteln - ps: hey, willst du mir mal den code geben den du zum abrufen verwendest? weil bei mir hat der dauernd irgendwelche probleme und ich peil net warum, wär nett)
  22. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!