PHP, LAMPP और PostFix के साथ मेल भेजना


9

मैं अब पूरे 2 दिनों के लिए कोशिश कर रहा हूं, और मुझे काम करने के लिए सबसे सरल चीज नहीं मिल सकती है।

समस्या: PHP से मेरे ईमेल पते पर ईमेल भेजने से काम नहीं चलता

मैं Windows और Sendmail के साथ काम कर रहा हूं (Sendmail पहले XAMPP पैकेज में था) और सब कुछ ठीक था। लिनक्स के लिए XAMPP- पैकेज (1.7.7) में हालांकि Sendmail एकीकृत नहीं है। इसलिए थोड़ा घूमने के बाद मुझे पता चला कि पोस्टफिक्स एक एलएएमपीपी-पर्यावरण में बेहतर बैठता है।


मैंने अब तक क्या प्रयास किया है:

मैंने पोस्टफ़िक्स को स्थापित किया है और इसे अपने निजी ई-मेल प्रदाता के smtp- सर्वर का उपयोग करने के लिए कॉन्फ़िगर करना चाहता हूं (जैसे कि यह विंडोज पर किया था)। तो मैंने अपने php.ini को इस तरह से कन्फ़्यूज़ किया है :

[mail function]
; For Win32 only.
;SMTP = localhost
;smtp_port = 25

; For Win32 only.
;sendmail_from = me@example.com

sendmail_path = /etc/postfix
mail.add_x_header = On

ध्यान दें कि मैंने "Win32 केवल" -stuff टिप्पणी की है। /Etc/postfix/main.cf इस तरह लग रहा है:

smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
myhostname = ubuntu
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
sender_canonical_maps = hash:/etc/postfix/sender_canonical
mydestination = ubuntu, localhost.localdomain, localhost
relayhost = mail.gmx.net
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only

/ etc / उपनाम अपरिवर्तित हैं:

# Required aliases
postmaster: root
MAILER-DAEMON:  postmaster

# Common aliases
abuse:      postmaster
spam:       postmaster

/ etc / पोस्टफ़िक्स / sasl_password :

my.providers.smtp my_login:my_password

/ Etc / postfic / sender_canonical:

postmaster my.email@ddress.com

क्या होता है:

इसलिए जब मैं करता हूं

> sudo /etc/init.d/postfix start

सब कुछ ठीक काम करने लगता है और /var/log/mail.log कहता है: "ubuntu postfix / master [9720]: डेमन शुरू हुआ - संस्करण 2.8.5, कॉन्फ़िगरेशन / etc / पोस्टफ़िक्स"

लेकिन जब मैं अपनी PHP-script (जो Windows और Sendmail के साथ ठीक काम करता है) चलाती हूं, तो यह बस के माध्यम से चलता है और कुछ भी नहीं होता है, यहां तक ​​कि एक त्रुटि भी लॉग नहीं होती है।


मैं वास्तव में क्या हासिल करना चाहता हूं:

मैं स्थानीय रूप से ई-कॉमर्स वेबसाइट पर काम कर रहा हूं। यह समर्पित वेबसर्वर पर ठीक चलता है, लेकिन मैं यह भी स्पष्ट कारणों से स्थानीय स्तर पर चलाना चाहता हूं। कुछ मामलों में, यह ईमेल भेजता है, और मैं सिर्फ थंडरबर्ड या किसी अन्य तरीके से उन्हें प्राप्त करने में सक्षम होना चाहता हूं। यहाँ पोस्टफिक्स ओवरकिल का उपयोग कर रहा है? मुझे ईमेल प्राप्त करने की आवश्यकता नहीं है - मैं केवल भेजे गए मेल को किसी भी तरह दिखाई देना चाहता हूं। मुझे इस मुद्दे के लिए कोई भी उपयोगी कदम-दर-चरण-ट्यूटोरियल नहीं मिल रहा था (न तो सेनमेल और न ही पोस्टफ़िक्स के बारे में - लेकिन, ईमानदार होने के लिए, मैं लिनक्स के लिए बहुत नया हूं)।

जवाबों:


13

आपके php.ini में, यह:

sendmail_path = /etc/postfix

Sendmail (या संगत) बाइनरी के लिए पथ होना चाहिए।
आपने इसे पोस्टफ़िक्स की कॉन्फ़िगरेशन डायरेक्टरी में सेट किया है जो सही नहीं है।

ऐतिहासिक कारणों से, आमतौर पर /usr/bin/sendmailएक संगतता लिंक के रूप में बनाए रखा जाता है।
sendmailपहले के आसपास था (मुझे लगता है) और बहुत कुछ सब कुछ मान लेता है यह स्थापित एमटीए में है। इसलिए जब ऐसा नहीं होता है, तो प्रतिस्थापन एक सिंबल बनाता है ताकि कुछ भी न टूटे।


बहुत बहुत धन्यवाद! हालांकि मुझे यह समझ में नहीं आया कि सेंडमेल और पोस्टफिक्स एक साथ क्यों और किस रूप में काम करते हैं - यह अब काम करता है! याद नहीं कर सकते हैं जहाँ मैं इसे पोस्टफिक्स में सेट करने के बारे में पढ़ता हूं, लेकिन यह मेरे मामले में सही सेटिंग है:sendmail_path = "/usr/sbin/sendmail -t -i"
Quasdunk

थोड़ी और जानकारी जोड़ी - मूल रूप से वे एक साथ काम नहीं कर रहे हैं, आपके पास Sendmail नहीं है, लेकिन पोस्टफिक्स होने का नाटक कर रहा है, क्योंकि इतना सामान वहाँ होने की उम्मीद करता है :) आप समान रूप से sendmail_path को इंगित करने के लिए सेट कर सकते हैं उपसर्ग बाइनरी।
सीज़ियम

1
मुझे याद है! sendmail बग के बाद बग के बाद बग के बाद बग पर अंत के वर्षों के लिए बग था। एक बिंदु पर, आप अपने ~ / .forward में रूट-ओनली कमांड शामिल कर सकते हैं, अपने आप को एक मेल भेज सकते हैं, और जो कुछ भी एक यूनिक्स / लिनक्स सिस्टम पर कर सकते हैं। मास एक्सोडस था, और नए मेल सर्वर में सेंडमेल की तरह व्यवहार करने के लिए डिज़ाइन किया गया एक सेंडमेल-जैसा प्रोग्राम शामिल था ताकि अन्य सभी प्रोग्राम जो खुद को सेंडमेल के आसपास बनाए थे, अब भी बिना किसी अतिरिक्त प्रयास के काम करेंगे।

अतिरिक्त जानकारी के लिए बहुत बहुत धन्यवाद! यह सब अब और अधिक समझ में आता है;) अगर मैं कर सकता तो मैं आपको एक और +1 देता, लेकिन मुझे आशा है कि कोई और व्यक्ति जो इसे उतना ही उपयोगी
समझता

1

लोकलहोस्ट (WAMP, XAMP, या LAMP) से मेल भेजने के लिए आप PHPMailer पैकेज का उपयोग कर सकते हैं

  • Github https://github.com/shashidhark/PhpMailer से डाउनलोड करने के लिए यहां क्लिक करें और रीडमी फ़ाइल में दिए गए निर्देशों का पालन करें।

यह वही निर्देश होगा जो रीडमी फ़ाइल में दिया गया है।

WAMP (विंडोज़):

सबसे पहले आपको "php.ini" को एडिट करना होगा। इस फाइल को खोजने के लिए WAMP सर्वर से निम्न कोड का उपयोग करके phpinfo प्रदर्शित करें। C: / wamp / www / के अंदर एक php फ़ाइल [setting.php] बनाएँ और उस फ़ाइल में निम्न सामग्री जोड़ें।

<?php
     echo phpinfo();
?>

ब्राउज़र पर localhost / setting.php टाइप करें । वहाँ "लोड कॉन्फ़िगरेशन फ़ाइल" की खोज करें जो आपके php.ini के लिए रास्ता होगा ।

में php.ini (अर्ध कोलन) `विस्तार = php_openssl.dll को दिया; फ़ाइल को हटा दें। अब सर्वर सेटिंग समाप्त हो गई है ...

  • Github से PHPMailer फ़ोल्डर डाउनलोड करने के बाद,
  • एक्सट्रेक्ट-> अपने प्रोजेक्ट फोल्डर में पूरा फोल्डर कॉपी करें C: / wamp / www /
  • Index.php फ़ाइल खोजें।
  • अपनी आवश्यकता के अनुसार पैरामीटर बदलें।
  • फिर ब्राउजर में लोकलहोस्ट / PHPMailer / index.php टाइप करें ।
  • यदि ईमेल भेजा जाता है तो यह सफल संदेश दिखाएगा, अन्यथा यह त्रुटि संदेश देगा।

दीपक (लिनक्स):

  • लिनक्स के मामले में, php.ini फ़ाइल को संपादित करने की आवश्यकता नहीं है क्योंकि मैंने WAMP के तहत पहला बिंदु समझाया था।

  • एक और बदलाव परियोजना या दस्तावेज़ रूट फ़ोल्डर अलग है।

  • लिनक्स में डिफ़ॉल्ट दस्तावेज़ रूट फ़ोल्डर / var / www होगा
  • आप दस्तावेज़ रूट फ़ोल्डर को आसानी से बदल सकते हैं। उसके लिए https://stackoverflow.com/a/17612396/1925943 पर जाएं
  • इस दस्तावेज़ रूट फ़ोल्डर में PhpMailer को कॉपी करें और अपनी आवश्यकता के अनुसार index.php को संपादित करें।
  • फिर ब्राउजर में लोकलहोस्ट / PhpMailer / index.php टाइप करें ।

0

लोकलहोस्ट से जीमेल के माध्यम से ईमेल (सेंडमेल पैकेज के साथ) भेजने के लिए कृपया PHP + Ubuntu की जाँच करें ईमेल भेजने के लिए gmail फॉर्म का उपयोग करके लोकलहोस्ट एक अन्य उत्तर संभव है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.