मैं एक वेबसाइट पर PHP का उपयोग कर रहा हूं और मैं ईमेल की कार्यक्षमता जोड़ना चाहता हूं।
मेरे पास WAMPSERVER स्थापित है।
मैं PHP का उपयोग करके ईमेल कैसे भेजूं?
मैं एक वेबसाइट पर PHP का उपयोग कर रहा हूं और मैं ईमेल की कार्यक्षमता जोड़ना चाहता हूं।
मेरे पास WAMPSERVER स्थापित है।
मैं PHP का उपयोग करके ईमेल कैसे भेजूं?
जवाबों:
PHP के mail()
फ़ंक्शन का उपयोग करना संभव है। याद रखें कि मेल फ़ंक्शन स्थानीय सर्वर पर काम नहीं करेगा।
<?php
$to = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
?>
संदर्भ:
आप https://github.com/PHPMailer/PHPMailer पर PHPMailer वर्ग का भी उपयोग कर सकते हैं ।
यह आपको मेल फ़ंक्शन का उपयोग करने या पारदर्शी रूप से एक smtp सर्वर का उपयोग करने की अनुमति देता है। यह HTML आधारित ईमेल और अटैचमेंट भी संभालता है ताकि आपको अपना खुद का कार्यान्वयन लिखना न पड़े।
वर्ग स्थिर है और इसका उपयोग Drupal, SugarCRM, Yii, और Joomla जैसी कई अन्य परियोजनाओं द्वारा किया जाता है!
यहाँ ऊपर के पेज से एक उदाहरण दिया गया है:
<?php
require 'PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'smtp1.example.com;smtp2.example.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'user@example.com'; // SMTP username
$mail->Password = 'secret'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable encryption, 'ssl' also accepted
$mail->From = 'from@example.com';
$mail->FromName = 'Mailer';
$mail->addAddress('joe@example.net', 'Joe User'); // Add a recipient
$mail->addAddress('ellen@example.com'); // Name is optional
$mail->addReplyTo('info@example.com', 'Information');
$mail->addCC('cc@example.com');
$mail->addBCC('bcc@example.com');
$mail->WordWrap = 50; // Set word wrap to 50 characters
$mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments
$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
}
use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require_once('src/PHPMailer.php'); require_once('src/Exception.php');
यदि आप HTML स्वरूपित ईमेल में रुचि रखते हैं, तो Content-type: text/html;
हेडर में पास करना सुनिश्चित करें । उदाहरण:
// multiple recipients
$to = 'aidan@example.com' . ', '; // note the comma
$to .= 'wez@example.com';
// subject
$subject = 'Birthday Reminders for August';
// message
$message = '
<html>
<head>
<title>Birthday Reminders for August</title>
</head>
<body>
<p>Here are the birthdays upcoming in August!</p>
<table>
<tr>
<th>Person</th><th>Day</th><th>Month</th><th>Year</th>
</tr>
<tr>
<td>Joe</td><td>3rd</td><td>August</td><td>1970</td>
</tr>
<tr>
<td>Sally</td><td>17th</td><td>August</td><td>1973</td>
</tr>
</table>
</body>
</html>
';
// To send HTML mail, the Content-type header must be set
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Additional headers
$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";
// Mail it
mail($to, $subject, $message, $headers);
अधिक जानकारी के लिए, php मेल फ़ंक्शन की जाँच करें ।
PEAR मेल पैकेज नाशपाती मेल पेज में भी देखें
यह मानक मेल () फ़ंक्शन में निर्मित (यदि मानक फ़ंक्शन पर्याप्त नहीं है) की तुलना में थोड़ा अधिक मजबूत प्रतीत होता है।
इस पृष्ठ का एक अंश यहां दिखाया गया है कि इसका उपयोग कैसे किया जाता है। PEAR मेल भेजें () उपयोग
<?php
include('Mail.php');
$recipients = 'joe@example.com';
$headers['From'] = 'richard@example.com';
$headers['To'] = 'joe@example.com';
$headers['Subject'] = 'Test message';
$body = 'Test message';
$smtpinfo["host"] = "smtp.server.com";
$smtpinfo["port"] = "25";
$smtpinfo["auth"] = true;
$smtpinfo["username"] = "smtp_user";
$smtpinfo["password"] = "smtp_password";
// Create the mail object using the Mail::factory method
$mail_object =& Mail::factory("smtp", $smtpinfo);
$mail_object->send($recipients, $headers, $body);
?>
Mail.php
मेरे उदाहरण में संदर्भित फ़ाइल नाशपाती मेल पैकेज का हिस्सा है। यदि आप पीयर मेल पैकेज को डाउनलोड और इंस्टॉल करते हैं, तो आप शामिल कर पाएंगे Mail.php
। यदि आप ऊपर दिए गए 'पीयर मेल पेज' लिंक पर क्लिक करते हैं, तो निर्देशों के साथ डाउनलोड लिंक है।
अधिकांश परियोजनाओं के लिए, मैं इन दिनों स्विफ्ट मेलर का उपयोग करता हूं । यह ईमेल भेजने के लिए एक बहुत ही लचीला और सुरुचिपूर्ण वस्तु-उन्मुख दृष्टिकोण है, वही लोगों द्वारा बनाया गया है जिन्होंने हमें लोकप्रिय सिम्फनी फ्रेमवर्क और ट्विन टेम्पलेट इंजन दिया ।
require 'mail/swift_required.php';
$message = Swift_Message::newInstance()
// The subject of your email
->setSubject('Jane Doe sends you a message')
// The from address(es)
->setFrom(array('jane.doe@gmail.com' => 'Jane Doe'))
// The to address(es)
->setTo(array('frank.stevens@gmail.com' => 'Frank Stevens'))
// Here, you put the content of your email
->setBody('<h3>New message</h3><p>Here goes the rest of my message</p>', 'text/html');
if (Swift_Mailer::newInstance(Swift_MailTransport::newInstance())->send($message)) {
echo json_encode([
"status" => "OK",
"message" => 'Your message has been sent!'
], JSON_PRETTY_PRINT);
} else {
echo json_encode([
"status" => "error",
"message" => 'Oops! Something went wrong!'
], JSON_PRETTY_PRINT);
}
स्विफ्ट मेलर का उपयोग कैसे करें के बारे में अधिक जानकारी के लिए आधिकारिक दस्तावेज देखें ।
Swift_MailTransport
जब आपके लिंक टू डॉक्यूमेंटेशन कहते हैं Swift_SendmailTransport
। क्या इसका मतलब है कि आप स्विफ्ट मेलर के पुराने संस्करण का उल्लेख कर रहे हैं या यह एक टाइपो है, या शायद मैं कुछ गलत समझ रहा हूं? मुझे स्विफ्ट-मेलर के पुराने संस्करण को स्थापित करने की आवश्यकता है क्योंकि मेरे सर्वर पर php7 नहीं है। इसलिए मुझे यह जानने की जरूरत है कि क्या मौजूदा संस्करण के लिए प्रलेखन पैकेज के पुराने संस्करण के साथ जाएगा। धन्यवाद।
मेल फ़ंक्शन का उपयोग करके सादे पाठ ईमेल भेजने के लिए यह बहुत ही मूल तरीका है।
<?php
$to = 'SomeOtherEmailAddress@Domain.com';
$subject = 'This is subject';
$message = 'This is body of email';
$from = "From: FirstName LastName <SomeEmailAddress@Domain.com>";
mail($to,$subject,$message,$from);
पूर्ण कोड उदाहरण ।।
एक बार आजमा कर देखें ।।
<?php
// Multiple recipients
$to = 'johny@example.com, sally@example.com'; // note the comma
// Subject
$subject = 'Birthday Reminders for August';
// Message
$message = '
<html>
<head>
<title>Birthday Reminders for August</title>
</head>
<body>
<p>Here are the birthdays upcoming in August!</p>
<table>
<tr>
<th>Person</th><th>Day</th><th>Month</th><th>Year</th>
</tr>
<tr>
<td>Johny</td><td>10th</td><td>August</td><td>1970</td>
</tr>
<tr>
<td>Sally</td><td>17th</td><td>August</td><td>1973</td>
</tr>
</table>
</body>
</html>
';
// To send HTML mail, the Content-type header must be set
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/html; charset=iso-8859-1';
// Additional headers
$headers[] = 'To: Mary <mary@example.com>, Kelly <kelly@example.com>';
$headers[] = 'From: Birthday Reminder <birthday@example.com>';
$headers[] = 'Cc: birthdayarchive@example.com';
$headers[] = 'Bcc: birthdaycheck@example.com';
// Mail it
mail($to, $subject, $message, implode("\r\n", $headers));
?>
भविष्य के पाठकों के लिए: यदि अन्य उत्तर काम नहीं करते हैं तो यह कोशिश करें (जैसा कि मेरे साथ हुआ था):
1.) PHPMailer डाउनलोड करें , ज़िप फ़ाइल खोलें और फ़ोल्डर को अपनी परियोजना निर्देशिका में निकालें।
3.) निकाले गए निर्देशिका को PHPMailer का नाम बदलें और अपनी php स्क्रिप्ट के अंदर नीचे कोड लिखें (स्क्रिप्ट PHPMailer फ़ोल्डर के बाहर होनी चाहिए )
<?php
// PHPMailer classes into the global namespace
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
// Base files
require 'PHPMailer/src/Exception.php';
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';
// create object of PHPMailer class with boolean parameter which sets/unsets exception.
$mail = new PHPMailer(true);
try {
$mail->isSMTP(); // using SMTP protocol
$mail->Host = 'smtp.gmail.com'; // SMTP host as gmail
$mail->SMTPAuth = true; // enable smtp authentication
$mail->Username = 'sender@gmail.com'; // sender gmail host
$mail->Password = 'password'; // sender gmail host password
$mail->SMTPSecure = 'tls'; // for encrypted connection
$mail->Port = 587; // port for SMTP
$mail->setFrom('sender@gmail.com', "Sender"); // sender's email and name
$mail->addAddress('receiver@gmail.com', "Receiver"); // receiver's email and name
$mail->Subject = 'Test subject';
$mail->Body = 'Test body';
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) { // handle error.
echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;
}
?>
मूल PHP फ़ंक्शन mail()
मेरे लिए काम नहीं करता है। यह संदेश जारी करता है:
503 गैर-स्थानीय ई-मेल पते पर भेजने का प्रयास करते समय इस मेल सर्वर को प्रमाणीकरण की आवश्यकता होती है
इसलिए, मैं आमतौर पर PHPMailer
पैकेज का उपयोग करता हूं
मैंने 5.2.23 से संस्करण डाउनलोड किया है: GitHub ।
मैंने अभी 2 फाइलें ली हैं और उन्हें अपने स्रोत PHP रूट में डाल दिया है
class.phpmailer.php
class.smtp.php
PHP में, फ़ाइल को जोड़ना होगा
require_once('class.smtp.php');
require_once('class.phpmailer.php');
इसके बाद, यह सिर्फ कोड है:
require_once('class.smtp.php');
require_once('class.phpmailer.php');
...
//----------------------------------------------
// Send an e-mail. Returns true if successful
//
// $to - destination
// $nameto - destination name
// $subject - e-mail subject
// $message - HTML e-mail body
// altmess - text alternative for HTML.
//----------------------------------------------
function sendmail($to,$nameto,$subject,$message,$altmess) {
$from = "yourcontact@yourdomain.com";
$namefrom = "yourname";
$mail = new PHPMailer();
$mail->CharSet = 'UTF-8';
$mail->isSMTP(); // by SMTP
$mail->SMTPAuth = true; // user and password
$mail->Host = "localhost";
$mail->Port = 25;
$mail->Username = $from;
$mail->Password = "yourpassword";
$mail->SMTPSecure = ""; // options: 'ssl', 'tls' , ''
$mail->setFrom($from,$namefrom); // From (origin)
$mail->addCC($from,$namefrom); // There is also addBCC
$mail->Subject = $subject;
$mail->AltBody = $altmess;
$mail->Body = $message;
$mail->isHTML(); // Set HTML type
//$mail->addAttachment("attachment");
$mail->addAddress($to, $nameto);
return $mail->send();
}
यह एक सम्मोहन की तरह काम करता है
use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require_once('src/PHPMailer.php'); require_once('src/Exception.php');
PHP से ईमेल भेजने का मुख्य तरीका इसके अंतर्निहित mail()
फ़ंक्शन का उपयोग करना है, लेकिन एसडीके के लिए तैयार होने वाले कुछ जोड़े हैं जो एकीकरण को कम कर सकते हैं:
पुनश्च मैं Pepipost के साथ कार्यरत हूँ।
आप एक मेल वेब सेवा जैसे Postmark, Sendgrid आदि का उपयोग कर सकते हैं।
Sendgrid बनाम Postmark बनाम Amazon SES और अन्य ईमेल / SMTP API प्रदाता?
संपादित करें: मैं अभी Google Gmail API का उपयोग करता हूं । मुझे सख्त फ़िल्टर के कारण मेरे नियोक्ता के संगठन को अनुस्मारक ईमेल भेजने में परेशानी हुई। लेकिन जब तक आप लोगों को स्पैम नहीं करते हैं, तब तक जीमेल काम करता है।
इस स्क्रिप्ट के साथ ईमेल भेजा गया
<h2>Test Mail</h2>
<?php
if (!isset($_POST["submit"]))
{
?>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
From: <input type="text" name="from"><br>
Subject: <input type="text" name="subject"><br>
Message: <textarea rows="10" cols="40" name="message"></textarea><br>
<input type="submit" name="submit" value="Click To send mail">
</form>
<?php
}
else
{
if (isset($_POST["from"]))
{
$from = $_POST["from"]; // sender
$subject = $_POST["subject"];
$message = $_POST["message"];
$message = wordwrap($message, 70);
mail("Test@example.com",$subject,$message,"From: $from\n");
echo "Thank you for sending an email";
}
}
?>
एक बार जब आप ईमेल भेजें बटन दबाते हैं, तो ईमेल Test@example.com पर भेजा जाएगा
<?php
include "db_conn.php";//connection file
require "PHPMailerAutoload.php";// it will be in PHPMailer
require "class.smtp.php";// it will be in PHPMailer
require "class.phpmailer.php";// it will be in PHPMailer
$response = array();
$params = json_decode(file_get_contents("php://input"));
if(!empty($params->email_id)){
$email_id = $params->email_id;
$flag=false;
echo "something";
if(!filter_var($email_id, FILTER_VALIDATE_EMAIL))
{
$response['ERROR']='EMAIL address format error';
echo json_encode($response,JSON_UNESCAPED_SLASHES);
return;
}
$sql="SELECT * from sales where email_id ='$email_id' ";
$result = mysqli_query($conn,$sql);
$count = mysqli_num_rows($result);
$to = "demo@gmail.com";
$subject = "DEMO Subject";
$messageBody ="demo message .";
if($count ==0){
$response["valid"] = false;
$response["message"] = "User is not registered yet";
echo json_encode($response);
return;
}
else {
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true; // authentication enabled
$mail->IsHTML(true);
$mail->SMTPSecure = 'ssl';//turn on to send html email
// $mail->Host = "ssl://smtp.zoho.com";
$mail->Host = "p3plcpnl0749.prod.phx3.secureserver.net";//you can use gmail
$mail->Port = 465;
$mail->Username = "demousername@example.com";
$mail->Password = "demopassword";
$mail->SetFrom("demousername@example.com", "Any demo alert");
$mail->Subject = $subject;
$mail->Body = $messageBody;
$mail->AddAddress($to);
echo "yes";
if(!$mail->send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
}
else {
echo "Message has been sent successfully";
}
}
}
else{
$response["valid"] = false;
$response["message"] = "Required field(s) missing";
echo json_encode($response);
}
?>
उपरोक्त कोड मेरे लिए काम कर रहा है।