Mail::send()

Mail::send() – envoyer un mail

Synopsis

require_once 'Mail.php';

mixed send ( mixed $recipients , array $headers , string $body )

Description

Envoyer un email. La méthode send() est fournie par l'objet retourné par factory()

Parameter

  • mixed $recipients - un tableau ou une chaîne de destinataires séparés par des virgules.

  • array $headers - un tableau associatif des en-têtes. Le nom de l'en-tête étant utilisé comme clé et la valeur de l'en-tête comme valeur. Si vous souhaitez rempalcer l'enveloppe de l'expéditeur de l'email, définissez l'en-tête Return-Path et cette valeur sera utilisée a la place de la valeur du champ From:.

  • string $body - le contenu de l'email.

Return value

boolean - TRUE ou un objet PEAR_Error, si une erreur survient.

Throws

Possible PEAR_Error values
Driver Mail Code erreur Message d'erreur Cause Solution
sendmail NULL "No from address given." Le tableau $headers requiert au moins une entrée from . Ajoutez un en-tête From
<?php
$headers
['From'] = 'monmail@example.com';
?>
sendmail NULL "From address specified with dangerous characters" L'entrée destinataire dans le tableau des en-têtes $headers contient un ou plusieurs caractères qui ne sont pas valides par la RFC. Vérifiez l'adresse donnée. Eliminez les caractères comme les espaces ou ; ou & ou ` (backtick).
sendmail NULL " sendmail [path to sendmail ] not executable " Le chemin système pour le programme sendmail n'est pas correct. Aucun executable sendmail n'y a été trouvé. Vérifiez la valeur $param['sendmail_path'] dans votre appel à Mail::factory() . Si vous utilisez un autre mailer que sendmail, (par exemple: qmail) vérifiez l'installation de votre mailer. Normalement il dispose d'un intégrateur de commande sendmail.
sendmail NULL "sendmail returned error code code " Sendmail a retourné une erreur qui doit être traitée par vos soins. Constultez la documention de votre mailer.
smtp PEAR_MAIL_SMTP_ERROR_CREATE "Failed to create a Net_SMTP object" Erreur à la création de la classe. Réinstallez / Mettez-à-jour le module Net_SMTP.
smtp PEAR_MAIL_SMTP_ERROR_CONNECT "Failed to connect to host:port " La connexion au serveur SMTP à échoué. Vérifiez les paramètres $param['port'] et $param['host'] dans votre appel à Mail::factory() .
smtp PEAR_MAIL_SMTP_ERROR_AUTH "method authentication failure" Échec de l'identification. Vérifiez les paramètres $param['auth'] , $param['username'] et $param['password'] dans votre appel à Mail::factory() . Assurez-vous aussi d'utiliser la bonne méthode d'autentification pour ce serveur SMTP.
smtp PEAR_MAIL_SMTP_ERROR_FROM "No From: address has been provided" Le tableau $headers nécessite au moins une entrée from . Ajouter un en-tête From
<?php
$headers
['From'] = 'monmail@example.com';
?>
smtp PEAR_MAIL_SMTP_ERROR_SENDER "Failed to set sender: from " Échec de la configuration de l'adresse de l'expéditeur. Vérifiez les contraintes RFC de l'adresse de l'expéditeur et la connectivité du serveur.
smtp PEAR_MAIL_SMTP_ERROR_RECIPIENT "Failed to add recipient: recipient " Problème sur l'adresse du destinataire Vérifiez la compatibilité avec la RFC pour l'adresse du destinataire et la connectivité du serveur.
smtp PEAR_MAIL_SMTP_ERROR_DATA "Failed to send data" Le contenu de l'email ne peut être envoyé. Vérifiez les compatibilités RFC du corp du message et la connectivité du serveur.

Note

This function can not be called statically.

Example

<?php
include('Mail.php');

$destinataire 'joe@exemple.com';

$entetes['From']    = 'richard@exemple.com';
$entetes['To']      = 'joe@exemple.com';
$entetes['Subject'] = 'Message de test';

$corps 'Contenu du message de test';

$parametres['sendmail_path'] = '/usr/lib/sendmail';

// Creer un objet mail en utilisant la methode Mail::factory.
$objet_mail =& Mail::factory('sendmail'$parametres);

$objet_mail->send($destinataire$entetes$corps);
?>
Crée une instance du mailer (Previous) validation d'adresse (Next)
Last updated: Sun, 29 Aug 2010 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report or add a note.
View this page in:

User Notes:

Note by: dineshgaru@gmail.com
Sir,

i'm below code which is not all working for my website....please help and guide the exact thing that i have to follow.


<?php


$host 
"localhost"
$username "hr@taconsulting.in"
$password "taconsulting2012"



$name $_REQUEST['name'] ;
$sex $_REQUEST['sex'] ;
$email $_REQUEST['email'] ;
$number $_REQUEST['number'] ;
$location $_REQUEST['location'] ;
$relocate $_REQUEST['relocate'] ;
$salary $_REQUEST['salary'] ;
$salary2 $_REQUEST['salary2'] ;
$resume $_REQUEST['resume'] ;
$comments $_REQUEST['comments'] ;




$from $email;
$to "hr@taconsulting.in";
$subject "Enquiry";



$body $body "Name: $name \nSex: $sex \nEmail: $email \nContactNumber: $number \nLocation: $location \nRelocate: $relocate \nCurrentSalary: $salary \nExpectedSalary: $salary2 \nResume: $resume \nComments: $comments \n";


$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)) {
?>

<p> <? echo $mail->getMessage();
Note by: undisclosed-recipients
If you are using smtp to send out the mail, and the To: field shows "undisclosed-recipients:", please remember to add

$headers['To'] = "Recipient <recipient@host.com>"

to your headers.
Note by: burak a.t toruko d.o.t com
Just a correction for my previous message.

These two lines:
$From = "From: ".$from_name." <fromaddress@domain.com>";
$To = "To: ".$to_name." <toaddress@domain.com>";

should read:
$From = $from_name." <fromaddress@domain.com>";
$To = $to_name." <toaddress@domain.com>";
Note by: burak a.t toruko d.o.t com
You can combine PEAR::Mail with mb_string functions to send valid Japanese(ISO-2022-JP) emails via SMTP connection:
<?php
    $from_name 
"&#40658;&#27810;&#12288;&#26126;"// Japanese name
    
$to_name "&#19977;&#33337;&#12288;&#25935;&#37070;"// Another Japanese name
    
$subject "&#26085;&#26412;&#35486;&#12513;&#12540;&#12523;&#12398;&#12486;&#12473;&#12488;"// Japanese subject
    
$mailmsg "&#12371;&#12428;&#12399;&#26085;&#26412;&#35486;&#12398;&#12513;&#12483;&#12475;&#12540;&#12472;&#12391;&#12377;&#12290;&#25991;&#23383;&#21270;&#12369;&#12398;&#12486;&#12473;&#12488;&#12434;&#34892;&#12356;&#12414;&#12377;&#12290;";
    
    
//Convert encodings of subject, sender, recipient and message body to ISO-20222-JP
    
$from_name mb_encode_mimeheader($from_name"ISO-2022-JP""Q");
    
$to_name mb_encode_mimeheader($to_name"ISO-2022-JP""Q");
    
$subject mb_encode_mimeheader($subject"ISO-2022-JP""Q");
    
$mailmsg mb_convert_encoding($mailmsg"ISO-2022-JP""AUTO");

    
$From "From: ".$from_name." <fromaddress@domain.com>";
    
$To "To: ".$to_name." <toaddress@domain.com>";

    
$recipients "toaddress@domain.com";
    
$headers["From"] = $From;
    
$headers["To"] = $To;
    
$headers["Subject"] = $subject;
    
$headers["Reply-To"] = "reply@address.com";
    
$headers["Content-Type"] = "text/plain; charset=ISO-2022-JP";
    
$headers["Return-path"] = "returnpath@address.com";
    
    
$smtpinfo["host"] = "smtp.server.com";
    
$smtpinfo["port"] = "25";
    
$smtpinfo["auth"] = true;
    
$smtpinfo["username"] = "smtp_user";
    
$smtpinfo["password"] = "smtp_password";

    
$mail_object =& Mail::factory("smtp"$smtpinfo);

    
$mail_object->send($recipients$headers$mailmsg);
?>

Tested the script and the E\email sent correctly to: Japanese Outlook Express, Outlook 2000/2003, Japanese Thunderbird, Becky, several Docomo mobiles, several Softbank mobiles.
Note by: David Lidstone
Warning... Depending (I'm guessing) on your SMTP MTA some emails can be sent without dates and some with, unless you specify a date in the header. For example, my _locally_ delivered mail was ending up at the bottom of people's inboxes because it had a date of 1970. External mail was fine (header added by MTA?).

Add this header to fix:
'Date' => date("r")
Note by: arminfrey@gmail.com
In order to send e-mail to cc or bcc with smtp you have to list the cc e-mail address both as a recipient (which decides where the e-mail is sent) and in the cc header, which tells the mail client how to display it.

Here is the code I use:

$to = 'to@example.com';
$cc = 'cc@example.com';

$recipients = $to.", ".$cc;

$headers['From'] = 'from@example.com';
$headers['To'] = $to;
$headers['Subject'] = 'Test message';
$headers['Cc'] = 'cc@example.com';
$headers['Reply-To'] = 'from@example.com';

$send = $mail->send($recipients, $headers, $body);
Note by: James Leckie
To handle errors when sending mail use the following. Great for checking if the SMTP server accepted all the addresses.

$send = $mail->send($to, $headers, $body);
if (PEAR::isError($send)) { print($send->getMessage());}
Note by: Mike Soh
It is important to note that the mail->send() function will wait for the socket to close. Your script may sit for a long time waiting for sendmail/mail/etc to exit.

You may prefer to store the mail information to be processed at a later time.