একটি পিএইচপি পৃষ্ঠা থেকে GMail এসএমটিপি সার্ভার ব্যবহার করে ইমেল প্রেরণ করুন


389

আমি একটি পিএইচপি পৃষ্ঠা থেকে GMail এর এসএমটিপি সার্ভারের মাধ্যমে একটি ইমেল প্রেরণের চেষ্টা করছি, তবে আমি এই ত্রুটিটি পেয়েছি:

প্রমাণীকরণ ব্যর্থতা [এসএমটিপি: এসএমটিপি সার্ভার কোনও প্রমাণীকরণ সমর্থন করে না (কোড: 250, প্রতিক্রিয়া: mx.google.com আপনার পরিষেবায়, [98.117.99.235]

কেউ সাহায্য করতে পারেন? আমার কোডটি এখানে:

<?php
require_once "Mail.php";

$from = "Sandra Sender <sender@example.com>";
$to = "Ramona Recipient <ramona@microsoft.com>";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";

$host = "smtp.gmail.com";
$port = "587";
$username = "testtest@gmail.com";
$password = "testtest";

$headers = array ('From' => $from,
  'To' => $to,
  'Subject' => $subject);
$smtp = Mail::factory('smtp',
  array ('host' => $host,
    'port' => $port,
    'auth' => true,
    'username' => $username,
    'password' => $password));

$mail = $smtp->send($to, $headers, $body);

if (PEAR::isError($mail)) {
  echo("<p>" . $mail->getMessage() . "</p>");
 } else {
  echo("<p>Message successfully sent!</p>");
 }
?>

উত্তর:


357
// Pear Mail Library
require_once "Mail.php";

$from = '<fromaddress@gmail.com>';
$to = '<toaddress@yahoo.com>';
$subject = 'Hi!';
$body = "Hi,\n\nHow are you?";

$headers = array(
    'From' => $from,
    'To' => $to,
    'Subject' => $subject
);

$smtp = Mail::factory('smtp', array(
        'host' => 'ssl://smtp.gmail.com',
        'port' => '465',
        'auth' => true,
        'username' => 'johndoe@gmail.com',
        'password' => 'passwordxxx'
    ));

$mail = $smtp->send($to, $headers, $body);

if (PEAR::isError($mail)) {
    echo('<p>' . $mail->getMessage() . '</p>');
} else {
    echo('<p>Message successfully sent!</p>');
}

141
কি Mail.php?? আমি এই ফাইলটি কোথা থেকে পাব?
জয়ন শাইখ

18
যে কেউ দয়া করে আমাকে একটি লিঙ্ক দিতে পারেন যেখানে আমি মেইল.এফপি ফাইল পেতে পারি। কারণ আমি এটি চেষ্টা করেছি এবং এটি কার্যকর হবে না ধন্যবাদ
ইউসুফ

11
উপরের এই উদাহরণে @ চিহ্নগুলি কোথায়? আমি সেখানে একটিও দেখতে পাচ্ছি না!
অন্ধকারআসপীচ

6
আমি বিশ্বাস করি যে ইমেল মানকগুলিতে myaccount.gmail.com myaccount@gmail.com এর সমান।
শেরউইন ফ্লাইট

3
আপনার যদি সার্ভার নির্দিষ্ট করে থাকে তবে আপনাকে @gmail অন্তর্ভুক্ত করার দরকার নেই। শুধু myaccountব্যবহারকারীর নাম লিখুন।
জ্যাক 6

106

সুইফ্ট মেলর ব্যবহার করে , Gmail শংসাপত্রগুলির মাধ্যমে কোনও মেল প্রেরণ করা বেশ সহজ:

<?php
require_once 'swift/lib/swift_required.php';

$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, "ssl")
  ->setUsername('GMAIL_USERNAME')
  ->setPassword('GMAIL_PASSWORD');

$mailer = Swift_Mailer::newInstance($transport);

$message = Swift_Message::newInstance('Test Subject')
  ->setFrom(array('abc@example.com' => 'ABC'))
  ->setTo(array('xyz@test.com'))
  ->setBody('This is a test mail.');

$result = $mailer->send($message);
?>

2
এটি সবেমাত্র GMAIL_USERNAME, GMAIL_PASSWORD, এবং থেকে এবং ঠিকানাগুলি পরিবর্তন করে "প্রথমটিতে" কাজ করেছে। অন্য কোনও সমাধান আমার পক্ষে কাজ করে নি। ধন্যবাদ।
মার্কো মুচিয়ানো

7
আমি সম্মতি জানাই, সুইফ্ট মেইল ​​মেল সলিউশনের একটি ড্রপ যা নাশপাতি দিয়ে গোলযোগের চেয়ে অনেক সহজ। পিএইচপি এর পিএইচপি_পেনসেল এক্সটেনশন সক্ষম করতে ভুলবেন না।
Soth

1
সুইফটমেলার ব্যবহার করে দুর্দান্ত সমাধান! +1
অমল মুরালি

1
arrrgh। আইস্যান্ট কাজের জন্য সুইফটমিলার পান। আমি জানি না যে "সুরকার" কীভাবে ব্যবহার করবেন তাই আমি গিথুব থেকে স্যুইফটमेलার জিপটি ডাউনলোড করেছিলাম তারপর আমি ওপেন_এসএসএল সক্ষম করে তার পরে আমার জিমেইল ইমেল এবং পাসওয়ার্ড সরবরাহ করেছি তবে এটি কার্যকর হয়নি work
boi_echos

3
আহ আমার বোকামির জন্য দুঃখিত। আপনাকে আপনার জিমেইল অ্যাকাউন্টটি খুলতে হবে কারণ সেখানে একটি ইমেল রয়েছে যাতে "কম সুরক্ষিত অ্যাপ্লিকেশন" সক্ষম করতে বলা হয়। তারপরে এটি এখন কাজ করছে
boi_echos

54

আপনার কোড টিএলএস (এসএসএল) ব্যবহার করছে বলে মনে হচ্ছে না, যা গুগলে মেল সরবরাহ করার জন্য প্রয়োজনীয় (এবং পোর্টগুলি 465 বা 587 ব্যবহার করে)

আপনি সেট করে এটি করতে পারেন

$host = "ssl://smtp.gmail.com";

আপনার কোডটি সন্দেহজনকভাবে এই উদাহরণটির মতো দেখায় যা হোস্টনাম স্কিমে ssl: // কে বোঝায়।


33

আমি পিয়ার মেল প্রস্তাব দিই না। ২০১০ সাল থেকে এটি আপডেট করা হয়নি Also উত্স ফাইলগুলিও পড়ুন; উত্স কোডটি প্রায় পুরানো, পিএইচপি 4 স্টাইলে লেখা এবং অনেক ত্রুটি / বাগ পোস্ট করা হয়েছে (গুগল এটি)। আমি সুইফট মেলার ব্যবহার করছি।

সুইচ মেলার পিএইচপি 5 তে লিখিত যে কোনও ওয়েব অ্যাপ্লিকেশনটিতে সংহত করে, বহু বৈশিষ্ট্যের সাথে ইমেল প্রেরণের জন্য নমনীয় এবং মার্জিত অবজেক্ট-ভিত্তিক দৃষ্টিভঙ্গি সরবরাহ করে।

এসএমটিপি, প্রেরণমেল, পোস্টফিক্স বা নিজস্ব কাস্টম পরিবহন বাস্তবায়ন ব্যবহার করে ইমেলগুলি প্রেরণ করুন।

সমর্থন সার্ভারগুলির জন্য ব্যবহারকারীর নাম এবং পাসওয়ার্ড এবং / অথবা এনক্রিপশন প্রয়োজন।

অনুরোধ ডেটা সামগ্রীটি বাদ না দিয়ে শিরোনামের ইনজেকশন আক্রমণ থেকে রক্ষা করুন।

MIME অনুবর্তী HTML / মাল্টিপার্ট ইমেলগুলি প্রেরণ করুন।

লাইব্রেরি কাস্টমাইজ করতে ইভেন্ট চালিত প্লাগইন ব্যবহার করুন।

কম মেমরির ব্যবহার সহ বড় সংযুক্তি এবং ইনলাইন / এমবেড করা চিত্রগুলি হ্যান্ডেল করুন।

এটি একটি নিখরচায় এবং মুক্ত উত্স যা আপনি সুইফট মেলার ডাউনলোড করতে পারেন এবং আপনার সার্ভারে আপলোড । (বৈশিষ্ট্য তালিকা মালিক ওয়েবসাইট থেকে অনুলিপি করা হয়)।

জিমেইল এসএসএল / এসএমটিপি এবং সুইফট মেলারের কার্যকারী উদাহরণটি এখানে ...

// Swift Mailer Library
require_once '../path/to/lib/swift_required.php';

// Mail Transport
$transport = Swift_SmtpTransport::newInstance('ssl://smtp.gmail.com', 465)
    ->setUsername('username@gmail.com') // Your Gmail Username
    ->setPassword('my_secure_gmail_password'); // Your Gmail Password

// Mailer
$mailer = Swift_Mailer::newInstance($transport);

// Create a message
$message = Swift_Message::newInstance('Wonderful Subject Here')
    ->setFrom(array('sender@example.com' => 'Sender Name')) // can be $_POST['email'] etc...
    ->setTo(array('receiver@example.com' => 'Receiver Name')) // your email / multiple supported.
    ->setBody('Here is the <strong>message</strong> itself. It can be text or <h1>HTML</h1>.', 'text/html');

// Send the message
if ($mailer->send($message)) {
    echo 'Mail sent successfully.';
} else {
    echo 'I am sure, your configuration are not correct. :(';
}

আশা করি এটা কাজে লাগবে. শুভ কোডিং ... :)


1
এটি আর কাজ করে না, আমি সর্বদা "535-5.7.8 ব্যবহারকারীর নাম এবং পাসওয়ার্ড গ্রহণ করা হয়নি" বার্তাটি পাই। আমার শংসাপত্রগুলি ঠিক আছে এবং আমি "কম সুরক্ষিত অ্যাপ্লিকেশনগুলিকে অনুমতি দিন" চালু করেছি। কেউ এই একটি সমাধান জানেন?
অ্যান্ড্রুবি

সুইচ পিএইচপি 5.x এ কাজ করছে বলে মনে হচ্ছে না - বুঝতে পারছেন না ?? coalesce - সবেমাত্র আপ আপ।
হেরিমানকোডার

28
<?php
date_default_timezone_set('America/Toronto');

require_once('class.phpmailer.php');
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded

$mail             = new PHPMailer();

$body             = "gdssdh";
//$body             = eregi_replace("[\]",'',$body);

$mail->IsSMTP(); // telling the class to use SMTP
//$mail->Host       = "ssl://smtp.gmail.com"; // SMTP server
$mail->SMTPDebug  = 1;                     // enables SMTP debug information (for testing)
                                           // 1 = errors and messages
                                           // 2 = messages only
$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->SMTPSecure = "ssl";                 // sets the prefix to the servier
$mail->Host       = "smtp.gmail.com";      // sets GMAIL as the SMTP server
$mail->Port       = 465;                   // set the SMTP port for the GMAIL server
$mail->Username   = "user@gmail.com";  // GMAIL username
$mail->Password   = "password";            // GMAIL password

$mail->SetFrom('contact@prsps.in', 'PRSPS');

//$mail->AddReplyTo("user2@gmail.com', 'First Last");

$mail->Subject    = "PRSPS password";

//$mail->AltBody    = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test

$mail->MsgHTML($body);

$address = "user2@yahoo.co.in";
$mail->AddAddress($address, "user2");

//$mail->AddAttachment("images/phpmailer.gif");      // attachment
//$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment

if(!$mail->Send()) {
  echo "Mailer Error: " . $mail->ErrorInfo;
} else {
  echo "Message sent!";
}

?>

আপনি হোস্টকে দুবার কেন সেট করবেন এবং কোনটি সঠিক?
এমিল বার্গারন

আমি ক্লাস.ফ্পমাইল.এফপি ফাইলটি কোথায় পাব ?? শুধুমাত্র কোড পেস্ট করা তেমন সহায়ক নয় pls কোডেও আরও বিবরণ অন্তর্ভুক্ত করে!
জিনকোড

কিছু সিনট্যাক্স পুরানো হয়ে
গেলেও পিএইচপিমেইলারটি

20

SwiftMailerবাইরের সার্ভার ব্যবহার করে ই-মেল পাঠাতে পারে।

এখানে একটি উদাহরণ রয়েছে যা জিমেইল সার্ভারটি কীভাবে ব্যবহার করতে হয় তা দেখায়:

require_once "lib/Swift.php";
require_once "lib/Swift/Connection/SMTP.php";

//Connect to localhost on port 25
$swift =& new Swift(new Swift_Connection_SMTP("localhost"));


//Connect to an IP address on a non-standard port
$swift =& new Swift(new Swift_Connection_SMTP("217.147.94.117", 419));


//Connect to Gmail (PHP5)
$swift = new Swift(new Swift_Connection_SMTP(
    "smtp.gmail.com", Swift_Connection_SMTP::PORT_SECURE, Swift_Connection_SMTP::ENC_TLS));

14

প্রশ্নের তালিকাভুক্ত কোডটির দুটি পরিবর্তন দরকার

$host = "ssl://smtp.gmail.com";
$port = "465";

পোর্ট 465 একটি এসএসএল সংযোগের জন্য প্রয়োজনীয়।


6

Gmail এর মাধ্যমে PHPMailer গ্রন্থাগার ব্যবহার করে মেল পাঠান লাইব্রেরি থেকে ফাইল donwload গিটহাব

<?php
/**
 * This example shows settings to use when sending via Google's Gmail servers.
 */
//SMTP needs accurate times, and the PHP time zone MUST be set
//This should be done in your php.ini, but this is how to do it if you don't have access to that
date_default_timezone_set('Etc/UTC');
require '../PHPMailerAutoload.php';
//Create a new PHPMailer instance
$mail = new PHPMailer;
//Tell PHPMailer to use SMTP
$mail->isSMTP();
//Enable SMTP debugging
// 0 = off (for production use)
// 1 = client messages
// 2 = client and server messages
$mail->SMTPDebug = 2;
//Ask for HTML-friendly debug output
$mail->Debugoutput = 'html';
//Set the hostname of the mail server
$mail->Host = 'smtp.gmail.com';
// use
// $mail->Host = gethostbyname('smtp.gmail.com');
// if your network does not support SMTP over IPv6
//Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission
$mail->Port = 587;
//Set the encryption system to use - ssl (deprecated) or tls
$mail->SMTPSecure = 'tls';
//Whether to use SMTP authentication
$mail->SMTPAuth = true;
//Username to use for SMTP authentication - use full email address for gmail
$mail->Username = "username@gmail.com";
//Password to use for SMTP authentication
$mail->Password = "yourpassword";
//Set who the message is to be sent from
$mail->setFrom('from@example.com', 'First Last');
//Set an alternative reply-to address
$mail->addReplyTo('replyto@example.com', 'First Last');
//Set who the message is to be sent to
$mail->addAddress('whoto@example.com', 'John Doe');
//Set the subject line
$mail->Subject = 'PHPMailer GMail SMTP test';
//Read an HTML message body from an external file, convert referenced images to embedded,
//convert HTML into a basic plain-text alternative body
$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__));
//Replace the plain text body with one created manually
$mail->AltBody = 'This is a plain-text message body';
//Attach an image file
$mail->addAttachment('images/phpmailer_mini.png');
//send the message, check for errors
if (!$mail->send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
} else {
    echo "Message sent!";
}

5

আমারও এই সমস্যা ছিল আমি সঠিক সেটিংস সেট করেছি এবং কম সুরক্ষিত অ্যাপ্লিকেশন সক্ষম করেছি তবে এটি এখনও কার্যকর হয়নি। অবশেষে, আমি এই https://accounts.google.com/UnlockCaptcha সক্ষম করেছি এবং এটি আমার পক্ষে কাজ করেছে। আমি আশা করি এটা কারো সাহায্যে লাগবে.



4

উবুন্টুতে পিয়ারের মেইল.এফপি ইনস্টল করতে, নিম্নলিখিত কমান্ডের সেটটি চালান:

    sudo apt-get install php-pear
    sudo pear install mail
    sudo pear install Net_SMTP
    sudo pear install Auth_SASL
    sudo pear install mail_mime

0

আমার কাছে জিএসউইট অ্যাকাউন্টগুলির একটি সমাধান রয়েছে যার "@ gmail.com" সুফিক্স নেই। এছাড়াও আমি মনে করি এটি @ জিমেইল ডটকমের সাহায্যে জি সুইট অ্যাকাউন্টগুলির জন্য কাজ করবে তবে তা চেষ্টা করে নি। প্রথমে আপনার GSuite অ্যাকাউন্টের জন্য "allos¿w কম সুরক্ষিত অ্যাপ্লিকেশন" বিকল্পটি পরিবর্তন করার সুযোগ থাকা উচিত। যদি আপনার কাছে অধিকার থাকে (আপনি অ্যাকাউন্ট সেটিংসে পরীক্ষা করতে পারেন-> সুরক্ষা) তবে আপনাকে পৃষ্ঠার শেষে গিয়ে "দ্বি পদক্ষেপের প্রমাণীকরণ" নিষ্ক্রিয় করতে হবে এবং কম সুরক্ষিত অ্যাপ্লিকেশনগুলির অনুমতি দেওয়ার জন্য "হ্যাঁ" সেট করতে হবে। এখানেই শেষ. আপনি যদি সেই বিকল্পগুলি পরিবর্তন করার সুযোগ না পান তবে এই থ্রেডের সমাধানটি কাজ করবে না। "কম অনুমতি দিন ..." বিকল্পে পরিবর্তন করতে https://support.google.com/a/answer/6260879?hl=en দেখুন ।


0

আমি @ শশী কাঁথের দেওয়া পরামর্শটি চেষ্টা করেছিলাম, কিন্তু তা কার্যকর হয়নি। আমি ডকুমেন্টেশন পড়েছি এবং কিছু পরিবর্তন হয়েছে। সুতরাং আমি এই কোডটি ব্যবহার করে জিমেইলের মাধ্যমে মেল প্রেরণ করতে পেরেছি, যেখানে বিক্রেতার / অটোল্যাড.এফপি সুরকার দ্বারা সুরকারকে পেয়েছেন "সুইফটমিলার / সুইফটমিলার: ^ 6.0":

<?php
     require_once 'vendor/autoload.php';
     $transport = (new Swift_SmtpTransport('smtp.gmail.com', 465, 'ssl'))->setUsername ('SendingMail')->setPassword ('Password');

     $mailer = new Swift_Mailer($transport);

     $message = (new Swift_Message('test'))
      ->setFrom(['Sending mail'])
      ->setTo(['Recipient mail'])
      ->setBody('Message')
  ;

     $result = $mailer->send($message);
    ?>

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.