আমি একটি ওয়েবসাইটে পিএইচপি ব্যবহার করছি এবং আমি ইমেল কার্যকারিতা যুক্ত করতে চাই।
আমি WAMPSERVER ইনস্টল করেছি।
আমি কীভাবে পিএইচপি ব্যবহার করে ইমেল পাঠাব?
আমি একটি ওয়েবসাইটে পিএইচপি ব্যবহার করছি এবং আমি ইমেল কার্যকারিতা যুক্ত করতে চাই।
আমি WAMPSERVER ইনস্টল করেছি।
আমি কীভাবে পিএইচপি ব্যবহার করে ইমেল পাঠাব?
উত্তর:
পিএইচপি এর 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 ক্লাসও ব্যবহার করতে পারেন ।
এটি আপনাকে মেল ফাংশন ব্যবহার করতে বা স্বচ্ছভাবে একটি এসএমটিপি সার্ভার ব্যবহার করার অনুমতি দেয়। এটি এইচটিএমএল ভিত্তিক ইমেল এবং সংযুক্তিগুলি পরিচালনা করে যাতে আপনার নিজের প্রয়োগটি লিখতে হবে না।
ক্লাসটি স্থিতিশীল এবং এটি দ্রুপাল, সুগারসিআরএম, ইআইআই এবং জুমলার মতো আরও অনেক প্রকল্প দ্বারা ব্যবহৃত হয়!
উপরের পৃষ্ঠাটি থেকে এখানে একটি উদাহরণ দেওয়া হয়েছে:
<?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');
আপনি যদি এইচটিএমএল ফর্ম্যাট ইমেলটিতে আগ্রহী হন তবে শিরোনামটি পাস করার বিষয়টি নিশ্চিত করুন 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);
আরও তথ্যের জন্য, পিএইচপি মেল ফাংশন পরীক্ষা করুন ।
পিয়ার মেল প্যাকেজ পিয়ার মেল পৃষ্ঠাটিও দেখুন
এটি স্ট্যান্ডার্ড মেইল () ফাংশনটির চেয়ে কিছুটা বেশি শক্তিশালী বলে মনে হচ্ছে (যদি মানক ফাংশন পর্যাপ্ত না হয়)।
এটি কীভাবে ব্যবহৃত হয় তা দেখানো এই পৃষ্ঠার একটি অংশ এখানে দেওয়া হয়েছে। 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
। এর অর্থ কি আপনি সুইফট মেলারের পুরানো সংস্করণটির কথা উল্লেখ করছেন বা এটি টাইপো, অথবা আমি কিছু ভুল বুঝেছি? আমাকে সুইফট-মেলারের পুরানো সংস্করণ ইনস্টল করতে হবে কারণ আমার সার্ভারে আমার পিএইচপি 7 নেই। সুতরাং আমার জানা দরকার যে বর্তমান সংস্করণের জন্য ডকুমেন্টেশনটি প্যাকেজের পুরানো সংস্করণের সাথে চলে। ধন্যবাদ।
মেল ফাংশন ব্যবহার করে প্লেইন টেক্সট ইমেল প্রেরণের এটি খুব প্রাথমিক পদ্ধতি।
<?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));
?>
ভবিষ্যতের পাঠকদের জন্য: যদি অন্য উত্তরগুলি কাজ না করে তবে এটি চেষ্টা করুন (আমার ক্ষেত্রে যেমনটি ছিল):
১) পিএইচপিমেইলার ডাউনলোড করুন , জিপ ফাইলটি খুলুন এবং আপনার প্রকল্প ডিরেক্টরিতে ফোল্ডারটি এক্সট্রাক্ট করুন।
৩) এক্সট্রাক্ট ডিরেক্টরিটি পিএইচপিএমেলার-এ পুনরায় নামকরণ করুন এবং আপনার পিএইচপি স্ক্রিপ্টের ভিতরে নীচের কোডটি লিখুন (স্ক্রিপ্টটি পিএইচপিএমেলার ফোল্ডারের বাইরে থাকতে হবে )
<?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;
}
?>
নেটিভ পিএইচপি ফাংশন mail()
আমার পক্ষে কাজ করে না। এটি বার্তা জারি করে:
503 কোনও অ-স্থানীয় ই-মেইল ঠিকানায় প্রেরণের চেষ্টা করার সময় এই মেইল সার্ভারটির প্রমাণীকরণ প্রয়োজন
সুতরাং, আমি সাধারণত PHPMailer
প্যাকেজ ব্যবহার করি
আমি 5.2.23 সংস্করণটি ডাউনলোড করেছি: গিটহাব ।
আমি সবেমাত্র 2 টি ফাইল বাছাই করেছি এবং সেগুলি আমার উত্স পিএইচপি রুটে রেখেছি
class.phpmailer.php
class.smtp.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');
পিএইচপি থেকে ইমেল প্রেরণের মূল উপায় হ'ল এর বিল্ট ইন mail()
ফাংশনটি ব্যবহার করা , তবে ব্যবহারের জন্য প্রস্তুত বেশ কয়েকটি এসডিকে রয়েছে যা সংহতকরণকে সহজ করতে পারে:
পিএস আমি পেপিপোস্টে নিযুক্ত রয়েছি।
আপনি কোনও মেল ওয়েব পরিষেবা যেমন পোস্টমার্ক, সেন্ডগ্রিড ইত্যাদি ব্যবহার করতে পারেন
সেন্ডগ্রিড বনাম পোস্টমার্ক বনাম আমাজন এসইএস এবং অন্যান্য ইমেল / এসএমটিপি এপিআই সরবরাহকারী?
সম্পাদনা করুন: আমি এখনই গুগল জিমেইল এপিআই ব্যবহার করি । কঠোর ফিল্টারগুলির কারণে আমার নিয়োগকর্তার প্রতিষ্ঠানে অনুস্মারক ইমেল পাঠাতে আমার সমস্যা হয়েছিল। আপনি যতক্ষণ না লোককে স্প্যাম করবেন না ততক্ষণ Gmail কাজ করে।
এই স্ক্রিপ্ট সহ ইমেল প্রেরণ করুন
<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";
}
}
?>
আপনি একবার ইমেল প্রেরণ বাটন টিপুন, ইমেলটি টেস্ট@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);
}
?>
উপরের কোডটি আমার পক্ষে কাজ করছে।