কীভাবে আমার পিএইচপি মেইল ​​প্রেরণ করবেন?


71

আমি টাস্কেল ব্যবহার করে উবুন্টু 11.04, এলএএমপি ইনস্টল করেছি।

আমি দেখতে পেয়েছি যে পিএইচপি mail()কাজ করে না।

আমি মনে করি আমার এটি সক্ষম করার দরকার আছে বা কিছু? আমি কেমন করে ঐটি করি?


এটি আপনার Gmail থেকে পাঠানো সহজ এবং সহজ easy kvcodes.com/2016/03/send-e-mail-localhost-ubuntu-php
Kvvaradha

উত্তর:


51

পিএইচপি এর মেল ম্যানুয়াল থেকে:

আবশ্যকতা

মেল ফাংশনগুলি উপলভ্য হওয়ার জন্য, পিএইচপি-র একটি ইনস্টলড এবং ওয়ার্কিং ইমেল সিস্টেম প্রয়োজন। ব্যবহারযোগ্য প্রোগ্রামটি php.ini ফাইলের কনফিগারেশন সেটিংস দ্বারা সংজ্ঞায়িত করা হয়েছে।

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

আপনার যদি এটি নিজের সিস্টেমে পরীক্ষা করার প্রয়োজন হয় বা এটিকে এগিয়ে যাওয়ার চেয়ে আপনার নিজের হোম-সার্ভারে এটি হোস্ট করার প্রয়োজন হয়:

পোস্টফিক্স ইনস্টলেশন

ইনস্টলেশন: পোস্টফিক্স পোস্টফিক্স ইনস্টল করুন / sudo apt-get install postfix প্রক্রিয়া চলাকালীন আপনাকে জিজ্ঞাসা করা হবে আপনি কোন মোডে পোস্টফিক্স ইনস্টল করতে চান। সম্ভাব্য চারটি পদ্ধতি রয়েছে:

  • ইন্টারনেট : আপনার নিজস্ব মেইল-সার্ভার।
  • স্যাটেলাইট : একটি বহিরাগত মেল সরবরাহকারী (যেমন গুগল) মেল প্রেরণ এবং গ্রহণের জন্য ব্যবহৃত হবে। সার্ভারটি কোনও মেল পাবেন না।
  • স্মারথোস্ট : দুজনের মধ্যে মিশ্রণ। মেল স্থানীয়ভাবে সংরক্ষণ করা হয় তবে বাহ্যিক মেল সরবরাহকারীর মাধ্যমে প্রেরণ করা হয়।
  • কেবল স্থানীয় : আপনাকে উদ্বেগ করবে না। এটি একটি সিস্টেম ইন্টার্ন মেইল ​​সার্ভার। আপনি সিস্টেমে কেবল ব্যবহারকারী থেকে ব্যবহারকারীকে মেল পাঠাতে পারেন।

বাকি ইনস্টল অপশনগুলি আপনার এই সাধারণ কনফিগারেশনের পছন্দের উপর নির্ভর করে।

সম্ভবত আপনি স্যাটেলাইট ইনস্টল বেছে নেবেন। এর অর্থ কোনও বহিরাগত সরবরাহকারী ব্যবহার করে মেল পাঠানো হবে। এসএমটিপি-সার্ভার হিসাবে (বহির্গামী মেল সার্ভার) আপনাকে তার পরে আপনার সরবরাহকারীদের এসএমটিপি নির্দিষ্ট করতে হবে। বাকি বিকল্পগুলি স্ব-ব্যাখ্যামূলক।

পোস্ট ইনস্টলেশন কনফিগারেশন

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

  • ইনস্টল করুন libsasl2-মডিউল Libsasl2- মডিউল ইনস্টল করুন এবং sasl2-বিন Sasl2-bin ইনস্টল করুন সফটওয়্যার সেন্টার আইকন ক্লিক করে বা ব্যবহার টার্মিনাল থেকে:

    sudo apt-get install libsasl2-2 libsasl2-modules sasl2-bin
    
  • এই লাইনগুলিকে এতে যোগ করে স্যাসল-আথ সক্ষম করুন /etc/postfix/main.cf

     # add to /etc/postfix/main.cf
     smtp_sasl_auth_enable = yes
     smtp_sasl_security_options = noplaintext noanonymous
     smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
    
  • /etc/postfix/sasl_passwordএকটি লাইনের সাথে একটি ফাইল তৈরি করুন :

     smtp.gmail.com USERNAME@gmail.com:USERPASSWORD
    

    আসল পাসওয়ার্ড, ব্যবহারকারীর নাম এবং এসএমটিপি-ঠিকানা প্রতিস্থাপন করুন।

  • পোস্টফিক্স আপডেট করুন:

     sudo chmod 600 /etc/postfix/sasl_password # for safety of your smtp password
     sudo postmap hash:/etc/postfix/sasl_password 
     sudo postmap /etc/postfix/sender_canonical
     sudo /etc/init.d/postfix restart   
    

    আপনি ফাঁদে থাকতে পারে 'অনুমতি অস্বীকার' বাগ দ্বারা chown postfix:postfix /etc/postfixপূর্বেই।

এটি বেশিরভাগ ক্ষেত্রে এটি করা উচিত। তবুও কিছু এসএমটিপি সরবরাহকারীদের প্রেরক বা এনক্রিপশন হিসাবে একটি নির্দিষ্ট ঠিকানা প্রয়োজন।

সম্পর্কিত: পিয়ার :: মেল ইন্টারফেসটি আপনার পক্ষেও আগ্রহী হতে পারে।

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

যে এখানে প্রতিরোধ করতে। (আপনি যদি নিরাপদে থাকতে চান তবে একটি ডামি জিমেইল অ্যাকাউন্ট তৈরি করুন)


উবুন্টু (স্থানীয়) থেকে মেল প্রেরণ কাজ করে। তবে যদি আমি চাই যে আমার উইন্ডোজ এই মেশিনটি মেল প্রেরণের জন্য (পিএইচপিও) ব্যবহার করতে পারে? আমি কীভাবে এটি কনফিগার করব?
জেএম ওয়ার্ক

আমি প্রশ্ন পেয়েছি নিশ্চিত নই। আপনি আপনার উবুন্টু মেশিন থেকে বালি করতে পারেন। এখন আপনি যা করতে চান তা হল আপনার উইন্ডোজ পিসি থেকে পিএইচপি এর মাধ্যমে সেই উবুন্টু মেশিনের মাধ্যমে মাল প্রেরণ করা? এটা কি ঠিক?
কন-এফ-ব্যবহার

2
এখন প্যাকেজটি libsasl2 বিদ্যমান নেই। আমি 11.04 ব্যবহার করছি। আপডেট হওয়া প্যাকেজ অনুযায়ী এটির লিবাসল২২-২ ..
পৌরাণিক

61

ইতিমধ্যে উল্লিখিত হিসাবে, আপনার বাড়ির কম্পিউটারে অ্যাপ্লিকেশন বিকাশের সময় আপনার যদি পিএইচপি থেকে কেবল ইমেলগুলি প্রেরণের প্রয়োজন হয় তবে পোস্টফিক্স একটি ওভারকিল হবে।

আমি ব্যক্তিগতভাবে খুব সাধারণ এবং লাইটওয়েট প্যাকেজ এসএমটিপি ব্যবহার করি। এটি আউটবাউন্ড ইমেল প্রেরণের জন্য যে কোনও এসএমটিপি সার্ভার ব্যবহার করবে। এটি চালিয়ে ইনস্টল করুন:

sudo apt-get install ssmtp

তারপরে /etc/ssmtp/ssmtp.confফাইল সম্পাদনা করুন, বিদ্যমান মেলহাব লাইনটি মন্তব্য করুন এবং নিম্নলিখিত লাইনগুলি যুক্ত করুন (উদাহরণটি জিমেইল এসএমটিপি সার্ভারের জন্য):

mailhub=smtp.gmail.com:587
UseSTARTTLS=YES
AuthUser=<YOUR-EMAIL>@gmail.com
AuthPass=<YOUR-PASSWORD>

(আপনার জিমেইল ব্যবহারকারীর নাম এবং পাসওয়ার্ড সরবরাহ করুন course অবশ্যই আপনি অন্য কোনও এসএমটিপি সার্ভার ব্যবহার করতে পারেন)।

এখন আপনার php.ini সঠিক আছে তা নিশ্চিত করুন sendmail_path। এটি পড়তে হবে:

sendmail_path = /usr/sbin/sendmail -t

( @ ডিমা-এল এবং @ ওমার-সাবিকের মন্তব্যগুলি থেকে : আপনাকে ssmtpএখানে উল্লেখ করতে হবে না কারণ ইনস্টলেশনটি একটি সিমিলিং তৈরি করা উচিত ছিল /usr/sbin/sendmailযা সঠিকভাবে নির্দেশ করে Otherwisessmtp অন্যথায় আপনাকে নির্দিষ্ট করতে হবে sendmail_path = /usr/sbin/ssmtp -t)

অ্যাপাচি পুনরায় লোড করুন এবং আপনার পিএইচপি এখনই বহির্গামী ইমেলগুলি প্রেরণে সক্ষম হতে হবে।


3
আমার মনে হয় আপনি বোঝানো sendmail_path = /usr/sbin/ssmtp -t। এটি কার্যকর হয়েছে, ধন্যবাদ
ওমর সাবিক

1
ssmtp এর জন্য syMLink তৈরি করা উচিত /usr/sbin/sendmail, যা সঠিকভাবে ssmtp এ নির্দেশ করে। সুতরাং, ব্যবহারের sendmail_path = /usr/sbin/sendmail -tপাশাপাশি কাজ করা উচিত
Dima L.

2
কনফিগার করার বিষয়ে আরও ssmtpকিছু (কিছু দরকারী নোট পাওয়া গেছে): কীভাবে দেবিয়ানে পিএইচপি মেল সেট আপ করবেন - এই প্রশ্নটি + এই লিঙ্কটি প্রোগ্রাম সেট আপ করতে সহায়তা করেছিল।
gskema

1
জিমেইলের জন্য বিবেচনা করে আপনাকে আপনার Google অ্যাকাউন্টটি এটির জন্য কাজ করতে "অনিরাপদ অ্যাপ্লিকেশনগুলি" মঞ্জুরি করতে কনফিগার করতে হবে। দেখুন support.google.com/accounts/answer/6010255
aesede

1
: আমিও নিম্নলিখিত পংক্তিটি যোগ করুন ফেলা FromLineOverride=YESঅর্ডার নিম্নলিখিত ত্রুটির এড়ানোর জন্য:550 5.7.60 SMTP; Client does not have permissions to send as this sender
Caumons

29

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

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

sudo apt-get install msmtp-mta ca-certificates

এটি কনফিগার করুন

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

sudo vi /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 vi /etc/php5/apache2/php.ini

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

sendmail_path = /usr/bin/msmtp -t

অবশ্যই, 'sudo vi /etc/php5/conf.d' php.ini ছাড়া কাজ করবে না। আমার ক্ষেত্রে (উবুন্টু), আমাকে '/etc/php5/apache2/php.ini' সম্পাদনা করতে হয়েছিল এবং এটি কাজ করার জন্য অ্যাপাচি 'sudo /etc/init.d/apache2 পুনরায় লোড' করতে হবে।
দেজন

1
বিটিডাব্লু, আপনি আপনার এমএসএমটিআরসিপি কনফিগারেশনটি পরীক্ষা করে দেখতে পারেন:cat <<EOF | msmtp <receiver@test.com> Subject: test This is a test! EOF
দেজন

সুন্দর হবে, তবে এটি আমার পক্ষে কাজ করছে না। এর লগতে কিছুই উপস্থিত হয় না। এটি সম্পূর্ণ সূক্ষ্ম বলে মনে হচ্ছে, তবে কোনও পাশা নেই।
জেমস টি স্নেল

2
এমএসএমটিপি উপলব্ধ সিস্টেম-বিস্তৃত করতে, "এমএসএমটিপি-এমটিএ" ইনস্টল করুন।
কোলান

1
নিম্নলিখিত নির্দেশাবলীর ক্ষেত্রে আপনি যদি আমার মতো খুব আক্ষরিক হয়ে থাকেন তবে আপনি আসলে কনফিগ ফাইলে <> বন্ধনী রাখেন না। এটি বের করার জন্য আমাকে 20 মিনিট সময়
ডি রাদ

4

একটি সাধারণ ফিক্স করা উচিত। আপনাকে কেবল পোস্টফিক্স ইনস্টল করতে হবে যা প্রকৃত ইমেলিং করে।

sudo apt-get install postfix

আপনি এটি টার্মিনাল (এবং সফ্টওয়্যার কেন্দ্র নয়) থেকে চালাতে চান কারণ এটি আপনাকে কয়েকটি সেটআপ প্রশ্ন জিজ্ঞাসা করতে হবে। আপনাকে কেবলমাত্র সমস্ত ডিফল্ট গ্রহণ করতে হবে (কেবলমাত্র স্থানীয়-ইত্যাদি)।


2

এটি একটি পুরানো প্রশ্ন এবং উপরে উপযুক্ত উত্তর রয়েছে, তবে eximআমার পরিবেশের জন্য আমার প্রয়োজন ছিল । এছাড়াও, নিশ্চিত করুন যে আপনি সেন্ডমেলটি প্রথম স্থানে ইনস্টল করেছেন ( $ which sendmail- / usr / sbin / sendmail এর মতো কিছু ফেরত দেওয়া উচিত)। আমি লিনোড ডট কম এ একটি ভাল গাইড পেয়েছি , তবে টুকরোটি হ'ল:

apt-get install exim4-daemon-light mailutils

অনুসরণ করেছে:

dpkg-reconfigure exim4-config

যা আপনাকে একটি ইন্টারেক্টিভ সম্পাদকের কাছে নিয়ে যাবে।


1

দুর্দান্ত উত্তর , কন-এফ-ব্যবহার।

"ডামি জিমেইল অ্যাকাউন্ট" সম্পর্কে আমার একটি জিনিস যুক্ত করতে হবে:

এটি অত্যন্ত সুপারিশ করা হয়েছে কারণ আপনাকে কম সুরক্ষিত অ্যাপ্লিকেশনগুলির অনুমতি দেওয়ার জন্য আপনার জিমেইল অ্যাকাউন্টটি কনফিগার করতে হবে : https://www.google.com/settings/u/0/security/lesssecureapps অন্যথায় আপনি একটি "আপনার ওয়েব ব্রাউজার ব্যবহার করে লগ ইন করুন এবং তারপরে আবার চেষ্টা করুন "আপনার /var/log/mail.logফাইলে ত্রুটি ।

এছাড়াও আমি দেখতে পেলাম যে আমি জিএমএল এসএমটিপি আমার মূল শংসাপত্রটি প্রেরণ না করে আমি একটি সময়সীমা ত্রুটি পেয়েছি। এটা করতে:

sudo nano /etc/postfix/main.cf

নিম্নলিখিত ফাইলটি নীচে যোগ করুন

smtp_tls_CAfile = /etc/postfix/cacert.pem

তারপরে ফাইলটিতে গলিত রুট সার্টটি অনুলিপি cacert.pemকরুন:

cat /etc/ssl/certs/thawte_Primary_Root_CA.pem | sudo tee -a /etc/postfix/cacert.pem

আমি ব্যবহৃত লিঙ্কটি এখানে: উবুন্টু | জিএমএল এসএমটিপি ব্যবহার করতে পোস্টফিক্সটি কনফিগার করুন EasyEngine

আশা করি এটি কারও কয়েকটি চুলের ফলক সংরক্ষণ করে ...


0

আমি খুঁজে পেলাম যে ডিমা এল দ্বারা সরবরাহিত সমাধানগুলি সর্বাধিক সহজতম উপায় এবং সিস্টেমের কাছে লাইটওয়েট।

সেটিং সম্পর্কে আরও স্পষ্টতার জন্য কিছু সংযোজন। আপনি মন্তব্য করা উচিত hostnameমধ্যে /etc/ssmtp/ssmtp.confফাইল। নমুনা ssmtp.confফাইলটি নীচে রয়েছে:

#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=postmaster

# The place where the mail goes. The actual machine name is required no 
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.yourdomain.com
UseSTARTTLS=YES
AuthUser=mail@yourdomain.com
AuthPass=YOUREMAILPASSWORD

# Where will the mail seem to come from?
#rewriteDomain=

# The full hostname
#hostname=

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.