web-dev-qa-db-fra.com

configuration smtp pour mail php

J'envoie des mails de mon site web en utilisant la fonction mail php. Mais maintenant, cela ne fonctionne pas et j'ai contacté notre équipe d'hébergement, puis ils m'ont dit d'utiliser smtp car ils apportaient des modifications au serveur. Je ne sais pas comment le faire. Le code actuel (avec la fonction mail php) est le suivant, quelqu'un peut-il m'aider à propos des changements que je dois faire à ce sujet.

<?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

La fonction mail() de PHP ne prend pas en charge le protocole SMTP. Vous allez avoir besoin d'utiliser quelque chose comme le paquet de courrier PEAR .

Voici un exemple de script de messagerie SMTP:

<?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

Notez que les paramètres de messagerie PHP proviennent de votre fichier php.ini. La valeur par défaut ressemble plus ou moins à ceci:

[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 =

En modifiant votre fichier php.ini, vous devriez pouvoir résoudre le problème sans changer vos scripts PHP. Vous pouvez également tester une connexion avec l'outil telnet et les commandes HELO, MAIL FROM, RCPT TO, DATA, QUIT si vous vous connectez directement à un serveur SMTP. Avec sendmail, vous n’avez même pas besoin de cela, sendmail devrait savoir ce qu’il fait (bien que dans votre cas cela ne l’ait probablement pas été et que les paramètres de sendmail aient probablement besoin d’un peu d’aide.)

2
Alexis Wilke

Mais maintenant, cela ne fonctionne pas et j'ai contacté notre équipe d'accueil, puis ils m'ont dit d'utiliser smtp

Newsflash - il utilisait déjà SMTP. Ils ne vous ont pas fourni les informations nécessaires pour résoudre le problème - ou vous ne les avez pas relayées avec précision ici.

Il est possible qu'ils aient désactivé le MTA local sur le serveur Web, auquel cas vous devrez connecter le port SMTP sur un ordinateur distant. Il existe de nombreux kits d'outils qui feront le gros du travail pour vous. Personnellement j'aime phpmailer car cela ajoute d'autres fonctionnalités. 

Bien sûr, s’ils ont supprimé un établissement qui existait auparavant et que vous payez pour un service, votre fournisseur devrait vous fournir un meilleur soutien que celui-là (il existe également de nombreux programmes à remplacer à la place d’un MTA complet qui ferait le nécessaire). emploi).

C.

0
symcbean

Étant donné que certaines des réponses données ici concernent la configuration de SMTP en général (et pas seulement pour @shinod, un problème particulier où il fonctionnait et s’arrêtait), j’ai pensé qu’il serait utile de mettre à jour la réponse car elle est beaucoup plus simple fais maintenant ce que c'était :-) 

Dans PHP 4, le paquet PEAR Mail est généralement déjà installé, et ce tutoriel très simple vous montre les quelques lignes de code que vous devez ajouter à votre fichier php http: //email.about .com/od/emailprogrammingtips/qt/PHP_Email_SMTP_Authentication.htm

La plupart des sociétés d'hébergement répertorient les paramètres SMTP dont vous aurez besoin. J'utilise JustHost, et ils répertorient le leur à https://my.justhost.com/cgi/help/26(sous Serveur de messagerie sortant)

0
Chaya Cooper