खोज…


पैरामीटर

पैरामीटर विवरण
string $to प्राप्तकर्ता का ईमेल पता
string $subject विषय पंक्ति
string $message ईमेल का मुख्य भाग
string $additional_headers वैकल्पिक: ईमेल में जोड़ने के लिए शीर्ष लेख
string $additional_parameters वैकल्पिक: कमांड लाइन में कॉन्फ़िगर किए गए मेल एप्लिकेशन को पास करने के लिए तर्क

टिप्पणियों

ई-मेल मैं अपनी स्क्रिप्ट के माध्यम से भेज रहा हूँ कभी नहीं आता है। मुझे क्या करना चाहिए?

  • सुनिश्चित करें कि आपके पास कोई भी त्रुटि देखने के लिए त्रुटि रिपोर्टिंग चालू है।

  • यदि आपके पास PHP की त्रुटि लॉग फ़ाइलों तक पहुंच है, तो उन्हें जांचें।

  • क्या आपके सर्वर पर mail() कमांड ठीक से कॉन्फ़िगर किया गया है ? (यदि आप साझा होस्टिंग पर हैं, तो आप यहां कुछ भी नहीं बदल सकते हैं।)

  • यदि ई-मेल बस गायब हो रहे हैं, तो एक फ्रीमेल सेवा के साथ एक ई-मेल खाता शुरू करें जिसमें एक स्पैम फ़ोल्डर है (या एक मेल खाते का उपयोग करें जिसमें कोई स्पैम फ़िल्टरिंग नहीं है)। इस तरह, आप देख सकते हैं कि क्या ई-मेल को भेजा नहीं जा रहा है, या शायद बाहर भेजा गया है लेकिन स्पैम के रूप में फ़िल्टर किया गया है।

  • क्या आपने "प्रेषक को भेजे गए" पते पर भेजे गए मेल से "::" पते का उपयोग किया था? आप त्रुटि मेल के लिए एक अलग बाउंस पता भी सेट कर सकते हैं।

मैं जो ई-मेल भेज रहा हूं वह स्पैम के रूप में फ़िल्टर हो रहा है। मुझे क्या करना चाहिए?

  • क्या प्रेषक का पता ("से") उस डोमेन से संबंधित है जो उस सर्वर पर चलता है जिसे आप ई-मेल से भेजते हैं? यदि नहीं, तो उसे बदलें।

    [email protected] जैसे प्रेषक पते का उपयोग कभी न करें। यदि आपको अलग पते पर पहुंचने के लिए उत्तरों की आवश्यकता है, तो reply-to उपयोग करें।

  • क्या आपका सर्वर ब्लैकलिस्ट पर है? यह एक संभावना है जब आप साझा होस्टिंग पर होते हैं जब पड़ोसी बुरा व्यवहार करते हैं। Spamhaus की तरह अधिकांश ब्लैकलिस्ट प्रदाताओं के पास ऐसे उपकरण होते हैं जो आपको अपने सर्वर का IP देखने की अनुमति देते हैं। एमएक्स टूलबॉक्स जैसे तीसरे पक्ष के उपकरण भी हैं

  • PHP के कुछ इंस्टॉलेशन को एक मेल भेजने वाले को पता भेजने के लिए मेल () में पाँचवाँ पैरामीटर सेट करने की आवश्यकता होती है। देखें कि क्या यह आपके लिए मामला हो सकता है।

  • सब और विफल रहता है, ईमेल के रूप में एक सेवा के रूप में उपयोग करने पर विचार Mailgun , SparkPost , अमेज़न एसईएस , Mailjet , SendinBlue या SendGrid करने वाली कुछ-बजाय नाम। उन सभी के पास एपीआई हैं जिन्हें PHP का उपयोग करके बुलाया जा सकता है।

ईमेल भेजना - मूल बातें, अधिक विवरण और एक पूर्ण उदाहरण

एक विशिष्ट ईमेल में तीन मुख्य घटक होते हैं:

  1. एक प्राप्तकर्ता (एक ईमेल पते के रूप में प्रतिनिधित्व)
  2. एक विषय
  3. एक संदेश निकाय

PHP में मेल भेजना बिल्ट-इन फंक्शन mail() को कॉल करने जितना आसान हो सकता है। mail() पाँच पैरामीटर होते हैं, लेकिन पहले तीनों को एक ईमेल भेजने की आवश्यकता होती है (हालांकि चार मापदंडों का आमतौर पर उपयोग किया जाता है जैसा कि नीचे दिखाया जाएगा)। पहले तीन पैरामीटर हैं:

  1. प्राप्तकर्ता का ईमेल पता (स्ट्रिंग)
  2. ईमेल का विषय (स्ट्रिंग)
  3. ईमेल का मुख्य भाग (स्ट्रिंग) (जैसे ईमेल की सामग्री)

एक न्यूनतम उदाहरण निम्नलिखित कोड जैसा होगा:

mail('[email protected]', 'Email Subject', 'This is the email message body');

ऊपर का सरल उदाहरण सीमित परिस्थितियों में अच्छी तरह से काम करता है जैसे कि आंतरिक सिस्टम के लिए ईमेल अलर्ट को हार्डकोड करना। हालाँकि, कोड क्लीनर को प्रबंधित करने में आसान बनाने के लिए (उदाहरण के लिए, डायनामिक रूप से फ़ॉर्म सबमिट करने से ईमेल बनाना mail() वेरिएबल्स में mail() लिए डेटा को पैरामीटर के रूप में रखा जाना आम है।

इसके अतिरिक्त, mail() एक चौथे पैरामीटर को स्वीकार करता है जो आपको अपने ईमेल के साथ भेजे गए अतिरिक्त मेल हेडर रखने की अनुमति देता है। ये शीर्ष लेख आपको सेट करने की अनुमति दे सकते हैं:

  • From नाम और ईमेल पते उपयोगकर्ता देखेंगे
  • Reply-To ईमेल पते पर उपयोगकर्ता की प्रतिक्रिया भेजी जाएगी
  • X-Mailer जैसे अतिरिक्त गैर-मानक हेडर जो प्राप्तकर्ता को बता सकते हैं कि यह ईमेल PHP के माध्यम से भेजा गया था
$to      = '[email protected]';             // Could also be $to      = $_POST['recipient'];  
$subject = 'Email Subject';                     // Could also be $subject = $_POST['subject'];  
$message = 'This is the email message body';    // Could also be $message = $_POST['message'];  
$headers = implode("\r\n", [
    'From: John Conde <[email protected]>',
    'Reply-To: [email protected]',
    'X-Mailer: PHP/' . PHP_VERSION
]);

वैकल्पिक पांचवें पैरामीटर का उपयोग मेल भेजने के दौरान कॉन्फ़िगर किए जाने वाले प्रोग्राम में कमांड लाइन विकल्प के रूप में अतिरिक्त झंडे को पारित करने के लिए किया जा सकता है, जैसा कि sendmail_path कॉन्फ़िगरेशन सेटिंग द्वारा परिभाषित किया गया है। उदाहरण के लिए, यह -f सेंडमेल विकल्प के साथ सेंडमेल / पोस्टफिक्स का उपयोग करते समय लिफाफा भेजने वाले का पता सेट करने के लिए इस्तेमाल किया जा सकता है।

$fifth  = '[email protected]';

यद्यपि mail() उपयोग करना बहुत विश्वसनीय हो सकता है, यह इस बात की गारंटी नहीं है कि mail() कहा जाने पर एक ईमेल भेजा जाएगा। यह देखने के लिए कि क्या आपका ईमेल भेजते समय कोई संभावित त्रुटि है, आपको mail() से रिटर्न वैल्यू पर कब्जा करना चाहिए। यदि डिलीवरी सफलतापूर्वक मेल के लिए स्वीकार कर ली गई है तो TRUE लौटाया जाएगा। अन्यथा, आपको FALSE प्राप्त होगा।

$result = mail($to, $subject, $message, $headers, $fifth);

नोट : यद्यपि mail() TRUE वापस आ सकता है, इसका मतलब यह नहीं है कि ईमेल भेजा गया था या प्राप्तकर्ता द्वारा ईमेल प्राप्त किया जाएगा। यह केवल इंगित करता है कि मेल आपके सिस्टम के मेल सिस्टम को सफलतापूर्वक सौंप दिया गया था।

यदि आप HTML ईमेल भेजना चाहते हैं, तो बहुत अधिक काम नहीं करना है। आपको:

  1. MIME-Version शीर्ष लेख जोड़ें
  2. Content-Type शीर्ष लेख जोड़ें
  3. सुनिश्चित करें कि आपकी ईमेल सामग्री HTML है
$to      = '[email protected]';                            
$subject = 'Email Subject';                                     
$message = '<html><body>This is the email message body</body></html>';       
$headers = implode("\r\n", [
    'From: John Conde <[email protected]>',
    'Reply-To: [email protected]',
    'MIME-Version: 1.0',
    'Content-Type: text/html; charset=ISO-8859-1',
    'X-Mailer: PHP/' . PHP_VERSION
]);

यहां PHP के mail() फ़ंक्शन का उपयोग करने का एक पूर्ण उदाहरण है

<?php

// Debugging tools. Only turn these on in your development environment.

error_reporting(-1);
ini_set('display_errors', 'On');
set_error_handler("var_dump");

// Special mail settings that can make mail less likely to be considered spam
// and offers logging in case of technical difficulties.

ini_set("mail.log", "/tmp/mail.log");
ini_set("mail.add_x_header", TRUE);

// The components of our email

$to      = '[email protected]';
$subject = 'Email Subject';
$message = 'This is the email message body';
$headers = implode("\r\n", [
    'From: [email protected]',
    'Reply-To: [email protected]',
    'X-Mailer: PHP/' . PHP_VERSION
]);

// Send the email

$result = mail($to, $subject, $message, $headers);

// Check the results and react accordingly

if ($result) {
  
    // Success! Redirect to a thank you page. Use the
    // POST/REDIRECT/GET pattern to prevent form resubmissions
    // when a user refreshes the page.
  
    header('Location: http://example.com/path/to/thank-you.php', true, 303);
    exit;
  
}
else {
  
    // Your mail was not sent. Check your logs to see if
    // the reason was reported there for you.
  
}

यह सभी देखें

आधिकारिक दस्तावेज

संबंधित स्टैक ओवरफ्लो प्रश्न

वैकल्पिक मेलर्स

ईमेल सर्वर

संबंधित विषय

मेल का उपयोग करके HTML ईमेल भेजना ()

<?php
$to      = '[email protected]';
$subject = 'Sending an HTML email using mail() in PHP';
$message = '<html><body><p><b>This paragraph is bold.</b></p><p><i>This text is italic.</i></p></body></html>';

$headers = implode("\r\n", [
    "From: John Conde <[email protected]>",
    "Reply-To: [email protected]",
    "X-Mailer: PHP/" . PHP_VERSION,
    "MIME-Version: 1.0",
    "Content-Type: text/html; charset=UTF-8"
]);

mail($to, $subject, $message, $headers);

यह बहुत अलग नहीं है फिर एक सादा पाठ ईमेल भेज रहा है । कंटेंट बॉडी के होने वाले प्रमुख महत्वपूर्ण अंतर HTML डॉक्यूमेंट की तरह संरचित होते हैं और दो अतिरिक्त हेडर होते हैं जिन्हें अवश्य शामिल किया जाना चाहिए ताकि ईमेल क्लाइंट को HTML के रूप में ईमेल को ट्रेंड करना पता हो। वो हैं:

  • MIME- संस्करण: 1.0
  • सामग्री-प्रकार: पाठ / html; charset = UTF-8

PHPMailer का उपयोग करके सादा पाठ ईमेल भेजना

मूल पाठ ईमेल

<?php

$mail = new PHPMailer();

$mail->From     = "[email protected]";
$mail->FromName = "Full Name";
$mail->addReplyTo("[email protected]", "Reply Address");
$mail->Subject  = "Subject Text";
$mail->Body     = "This is a sample basic text email using PHPMailer.";

if($mail->send()) {
    // Success! Redirect to a thank you page. Use the
    // POST/REDIRECT/GET pattern to prevent form resubmissions
    // when a user refreshes the page.
  
    header('Location: http://example.com/path/to/thank-you.php', true, 303);
    exit;
} 
else {
    echo "Mailer Error: " . $mail->ErrorInfo;
}

अतिरिक्त प्राप्तकर्ता, सीसी प्राप्तकर्ता, बीसीसी प्राप्तकर्ता को जोड़ना

<?php

$mail = new PHPMailer();

$mail->From     = "[email protected]";
$mail->FromName = "Full Name";
$mail->addReplyTo("[email protected]", "Reply Address");
$mail->addAddress("[email protected]", "Recepient Name");
$mail->addAddress("[email protected]"); 
$mail->addCC("[email protected]");
$mail->addBCC("[email protected]");
$mail->Subject  = "Subject Text";
$mail->Body     = "This is a sample basic text email using PHPMailer.";

if($mail->send()) {
    // Success! Redirect to a thank you page. Use the
    // POST/REDIRECT/GET pattern to prevent form resubmissions
    // when a user refreshes the page.
  
    header('Location: http://example.com/path/to/thank-you.php', true, 303);
    exit;
} 
else {
    echo "Error: " . $mail->ErrorInfo;
}   

मेल का उपयोग कर अटैचमेंट के साथ ईमेल भेजना ()

<?php

$to         = '[email protected]';
$subject    = 'Email Subject';
$message    = 'This is the email message body';

$attachment = '/path/to/your/file.pdf';
$content = file_get_contents($attachment);

/* Attachment content transferred in Base64 encoding
MUST be split into chunks 76 characters in length as
specified by RFC 2045 section 6.8. By default, the
function chunk_split() uses a chunk length of 76 with
a trailing CRLF (\r\n). The 76 character requirement
does not include the carriage return and line feed */
$content = chunk_split(base64_encode($content));

/* Boundaries delimit multipart entities. As stated
in RFC 2046 section 5.1, the boundary MUST NOT occur
in any encapsulated part. Therefore, it should be
unique. As stated in the following section 5.1.1, a
boundary is defined as a line consisting of two hyphens
("--"), a parameter value, optional linear whitespace,
and a terminating CRLF. */
$prefix     = "part_"; // This is an optional prefix
/* Generate a unique boundary parameter value with our
prefix using the uniqid() function. The second parameter
makes the parameter value more unique. */
$boundary   = uniqid($prefix, true);

// headers
$headers    = implode("\r\n", [
    'From: [email protected]',
    'Reply-To: [email protected]',
    'X-Mailer: PHP/' . PHP_VERSION,
    'MIME-Version: 1.0',
    // boundary parameter required, must be enclosed by quotes
    'Content-Type: multipart/mixed; boundary="' . $boundary . '"',
    "Content-Transfer-Encoding: 7bit",
    "This is a MIME encoded message." // message for restricted transports
]);

// message and attachment
$message    = implode("\r\n", [ 
    "--" . $boundary, // header boundary delimiter line
    'Content-Type: text/plain; charset="iso-8859-1"',
    "Content-Transfer-Encoding: 8bit",
    $message,
    "--" . $boundary, // content boundary delimiter line
    'Content-Type: application/octet-stream; name="RenamedFile.pdf"',
    "Content-Transfer-Encoding: base64",
    "Content-Disposition: attachment",
    $content,
    "--" . $boundary . "--" // closing boundary delimiter line
]);

$result = mail($to, $subject, $message, $headers); // send the email

if ($result) {
    // Success! Redirect to a thank you page. Use the
    // POST/REDIRECT/GET pattern to prevent form resubmissions
    // when a user refreshes the page.
  
    header('Location: http://example.com/path/to/thank-you.php', true, 303);
    exit;
}
else {
    // Your mail was not sent. Check your logs to see if
    // the reason was reported there for you.
}

सामग्री-स्थानांतरण-एन्कोडिंग

उपलब्ध एनकोडिंग 7bit , 8bit , बाइनरी , उद्धृत-प्रिंट करने योग्य , बेस 64 , ietf-token , और x-token हैं । इन एन्कोडिंग्स में, जब एक हेडर में मल्टीपार्ट कंटेंट-टाइप होता है, तो कंटेंट-ट्रांसफर-एन्कोडिंग 7bit , 8bit , या बाइनरी के अलावा कोई अन्य वैल्यू नहीं होना चाहिए जैसा कि RFC 2045, सेक्शन 6.4 में कहा गया है।

हमारा उदाहरण 7bit एन्कोडिंग को चुनता है, जो मल्टीपार्ट हैडर के लिए US-ASCII वर्णों का प्रतिनिधित्व करता है क्योंकि, जैसा कि RFC 2045 खंड 6 में उल्लेख किया गया है, कुछ प्रोटोकॉल केवल इस एन्कोडिंग का समर्थन करते हैं। सीमाओं के भीतर डेटा को फिर से एक आंशिक रूप से (RFC 2046, धारा 5.1) आधार पर एन्कोड किया जा सकता है। यह उदाहरण ठीक यही करता है। पहला भाग, जिसमें पाठ / सादा संदेश शामिल है, को 8 बिट के रूप में परिभाषित किया गया है क्योंकि यह अतिरिक्त वर्णों का समर्थन करने के लिए आवश्यक हो सकता है। इस मामले में, लैटिन 1 (iso-8859-1) वर्ण सेट का उपयोग किया जा रहा है। दूसरा भाग अनुलग्नक है और इसलिए इसे बेस 64-एन्कोडेड एप्लिकेशन / ऑक्टेट-स्ट्रीम के रूप में परिभाषित किया गया है। चूंकि बेस 64 मनमाना डेटा को 7 बिट रेंज में बदलता है, इसलिए इसे प्रतिबंधित ट्रांसपोर्ट (आरएफसी 2045, सेक्शन 6.2) पर भेजा जा सकता है।

PHPMailer का उपयोग करके HTML ईमेल भेजना

<?php

$mail = new PHPMailer();

$mail->From     = "[email protected]";
$mail->FromName = "Full Name";
$mail->addReplyTo("[email protected]", "Reply Address");
$mail->addAddress("[email protected]", "Recepient Name");
$mail->addAddress("[email protected]"); 
$mail->addCC("[email protected]");
$mail->addBCC("[email protected]");
$mail->Subject  = "Subject Text";
$mail->isHTML(true);
$mail->Body     = "<html><body><p><b>This paragraph is bold.</b></p><p><i>This text is italic.</i></p></body></html>";
$mail->AltBody = "This paragraph is not bold.\n\nThis text is not italic.";

if($mail->send()) {
    // Success! Redirect to a thank you page. Use the
    // POST/REDIRECT/GET pattern to prevent form resubmissions
    // when a user refreshes the page.
  
    header('Location: http://example.com/path/to/thank-you.php', true, 303);
    exit;
} 
else {
    echo "Error: " . $mail->ErrorInfo;
}   

PHPMailer का उपयोग करके अनुलग्नक के साथ ईमेल भेजना

<?php

$mail = new PHPMailer();

$mail->From     = "[email protected]";
$mail->FromName = "Full Name";
$mail->addReplyTo("[email protected]", "Reply Address");
$mail->Subject  = "Subject Text";
$mail->Body     = "This is a sample basic text email with an attachment using PHPMailer.";

// Add Static Attachment
$attachment = '/path/to/your/file.pdf';
$mail->AddAttachment($attachment , 'RenamedFile.pdf');

// Add Second Attachment, run-time created. ie: CSV to be open with Excel
$csvHeader = "header1,header2,header3";
$csvData = "row1col1,row1col2,row1col3\nrow2col1,row2col2,row2col3";

$mail->AddStringAttachment($csvHeader ."\n" . $csvData, 'your-csv-file.csv', 'base64', 'application/vnd.ms-excel');

if($mail->send()) {
    // Success! Redirect to a thank you page. Use the
    // POST/REDIRECT/GET pattern to prevent form resubmissions
    // when a user refreshes the page.
  
    header('Location: http://example.com/path/to/thank-you.php', true, 303);
    exit;
} 
else {
    echo "Error: " . $mail->ErrorInfo;
}   

Sendgrid का उपयोग करके सादा पाठ ईमेल भेजना

मूल पाठ ईमेल

<?php

$sendgrid = new SendGrid("YOUR_SENDGRID_API_KEY");
$email    = new SendGrid\Email();

$email->addTo("[email protected]")
      ->setFrom("[email protected]")
      ->setSubject("Subject Text")
      ->setText("This is a sample basic text email using ");

$sendgrid->send($email);

अतिरिक्त प्राप्तकर्ता, सीसी प्राप्तकर्ता, बीसीसी प्राप्तकर्ता को जोड़ना

<?php

$sendgrid = new SendGrid("YOUR_SENDGRID_API_KEY");
$email    = new SendGrid\Email();

$email->addTo("[email protected]")
      ->setFrom("[email protected]")
      ->setSubject("Subject Text")
      ->setHtml("<html><body><p><b>This paragraph is bold.</b></p><p><i>This text is italic.</i></p></body></html>");
      
$personalization = new Personalization();
$email = new Email("Recepient Name", "[email protected]");
$personalization->addTo($email);
$email = new Email("RecepientCC Name", "[email protected]");
$personalization->addCc($email);
$email = new Email("RecepientBCC Name", "[email protected]");
$personalization->addBcc($email);
$email->addPersonalization($personalization);
    
$sendgrid->send($email);

Sendgrid का उपयोग करके अनुलग्नक के साथ ईमेल भेजना

<?php

$sendgrid = new SendGrid("YOUR_SENDGRID_API_KEY");
$email    = new SendGrid\Email();

$email->addTo("[email protected]")
      ->setFrom("[email protected]")
      ->setSubject("Subject Text")
      ->setText("This is a sample basic text email using ");
      
$attachment = '/path/to/your/file.pdf';
$content    = file_get_contents($attachment);
$content    = chunk_split(base64_encode($content));

$attachment = new Attachment();
$attachment->setContent($content);
$attachment->setType("application/pdf");
$attachment->setFilename("RenamedFile.pdf");
$attachment->setDisposition("attachment");
$email->addAttachment($attachment);

$sendgrid->send($email);


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow