it-swarm.com.de

sMTP-Konfiguration für PHP-Mail

Ich versende E-Mails von meiner Website mit der PHP-Mail-Funktion. Aber jetzt funktioniert es nicht und ich kontaktierte unser Hosting-Team. Dann wurde mir gesagt, ich solle SMTP benutzen, da sie einige Änderungen am Server vorgenommen haben. Ich weiß nicht, wie es geht. Aktueller Code (mit PHP-Mail-Funktion) ist wie folgt, kann mir jemand bei den Änderungen helfen, die ich damit zu tun habe.

<?php
$mail_To="[email protected]";
$headers = "";
$headers .= "From: [email protected]\n";
$headers .= "Reply-To: [email protected]\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";
$headers .= "X-Mailer: php";
$mail_Subject = " Live TV key";
$mail_Body = "<p>Muscle-tube</p>";
mail($mail_To, $mail_Subject, $mail_Body,$headers);
?>
11
shin

Die mail()-Funktion von PHP unterstützt SMTP nicht. Sie müssen etwas wie das PEAR Mail-Paket verwenden.

Hier ist ein Beispiel für ein SMTP-Mail-Skript:

<?php
require_once("Mail.php");

$from = "Your Name <[email protected]>";
$to = "Their Name <[email protected]>";
$subject = "Subject";
$body = "Lorem ipsum dolor sit amet, consectetur adipiscing elit...";

$Host = "mailserver.blahblah.com";
$username = "smtp_username";
$password = "smtp_password";

$headers = array('From' => $from, 'To' => $to, 'Subject' => $subject);

$smtp = Mail::factory('smtp', array ('Host' => $Host,
                                     'auth' => true,
                                     'username' => $username,
                                     'password' => $password));

$mail = $smtp->send($to, $headers, $body);

if ( PEAR::isError($mail) ) {
    echo("<p>Error sending mail:<br/>" . $mail->getMessage() . "</p>");
} else {
    echo("<p>Message sent.</p>");
}
?>
13
JCD

Beachten Sie, dass die Einstellungen für PHP aus Ihrer php.ini-Datei stammen. Der Standard sieht ungefähr so ​​aus:

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = [email protected]

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
;sendmail_path =

; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =

; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header = On

; Log all mail() calls including the full path of the script, line #, to address and headers
;mail.log =

Wenn Sie Ihre php.ini-Datei bearbeiten, sollten Sie das Problem beheben können, ohne die Skripts PHP zu ändern. Sie können auch eine Verbindung mit dem Telnet-Tool und den Befehlen HELO, MAIL FROM, RCPT TO, DATA, QUIT testen, wenn Sie direkt eine Verbindung zu einem SMTP-Server herstellen. Mit sendmail brauchen Sie das nicht einmal, sendmail sollte wissen, was es tut (obwohl dies in Ihrem Fall wahrscheinlich nicht der Fall war und die sendmail-Einstellungen wahrscheinlich etwas Hilfe benötigten.)

2
Alexis Wilke

Aber jetzt funktioniert es nicht und ich kontaktierte unser Hosting-Team, dann wurde mir gesagt, dass ich SMTP benutzen soll

Newsflash - zuvor wurde SMTP verwendet. Sie haben Ihnen nicht die Informationen zur Verfügung gestellt, die Sie zur Lösung des Problems benötigen - oder Sie haben es hier nicht genau weitergeleitet.

Möglicherweise haben sie den lokalen MTA auf dem Webserver deaktiviert. In diesem Fall müssen Sie den SMTP-Port auf einem Remote-Computer anschließen. Es gibt viele Toolkits, die das schwere Heben für Sie erledigen. Ich persönlich mag phpmailer , weil es andere Funktionen hinzufügt. 

Sicherlich, wenn sie eine Einrichtung, die vorher dort war, weggenommen haben und Sie für einen Dienst bezahlen, sollte Ihr Anbieter Ihnen eine bessere Unterstützung bieten (es gibt auch viele Programme, die anstelle eines vollständigen MTA eingesetzt werden können, der das tun würde Job).

C.

0
symcbean

Da sich einige der Antworten hier auf das Einrichten von SMTP beziehen (und nicht nur auf @shinods spezielles Problem, bei dem es funktioniert hat und aufgehört hat), dachte ich, es wäre hilfreich, wenn ich die Antwort aktualisiere, weil dies viel einfacher ist mache jetzt wie früher :-) 

In PHP 4 ist das PEAR Mail-Paket normalerweise bereits installiert. Dieses wirklich einfache Tutorial zeigt Ihnen die wenigen Codezeilen, die Sie Ihrer PHP-Datei hinzufügen müssen. http://email.about.com/od/emailprogrammingtips/qt/PHP_Email_SMTP_Authentication.htm

Die meisten Hosting-Unternehmen listen die SMTP-Einstellungen auf, die Sie benötigen. Ich benutze JustHost und sie listen ihre unter https://my.justhost.com/cgi/help/26 (unter Postausgangsserver) auf

0
Chaya Cooper

die Funktion email() von php übergibt die E-Mail an einen zugrunde liegenden mail transfer agent, der normalerweise auf Linux-Systemen postfix ist

daher ist die bevorzugte Methode unter Linux die Konfiguration Ihres Postfixes für die Verwendung eines Relayhost, der durch eine Zeile von durchgeführt wird

relayhost = smtp.example.com

in /etc/postfix/main.cf

im OP-Szenario habe ich jedoch den Verdacht, dass es eine Aufgabe ist, die sein hosting team hätte erledigen sollen

0
ptica