একটি এসএমটিপি সার্ভার থেকে পিএইচপি সহ ইমেল প্রেরণ


131
$from = "someonelse@example.com";
$headers = "From:" . $from;
echo mail ("borutflis1@gmail.com" ,"testmailfunction" , "Oj",$headers);

পিএইচপি-তে ইমেল পাঠাতে আমার সমস্যা হচ্ছে। আমি কোনো ত্রুটির সম্মুখীন হয়েছেন: SMTP server response: 530 SMTP authentication is required

আমি ইমপ্রেশনে ছিলাম যে আপনি এসএমটিপি ছাড়াই ইমেল প্রেরণ করতে পারবেন verify আমি জানি যে এই মেলটি প্রস্তাবিতভাবে ফিল্টার হয়ে যাবে, তবে এখনই এটি গুরুত্বপূর্ণ নয়।

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = someonelse@example.com

এটি php.iniফাইলের সেটআপ । আমি কীভাবে এসএমটিপি স্থাপন করব? এমন কোনও এসএমটিপি সার্ভার রয়েছে যার কোন যাচাইকরণের প্রয়োজন নেই বা আমাকে নিজে একটি সার্ভার সেটআপ করতে হবে?

উত্তর:


168

আপনি যখন কোনও সার্ভারের মাধ্যমে এসএমটিপি আথের প্রয়োজন একটি ইমেল প্রেরণ করছেন, আপনাকে অবশ্যই এটি নির্দিষ্ট করতে হবে এবং হোস্ট, ব্যবহারকারীর নাম এবং পাসওয়ার্ড সেট করতে হবে (এবং পোর্টটি যদি এটি ডিফল্ট না হয় - 25)।

উদাহরণস্বরূপ, আমি সাধারণত এইগুলির সাথে অনুরূপ সেটিংস সহ পিএইচপিএমেলার ব্যবহার করি:

$mail = new PHPMailer();

// Settings
$mail->IsSMTP();
$mail->CharSet = 'UTF-8';

$mail->Host       = "mail.example.com"; // SMTP server example
$mail->SMTPDebug  = 0;                     // enables SMTP debug information (for testing)
$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->Port       = 25;                    // set the SMTP port for the GMAIL server
$mail->Username   = "username"; // SMTP account username example
$mail->Password   = "password";        // SMTP account password example

// Content
$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';

$mail->send();

আপনি পিএইচপিএমেলার সম্পর্কে এখানে আরও জানতে পারেন: https://github.com/PHPMailer/PHPMailer


21
পিএইচপিমেইলারটির জন্য +1 - এটি পিএইচপি'র বিল্ট ফাংশনটিতে এর বুদ্ধিমান ব্যক্তি বিকল্প mail()
এসডিসি

8
এই উত্তরে যারা হোঁচট খাচ্ছেন তাদের জন্য এটি লক্ষণীয় যে পিএইচপিমেইলারটি ওয়ার্ডপ্রেসেও অন্তর্নির্মিত এবং 'phpmailer_init'অ্যাকশন হুক ব্যবহার করে কনফিগার করা যায় । এটি এসএমটিপি মেল বা অ্যামাজন এসইএস (যা এসএমটিপি সংযোগগুলিকে সমর্থন করে) জন্য ওয়ার্ডপ্রেস সেটআপ করার একটি সুবিধাজনক উপায়।
ম্যাট ভ্যান আন্দেল

1
পিএইচপি মেলারকে কি অর্থ প্রদানের স্ক্রিপ্টগুলিতে ব্যবহার করার অনুমতি দেওয়া হচ্ছে?
লুকা

2
@ লুকা হ্যাঁ, এটি। তাদের লাইসেন্স ফাইল অনুসারে পিএইচপিमेलার এলজিপিএল ২.১ লাইসেন্স ব্যবহার করে, যা বাণিজ্যিক ব্যবহারের অনুমতি দেয়।
আলেজান্দ্রো

এই কোডটি ব্যবহার করার জন্য আমার কি বিশেষ কিছু করার দরকার আছে? আমি এটা কোথায় রাখি? আমি কি কোনও পোষ্ট অনুরোধের সাথে এটি একটি HTML5 ফর্মের সাথে কল করতে পারি? আমি এই পিএইচপিমেইলার অবজেক্টটি তৈরি করার পরে আমি কীভাবে ইমেল পাঠাব?
অ্যারন ফ্র্যাঙ্ক

53
<?php
ini_set("SMTP", "aspmx.l.google.com");
ini_set("sendmail_from", "YOURMAIL@gmail.com");

$message = "The mail message was sent with the following mail setting:\r\nSMTP = aspmx.l.google.com\r\nsmtp_port = 25\r\nsendmail_from = YourMail@address.com";

$headers = "From: YOURMAIL@gmail.com";

mail("Sending@provider.com", "Testing", $message, $headers);
echo "Check your email now....&lt;BR/>";
?>

বা, আরও বিশদের জন্য পড়ুন


আপনি যে আইপিটি মেল প্রেরণের জন্য ব্যবহার করছেন তা আমাদের সার্ভারগুলিতে সরাসরি 550-5.7.1 ইমেল প্রেরণের অনুমোদিত নয়। আমি এই ত্রুটি পেয়েছি। আমি চাই সমস্ত একটি ওপেন মেল রিলে।
বুরুত ফ্লিস

আমার স্ট্যাটিক আইপি নেই। আপনি কোনও ওপেন মেল রিলে জানেন?
বুরুত ফ্লিস

1
অতিরিক্তভাবে গুগল এসএমটিপি রিলে জন্য সমর্থন .google.com/a/answer/176600?hl=en দেখুন।
fyrye

5
গডাড্ডি php mail()ফাংশন ইস্যুগুলির জন্য এটি সেরা উত্তর - 2017 - পিএইচপিএমেলার বা অন্য 3 য় পক্ষের সংস্থানটি ডাউনলোড করা উচিত নয় - ধন্যবাদ
আত্মবিশ্বাসিত

4
"পড়ুন" লিঙ্কটি ভাঙ্গা
ভ্লাদক্রাস

46

ইউনিক্স ব্যবহারকারীদের জন্য মেল () প্রকৃতপক্ষে ইমেল প্রেরণের জন্য সেন্ডমেল কমান্ডটি ব্যবহার করছে । অ্যাপ্লিকেশনটি পরিবর্তনের পরিবর্তে আপনি পরিবেশ পরিবর্তন করতে পারেন। এমএসএমটিপি হ'ল এসএমটিপি ক্লায়েন্ট যা সেন্ডমেল সামঞ্জস্যপূর্ণ সি এল এল সিন্ট্যাক্স যার অর্থ এটি সেন্ডমেলের জায়গায় ব্যবহার করা যেতে পারে। এটির জন্য কেবল আপনার php.ini এ সামান্য পরিবর্তন দরকার।

sendmail_path = "/usr/bin/msmtp -C /path/to/your/config -t"

তারপরেও স্বল্পতম মেইল ​​() ফাংশন এসএমটিপি ধার্মিকতার সাথে কাজ করতে পারে। অ্যাপ্লিকেশনটি পরিবর্তন না করে আপনি যদি কোনও বিদ্যমান অ্যাপ্লিকেশনটিকে সেন্ডগ্রিড বা ম্যান্ড্রিলের মতো মেল পরিষেবাগুলিতে সংযুক্ত করার চেষ্টা করছেন তবে এটি অত্যন্ত কার্যকর।


1
দুর্দান্ত সমাধান, এখন একাধিক সার্ভারে এটি ব্যবহার করুন!
raice

3
মেলিংয়ের লাইব্রেরি ব্যবহার করে না এমন অ্যাপ্লিকেশনগুলির জন্য এটি আমার ডকার পাত্রে প্রয়োগ করা Imp
বাটান্দোয়া

ভ্যানিলা থেকে mail()এসএমটিপি সমর্থন করে এমন কোনও স্থানে দুর্দান্ত স্থানান্তরের পথ । ধন্যবাদ!
রিনোগো

উইন্ডোজের জন্য এমএসএমটিপিও উপলব্ধ। সুস্পষ্ট ডাউনলোডগুলির সংস্করণ 1.4 রয়েছে। আমি কোথাও যে সংস্করণটি পেয়েছি তা হ'ল 1.6.2। উইন্ডোজের জন্য 1.8.6 আছে কিনা তা জানেন না।
বিলবো

২০১ 2016 সালের ফেব্রুয়ারির আগে লেখক উইন্ডোজ বাইনারি সরবরাহ বন্ধ করে দিয়েছেন।
বিল্বো

17

সমস্যাটি হ'ল পিএইচপি mail()ফাংশনটির খুব সীমিত কার্যকারিতা রয়েছে। পিএইচপি থেকে মেল প্রেরণের বিভিন্ন উপায় রয়েছে।

  1. mail()আপনার সিস্টেমে এসএমটিপি সার্ভার ব্যবহার করে। উইন্ডোজটিতে কমপক্ষে দুটি সার্ভার আপনি ব্যবহার করতে পারেন: hMailServer এবং xmail । সেগুলি কনফিগার করতে এবং উঠতে আমি বেশ কয়েক ঘন্টা ব্যয় করেছি। প্রথমটি আমার মতে সহজ। এখনই, hMailServer উইন্ডোজ 7 x64 এ কাজ করছে।
  2. mail()লিনাক্স সহ দূরবর্তী বা ভার্চুয়াল মেশিনে এসএমটিপি সার্ভার ব্যবহার করে। অবশ্যই Gmail এর মতো বাস্তব মেল পরিষেবা কোনও শংসাপত্র বা কী ছাড়াই সরাসরি সংযোগের অনুমতি দেয় না। আপনি ভার্চুয়াল মেশিন সেট আপ করতে পারেন বা আপনার ল্যানে অবস্থিত একটি ব্যবহার করতে পারেন। বেশিরভাগ লিনাক্স ডিস্ট্রো-র বাক্সের বাইরে মেল সার্ভার রয়েছে। এটি কনফিগার করুন এবং মজা করুন। আমি ডেবিয়ান 7 এ ডিফল্ট এক্সিম 4 ব্যবহার করি যা এর ল্যান ইন্টারফেস শোনায়।
  3. মেলিং গ্রন্থাগারগুলি সরাসরি সংযোগ ব্যবহার করে। Libs সেট আপ করা সহজ। আমি সুইফটমেলারটি ব্যবহার করেছি এবং এটি Gmail অ্যাকাউন্ট থেকে নিখুঁতভাবে মেল প্রেরণ করে। আমার মনে হয় পিএইচপিমেইলারটিও বেশ ভাল।

আপনার পছন্দটি কোনও বিষয় নয়, আমি আপনাকে কিছু বিমূর্ত স্তর ব্যবহার করার পরামর্শ দিই। উইন্ডোজ চলমান আপনার বিকাশ মেশিনে আপনি পিএইচপি লাইব্রেরি ব্যবহার করতে পারেন এবং mail()লিনাক্স সহ প্রযোজনা মেশিনে খালি কাজ করতে পারেন। অ্যাবস্ট্রাকশন স্তর আপনাকে অ্যাপলিকেশনটি চালিত হওয়া সিস্টেমের উপর নির্ভর করে মেল ড্রাইভারদের আদান প্রদান করতে দেয়। MyMailerবিমূর্ত send()পদ্ধতি সহ বিমূর্ত শ্রেণি বা ইন্টারফেস তৈরি করুন । উত্তরাধিকারী দুটি ক্লাস MyPhpMailerএবং MySwiftMailersend()যথাযথ উপায়ে পদ্ধতি প্রয়োগ করুন ।


17

পিএইচপি পিয়ার এটি করার একটি উপায় এখানে

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

$from = '<your@mail.com>'; //change this to your email address
$to = '<someone@mail.com>'; // change to address
$subject = 'Insert subject here'; // subject of mail
$body = "Hello world! this is the content of the email"; //content of mail

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

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

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

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

আপনি যদি জিমেইল এসএমটিপি ব্যবহার করেন তবে সেটিংসের অধীনে আপনার জিমেইল অ্যাকাউন্টে এসএমটিপি সক্ষম করতে পারেন

সম্পাদনা: আপনি যদি ডেবিয়ান / উবুন্টুতে মেইল.এফপি খুঁজে না পান তবে আপনি পিএইচপি-পিয়ারটি ইনস্টল করতে পারেন

sudo apt install php-pear

তারপরে মেল এক্সটেনশনটি ইনস্টল করুন:

sudo pear install mail
sudo pear install Net_SMTP
sudo pear install Auth_SASL
sudo pear install mail_mime

তারপরে আপনি require_once "Mail.php" অন্যটি এটি এখানে অবস্থিত দ্বারা লোড করতে সক্ষম হওয়া উচিত :/usr/share/php/Mail.php


1
প্রযোজনা_অনসেস ('/usr/share/somewhere/Mail.php');

10

কিছু এসএমটিপি সার্ভার রয়েছে যা প্রমাণীকরণ ব্যতীত কাজ করে, তবে সার্ভারের যদি প্রমাণীকরণের প্রয়োজন হয় তবে এটিকে আটকানোর কোনও উপায় নেই।

পিএইচপি-র অন্তর্নির্মিত মেল ফাংশনগুলি অত্যন্ত সীমাবদ্ধ - এসএমটিপি সার্ভারটি নির্দিষ্ট করে কেবল উইন্ডোতে সম্ভব। * নিক্সে, mail()ওএসের বাইনারিগুলি ব্যবহার করবে।

আপনি যদি নেটটিতে একটি নির্বিচারে এসএমটিপি সার্ভারে ই-মেইল প্রেরণ করতে চান তবে সুইফটমেলারের মতো একটি লাইব্রেরি ব্যবহার করে বিবেচনা করুন । এটি আপনাকে ব্যবহার করতে সক্ষম করবে, উদাহরণস্বরূপ, গুগল মেল এর বহির্গামী সার্ভারগুলি।


2

লিনাক্সে আপনি ওয়ার্ডপ্রেস সাইটটি হোস্ট করছেন এবং সার্ভার অ্যাক্সেস রয়েছে এমন ক্ষেত্রে আপনি এমএসএমটিপি ইনস্টল করে কিছু মাথা ব্যথা বাঁচাতে পারবেন যা আপনাকে স্ট্যান্ডার্ড পিএইচপি মেইল ​​() ফাংশন থেকে এসএমটিপি এর মাধ্যমে প্রেরণ করতে দেয়। এমএসএমটিপি পোস্টফিক্সের একটি সহজ বিকল্প যার জন্য আরও কিছুটা কনফিগারেশন প্রয়োজন।

পদক্ষেপ এখানে:

এমএসএমটিপি ইনস্টল করুন

sudo apt-get install msmtp-mta ca-certificates

একটি নতুন কনফিগারেশন ফাইল তৈরি করুন:

sudo nano /etc/msmtprc

... নিম্নলিখিত কনফিগারেশন তথ্য সহ:

# Set defaults.    
defaults

# Enable or disable TLS/SSL encryption.
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt

# Set up a default account's settings.
account default
host <smtp.example.net>
port 587
auth on
user <username@example.net>
password <password>
from <address-to-receive-bounces@example.net>
syslog LOG_MAIL

আপনাকে "<" এবং ">" এর মধ্যে সমস্ত কিছু অন্তর্ভুক্ত করে কনফিগারেশন ডেটা প্রতিস্থাপন করতে হবে (অন্তর্ভুক্ত করুন, এগুলি সরিয়ে দিন)। হোস্ট / ব্যবহারকারীর নাম / পাসওয়ার্ডের জন্য, আপনার মেল সরবরাহকারীর মাধ্যমে মেল প্রেরণের জন্য আপনার সাধারণ শংসাপত্রগুলি ব্যবহার করুন।

পিএইচপি এটি ব্যবহার করতে বলুন

sudo nano /etc/php5/apache2/php.ini

এই একক লাইন যুক্ত করুন:

sendmail_path = /usr/bin/msmtp -t

সম্পূর্ণ দলিলপত্র এখানে পাওয়া যাবে:

https://marlam.de/msmtp/


এসএসএমটিপি হ'ল একটি সমাধান দেখুন (ফরাসি গাইড): elliptips.info/guide-debian-7-envoi-de-mails-ligne-de-commande
ıɾuǝʞ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.