मैंने Ubuntu 11.04, LAMP को कार्यस्थल का उपयोग करके स्थापित किया।
मुझे लगता है कि PHP mail()
काम नहीं करता है।
मुझे लगता है कि मुझे इसे सक्षम करने की आवश्यकता है या कुछ और? मैं उसको कैसे करू?
मैंने Ubuntu 11.04, LAMP को कार्यस्थल का उपयोग करके स्थापित किया।
मुझे लगता है कि PHP mail()
काम नहीं करता है।
मुझे लगता है कि मुझे इसे सक्षम करने की आवश्यकता है या कुछ और? मैं उसको कैसे करू?
जवाबों:
Php के मेल मैनुअल से:
आवश्यकताएँ
उपलब्ध होने वाले मेल फ़ंक्शंस के लिए, PHP को एक स्थापित और काम करने वाले ईमेल सिस्टम की आवश्यकता होती है। उपयोग किए जाने वाले प्रोग्राम को php.ini फ़ाइल में कॉन्फ़िगरेशन सेटिंग्स द्वारा परिभाषित किया गया है।
इसका मतलब है कि आपको इसे उपयोग करने के लिए किसी प्रकार के मेलस्वर को स्थापित करना होगा और php को कॉन्फ़िगर करना होगा। आमतौर पर यह मेलस्वर उबंटू में पोस्टफिक्स होता है। हालाँकि - यदि आप जिस php साइड को कोडिंग कर रहे हैं, वह अंततः एक होस्टिंग सेवा के किनारे (जैसे xmission) पर स्टोर किया जाएगा, तो एक मेल सर्वर सबसे पहले ही वहां स्थापित हो जाएगा। उस स्थिति में स्थानीय रूप से अपनी साइट का ऑनलाइन परीक्षण करें।
यदि आपको इसे अपने सिस्टम पर परीक्षण करने की आवश्यकता है या इसका मतलब यह है कि इसे अपने ही घर-सर्वर पर होस्ट करने के लिए आगे बढ़ें:
स्थापना: पोस्टफिक्स / sudo apt-get install postfix
प्रक्रिया के दौरान आपसे पूछा जाएगा कि आप किस मोड में पोस्टफिक्स इंस्टॉल करना चाहते हैं। चार संभावित तरीके हैं:
इंस्टॉल के बाकी विकल्प इस सामान्य कॉन्फ़िगरेशन की आपकी पसंद पर निर्भर करते हैं।
सबसे अधिक संभावना है कि आप एक उपग्रह इंस्टॉल चुनेंगे। इसका मतलब है कि एक बाहरी प्रदाता का उपयोग करके मेल भेजा जाएगा। Smtp-server (आउटगोइंग मेल सर्वर) के रूप में आपको अपने प्रदाताओं को smtp निर्दिष्ट करना होगा। बाकी विकल्प आत्म व्याख्यात्मक हैं।
अधिकांश smtp- सर्वर को मेल भेजने के लिए एक पासवर्ड प्रमाणीकरण की आवश्यकता होती है। तो पोस्टफिक्स को उस पासवर्ड को जानना होगा। इसके अलावा विचार करने के लिए एन्क्रिप्शन जैसी चीजें हैं (जो आपको Google को देनी होंगी)। पासवर्ड प्रमाणीकरण (sasl) का उपयोग करके आप पोस्टफ़िक्स को कॉन्फ़िगर कैसे करते हैं:
सॉफ़्टवेयर केंद्र आइकन पर क्लिक करके या टर्मिनल का उपयोग करके libsasl2- मॉड्यूल और sasl2-bin स्थापित करें :
sudo apt-get install libsasl2-2 libsasl2-modules sasl2-bin
इन पंक्तियों को जोड़कर sasl-SSL सक्षम करें /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
वास्तविक पासवर्ड, उपयोगकर्ता नाम और smtp-address पता।
अद्यतन उपसर्ग:
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
पहले से।
ऐसा ज्यादातर मामलों में करना चाहिए। फिर भी कुछ smtp प्रदाताओं को प्रेषक या एन्क्रिप्शन के रूप में एक विशिष्ट पते की आवश्यकता होती है।
संबंधित: PEAR :: मेल इंटरफ़ेस भी आप के लिए ब्याज की हो सकती है।
जीमेल (और शायद अन्य सेवाएं) यह पसंद नहीं कर सकते हैं कि आप इस तरह से मेल भेजने का प्रयास कर रहे हैं क्योंकि यह उनके मानकों द्वारा असुरक्षित समझा जा सकता है, और आपके प्रयास को अवरुद्ध करेगा अर्थात स्क्रीन पर कुछ भी नहीं होगा या पूरी प्रक्रिया का कोई स्थान अवरुद्ध होगा। आपका प्रमाणीकरण। साथ ही आपका POP3 सक्षम होना चाहिए।
यह देखने के लिए यहां देखें। (यदि आप सुरक्षित पक्ष में रहना चाहते हैं, तो एक डमी जीमेल खाता बनाएं)
जैसा कि पहले ही उल्लेख किया गया है, यदि आपके होम कंप्यूटर पर एप्लिकेशन विकसित करते समय आपको केवल php से ईमेल भेजने की आवश्यकता होती है, तो पोस्टफिक्स एक ओवरकिल होगा।
मैं व्यक्तिगत रूप से बहुत ही सरल और हल्के पैकेज ssmtp का उपयोग करता हूं। यह आउटबाउंड ईमेल भेजने के लिए किसी भी smtp सर्वर का उपयोग करेगा। इसे चलाकर स्थापित करें:
sudo apt-get install ssmtp
फिर /etc/ssmtp/ssmtp.conf
फ़ाइल संपादित करें , मौजूदा मेलहब लाइन पर टिप्पणी करें और निम्नलिखित पंक्तियाँ जोड़ें (यह उदाहरण gmail smtp सर्वर के लिए है):
mailhub=smtp.gmail.com:587
UseSTARTTLS=YES
AuthUser=<YOUR-EMAIL>@gmail.com
AuthPass=<YOUR-PASSWORD>
(अपना जीमेल उपयोगकर्ता नाम और पासवर्ड प्रदान करें। बेशक आप किसी अन्य एसएमटीपी सर्वर का उपयोग कर सकते हैं)।
अब सुनिश्चित करें कि आपका php.ini सही है sendmail_path
। इसे इस प्रकार पढ़ना चाहिए:
sendmail_path = /usr/sbin/sendmail -t
( @ Dima-l और @ omar-sabic की टिप्पणियों से : आपको ssmtp
यहां निर्दिष्ट करने की आवश्यकता नहीं है क्योंकि इंस्टॉलेशन के लिए एक सिमलिंक बनाना चाहिए /usr/sbin/sendmail
, जो सही ढंग से इंगित करता है ssmtp
। अन्यथा आपको निर्दिष्ट करना होगा sendmail_path = /usr/sbin/ssmtp -t
)
पुनः लोड करें अपाचे और आपका php अब आउटगोइंग ईमेल भेजने में सक्षम होना चाहिए।
sendmail_path = /usr/sbin/ssmtp -t
। यह काम किया, धन्यवाद
/usr/sbin/sendmail
, जो ssmtp को सही ढंग से इंगित करता है। तो, का उपयोग कर के sendmail_path = /usr/sbin/sendmail -t
रूप में अच्छी तरह से काम करना चाहिए
ssmtp
(कुछ उपयोगी नोट्स मिले): डेबियन में PHP मेल कैसे सेट करें - यह सवाल + इस लिंक ने प्रोग्राम को सेट करने में मदद की।
FromLineOverride=YES
निम्नलिखित त्रुटि से बचने के लिए:550 5.7.60 SMTP; Client does not have permissions to send as this sender
PHP को मेल भेजने के लिए SMTP क्लाइंट की आवश्यकता होती है। आप इस फ़ंक्शन को पूरा करने के लिए पोस्टफ़िक्स की तरह एक पूर्ण विशेषताओं वाला मेल ट्रांसफर एजेंट (MTA) स्थापित कर सकते हैं , लेकिन यह ओवरकिल है यदि आपको केवल PHP के माध्यम से मेल भेजने की आवश्यकता है। इसके बजाय, msmtp स्थापित करें । यह हल्का और कॉन्फ़िगर करने के लिए बहुत सरल है।
Msmtp स्थापित करें
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
आपको "<" और ">" (समावेशी, इन्हें हटा दें) के भीतर सब कुछ द्वारा दर्शाए गए कॉन्फ़िगरेशन डेटा को बदलने की आवश्यकता है। होस्ट / यूज़रनेम / पासवर्ड के लिए, अपने मेल प्रदाता के माध्यम से मेल भेजने के लिए अपनी सामान्य साख का उपयोग करें।
PHP को इसका उपयोग करने के लिए कहें
sudo vi /etc/php5/apache2/php.ini
इस एकल पंक्ति को जोड़ें:
sendmail_path = /usr/bin/msmtp -t
cat <<EOF | msmtp <receiver@test.com> Subject: test This is a test! EOF
एक साधारण फिक्स होना चाहिए। आपको केवल पोस्टफ़िक्स को स्थापित करने की आवश्यकता है जो वास्तविक ईमेलिंग करता है।
sudo apt-get install postfix
आप इसे टर्मिनल से चलाना चाहते हैं (और सॉफ्टवेयर सेंटर नहीं) क्योंकि इसमें आपसे कुछ सेटअप सवाल पूछने की जरूरत है। आपको केवल सभी चूक (स्थानीय-केवल, आदि) को स्वीकार करना चाहिए।
यह एक पुराना सवाल है और ऊपर योग्य जवाब हैं, लेकिन मुझे exim
अपने पर्यावरण की आवश्यकता है। इसके अलावा, पुष्टि करें कि आपके पास पहले से इंस्टॉल किया हुआ ईमेल है ( $ which sendmail
- कुछ वापस करना चाहिए जैसे / usr / sbin / sendmail)। मुझे linode.com पर एक अच्छा गाइड मिला , लेकिन जिस्ट है:
apt-get install exim4-daemon-light mailutils
के बाद:
dpkg-reconfigure exim4-config
जो आपको एक इंटरेक्टिव एडिटर के लिए मिलेगा।
शानदार जवाब , कॉन-एफ-यूज़।
मुझे "डमी जीमेल खाते" के बारे में जोड़ने के लिए एक बात है:
यह अत्यधिक अनुशंसित है क्योंकि आपको कम सुरक्षित अनुप्रयोगों की अनुमति देने के लिए अपने जीमेल खाते को कॉन्फ़िगर करना
होगा : https://www.google.com/settings/u/0/security/lesssecureapps अन्यथा आपको "कृपया अपने वेब ब्राउज़र का उपयोग करके लॉग इन करना होगा" और फिर अपनी /var/log/mail.log
फ़ाइल में फिर से "त्रुटि" का प्रयास करें ।
मुझे यह भी पता चला कि मुझे टाइमआउट त्रुटि तब तक मिलती है जब तक कि मैं gmail smtp नहीं भेज दूं मेरा रूट सर्टिफिकेट गंभीर हो जाता है। यह करने के लिए:
sudo nano /etc/postfix/main.cf
फ़ाइल के नीचे करने के लिए निम्न जोड़ें
smtp_tls_CAfile = /etc/postfix/cacert.pem
फिर thawte root सर्टिफिकेट को cacert.pem
फाइल में कॉपी करें :
cat /etc/ssl/certs/thawte_Primary_Root_CA.pem | sudo tee -a /etc/postfix/cacert.pem
यहाँ लिंक का उपयोग किया गया है: Ubuntu पर SMTP का उपयोग करने के लिए पोस्टफ़िक्स को कॉन्फ़िगर करें | EasyEngine
उम्मीद है कि यह किसी को कुछ बाल follicles बचाता है ...
मैंने पाया कि Dima L द्वारा प्रदान किया गया समाधान सिस्टम का सबसे आसान तरीका और हल्का है।
बस सेटिंग पर अधिक स्पष्टता के लिए कुछ जोड़। आपको फ़ाइल 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