2009-03-11 9 views
1

J'utilise Windows Vista OS. PHP, MySQL comme base de données et serveur web Apache.Comment envoyer un mail en utilisant PHP?

Je veux envoyer une notification à ceux qui veulent se joindre à mon site. Mais le problème est lorsque je clique sur soumettre. Il n'envoie rien à l'adresse e-mail de l'utilisateur.

Selon vous, quelle est la meilleure solution pour cela?

<?php 
$to = "[email protected]"; 
$subject = "Hi!"; 
$body = "Hi,\n\nHow are you?"; 
if (mail($to, $subject, $body)) { 
    echo("<p>Message successfully sent!</p>"); 
} else { 
    echo("<p>Message delivery failed...</p>"); 
} 
?> 
+0

Pouvez-vous nous montrer le code que vous essayez d'utiliser pour cela? –

+0

Si vous testez ceci localement, assurez-vous que votre configuration locale de smtp est réglée ... (vérifiez la réponse de serioys sam) – karlipoppins

Répondre

2

Utilisez la poire classe "Mail", ce qui nécessite l'accès à un serveur SMTP séparé à l'écoute sur le port 25.

Code de l'échantillon suit:

function sendmail($from, $to, $subject, $message, $headers) 
{ 
    if (is_array($to)) { 
      $recipients = implode(', ', $to); 
    } else { 
     $recipients = $to; 
    } 

    $errorlevel = error_reporting(); 
    $headers["From"] = $from; 
    $headers["To"] = $to; 
    $headers["Subject"] = $subject; 

    $params = array(); 
    $params["host"] = "localhost"; 
    $params["port"] = "25"; 
    $params["auth"] = false; 

    error_reporting($errorlevel & ~E_WARNING); 

    $mail_object =& Mail::factory("smtp", $params); 
    $res = $mail_object->send($recipients, $headers, $message); 

    error_reporting($errorlevel); 

    return $res; 
} 

nb: c'est ancien code - Je ne me souviens pas maintenant pourquoi j'ai dû masquer E_WARNING

0

Il suffit de vérifier "How to Send Email from a PHP Script". Il utilise la fonction mail pour envoyer du courrier et donne également la configuration pour la configuration SMTP locale et distante.

3

Vous avez plusieurs options:

  • il est construit en mail function, mais il faut que certains MTA est en cours d'exécution sur la machine, ne prend pas en charge l'authentification, et vous aurez besoin de travailler dur pour envoyer des pièces jointes
  • il ya Pear Mail paquet, si vous aimez utiliser des trucs de poire
  • il ya un bon PHPMailer class que j'ai utilisé au cours des dernières années et il fonctionne vraiment bien. Il aime parce qu'il est très simple et facile à inclure dans votre projet (un simple appel comprennent), puissant
+0

lass PHPmailer fonctionne-t-il dans Windows Vista OS? –

+1

J'ai essayé sur Windows et Linux et cela fonctionne. –

3

Zend_Mail du Zend Framework fait un travail très soigné avec l'envoi d'e-mails !! Vous n'avez pas besoin d'utiliser la totalité de Zend Framework, vous pouvez simplement utiliser Zend_Mail!

0

Il existe plusieurs façons d'envoyer des emails via PHP. L'utilisation de la fonction interne mail() est la première si vous n'utilisez aucun framework. Je suggère d'utiliser le composant Zend_Mail du Zend Framework. J'ai travaillé avec et cela fonctionne très bien et vous donne une belle manière orientée objet pour envoyer des emails en utilisant PHP. Mais si vous avez vos raisons d'utiliser la fonction mail(), alors je pense que vous pourriez avoir besoin de savoir ceux-ci: PHP mail() n'envoie pas d'email lui-même. Il utilise d'autres outils pour envoyer des emails. Si vous exécutez votre application dans les systèmes Unix, mail() essaie d'envoyer l'e-mail en utilisant le programme sendmail généralement installé sur la plupart des systèmes de type Unix. Sur les plateformes Windows, il n'y a pas de sendmail installé, PHP essayera donc d'envoyer l'email en utilisant un serveur SMTP. vous devez donc indiquer à PHP où se trouve ce serveur SMTP et lui fournir le nom d'utilisateur/mot de passe du serveur SMTP, s'il y en a. Vous pouvez le faire en éditant votre fichier de configuration PHP, php.ini. Ce fichier est un fichier de configuration textuel que PHP utilisera lorsqu'il sera exécuté. Trouvez votre fichier php.ini et modifier ces valeurs dans ce fichier:

SMTP = localhost 
smtp_port = 25 
sendmail_from = [email protected] 

Si vous ne savez pas où est votre fichier php.ini, créez un simple fichier PHP, comme info.php et de mettre ce code en elle:

<?php 
phpinfo(); 
?> 

Exécutez votre page et recherchez .ini. Maintenant, vous savez où votre fichier php.ini est.

0

Il semble que vous n'ayez pas installé de serveur de messagerie. Apache ou PHP n'envoient pas de mails pour vous. Php enregistre des fonctions pour cela mais en interne vous devez configurer un serveur de smtp de courrier pour faire l'envoi réel.

Check this post.

0

Je recommande d'utiliser la bibliothèque swiftmailer, le projet a une très bonne documentation et est facile à utiliser. Il offre plusieurs avantages à l'utilisation de la fonction PHP mail() par défaut.

http://swiftmailer.org/