Mail::send()

Mail::send() – E-mail elküldése

Synopsis

require_once 'Mail.php';

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

Description

E-mail elküldése. A send() függvényt a factory() függvény által visszaadott objektum biztosítja.

Parameter

  • mixed $recipients - egy tömb, vagy egy vesszővel elválasztott sztring a címzettekkel

  • array $headers - e-mail fejlécek asszociatív tömbje. A fejléc nevének a tömb kulcsa, a fejléc értékének a tömb értéke felel meg.

  • string $body - az e-mail tartalma.

Return value

boolean - TRUE vagy egy PEAR_Error objektum hiba esetén

Throws

Possible PEAR_Error values
Mailer driver Hibakód Hibaüzenet Ok Megoldás
sendmail/smtp NULL "No from address given." A $headers tömbben legalább egy from elemet meg kell adni. From elem hozzáadása:
<?php
$headers
['From'] = 'mymail@example.com';
?>
sendmail NULL "From address specified with dangerous characters." A $headers tömb From eleme egy vagy több olyan karaktert tartalmaz, amely elképzelhető, hogy nem felel meg az RFC követelményeknek. Ellenőrizzük a megadott From címet, hogy nem tartalmaz-e szóközt, pontosvesszőt (;), és-jelet (&) vagy backtick-et (`).
sendmail NULL "sendmail [elérési út] not executable" A sendmail programhoz megadott elérési út nem megfelelő. A megadott útvonalon nem található a sendmail futtatható fájlja. Ellenőrizzük a Mail::factory() függvény meghívásakor átadott $param['sendmail_path'] elem értékét. Ha másik levélküldő programot használunk (pl. qmail), ellenőrizzük a telepített programot. Alapesetben tartalmaznia kellene egy sendmail wrapper-t.
sendmail NULL "sendmail returned error code kód" A sendmail hibával tért vissza, amelyet le kell kezelnünk. Lásd a levélküldő program dokumentációját.
smtp NULL "unable to instantiate Net_SMTP object" Hiba történt a példány létrehozása során. Telepítsük újra/frissítsük a Net_SMTP csomagot.
smtp NULL "unable to connect to smtp server host:port" Az SMTP szerverhez történő csatlakozás meghiúsult Ellenőrizzük a $param['port'] és a $param['host'] elemeket a Mail::factory() függvény meghívásánál.
smtp NULL "unable to authenticate to smtp server" A hitelesítés meghiúsult Ellenőrizzük a $param['auth'], $param['username'] és $param['password'] elemeket a Mail::factory() függvény meghívásánál. Győződjünk meg róla, hogy a megfelelő hitelesítési módot használjuk az SMTP szerverhez.
smtp NULL "unable to identify smtp server" Nem sikerült megkezdeni a kérés továbbítását az SMTP szerverhez Ellenőrizzük, hogy az SMTP szerver megfelel-e az RFC előírásoknak.
smtp NULL "unable to set sender to feladó" A feladó címének elküldése nem járt sikerrel. Ellenőrizzük a feladó e-mail címének szabványosságát és a szerver csatlakozását.
smtp NULL "unable to add recipient címzett:hibakód " A címzett címének hozzáadása nem járt sikerrel Ellenőrizzük a címzett címének szabványosságát és a szerver csatlakozását.
smtp NULL "unable to send data" Az e-mail tartalmát (szövegét) nem sikerült elküldeni. Ellenőrizzük az e-mail tartalmának szabványosságát és a szerver csatlakozását.

Note

This function can not be called statically.

Example

<?php
include 'Mail.php';

$cimzettek 'joe@example.com';

$fejlecek['From']    = 'richard@example.com';
$fejlecek['To']      = 'joe@example.com';
$fejlecek['Subject'] = 'Teszt &uuml;zenet';

$tartalom 'Teszt &uuml;zenet';

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

// Objektum l&eacute;trehoz&aacute;sa a Mail::factory() met&oacute;dus seg&iacute;ts&eacute;g&eacute;vel
$mail_objektum =& Mail::factory('sendmail'$parameterek);

$mail_objektum->send($cimzettek$fejlecek$tartalom);
?>

Ha Bcc:-ként is kívánunk címzetteket megadni, a cimzettek változónak asszociatív tömbnek kell lennie:

<?php
include('Mail.php');
 
$cimzettek = array('To' => 'joe@example.com',
                   
'Bcc' => 'jane@example.com');
 
$fejlecek['From']    = 'richard@example.com';
$fejlecek['To']      = 'joe@example.com';
$fejlecek['Subject'] = 'Teszt &uuml;zenet';
 
$tartalom 'Teszt &uuml;zenet';
 
$parameterek['sendmail_path'] = '/usr/lib/sendmail';
 
// Objektum l&eacute;trehoz&aacute;sa a Mail::factory() met&oacute;dus seg&iacute;ts&eacute;g&eacute;vel
$mail_objektum =& Mail::factory('sendmail'$parameterek);
 
$mail_objektum->send($cimzettek$fejlecek$tartalom);
?>
létrehoz egy mailer példányt (Previous) email address validation (Next)
Last updated: Wed, 22 Oct 2014 — 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.