2013-10-10 11 views
6

में त्रुटि में विफल रहा है मैं पूरी तरह से PHP के लिए नया हूँ और मैं PHP का उपयोग एक मेल भेजने के लिए चाहते हैं। मेरे पास एक हमसे संपर्क फ़ॉर्म है whcih ईमेल स्वीकार करेगा व्यक्ति मुझसे संपर्क कर रहा है और इसलिए मेल मुझे भेजा जाएगा। मैं https://github.com/PHPMailer/PHPMailer/tree/master से PHPMailer पुस्तकालय का उपयोग कर रहा है और निम्नलिखित कोड का टुकड़ा मैं उपयोग कर रहा हूँ है।एसएमटीपी कनेक्ट() PHPMailer

<?php 
require("class.phpmailer.php"); 
$mail = new PHPMailer(); 
$mail->IsSMTP(); 

$mail->SMTPSecure = 'tls'; 

$mail->Host  = "resolver1.opendns.com"; // this SMTP server of my machine 
//$mail->Host  = "208.67.222.222";//ip ; which one to use the resolver1.opendns.com or 208.67.222.222 ??? 

$mail->From  = "[email protected];//email id of the person 

$mail->AddAddress("[email protected]");//my email id 

$mail->Subject = "First PHPMailer Message"; 
$mail->Body  = "Hi! \n\n This is my first e-mail sent through PHPMailer."; 
$mail->WordWrap = 50; 

if(!$mail->Send()) 
{ 
    echo 'Message was not sent.'; 
    echo 'Mailer error: ' . $mail->ErrorInfo; 
} 
else 
{ 
    echo 'Message has been sent.'; 
} 
?> 

मुझे त्रुटि मिल रही है "संदेश भेजा नहीं गया था। मेलर त्रुटि: एसएमटीपी कनेक्ट() विफल।" मुझे समस्या नहीं मिल रही है ..? $ मेल-> होस्ट = ""; कृपया इस पर टिप्पणी करें कि यह क्या है ??

+0

यदि आपके नेटवर्क इंटरफेस में एक IPv6 पता तो यह निकाल दें है। –

+0

मुझे नहीं लगता कि resolver1.opendns.com अपना ईमेल स्वीकार करने के लिए जा रहा है है। –

+0

मुझे इसे काम करने के लिए '$ मेल-> पोर्ट = $ SmtpPort;' जोड़ना पड़ा। यह विकास सर्वर पर काम करता था लेकिन इससे पहले उत्पादन पर नहीं। – minipif

उत्तर

0

आप resolver1.opendns.com की TCP पोर्ट 25 की जाँच करनी चाहिए, यह ब्लॉक किया जा रहा है या नहीं इस तरह के sendmail या कुछ एमटीए के रूप में stmpd शुरू seens।

टेलनेट resolver1.opendns.com 25

कोशिश करते हैं और आप TCP पोर्ट 25 खोला नहीं है मिल जाएगा।

23

$mail->SMTPDebug = 1; जोड़ें और समस्या डिबग करने के लिए प्रयास करें।

+0

मेरे लिए, मेरे आरएचईएल सिस्टम पर मुझे यह त्रुटि मिली जब मैंने पोस्टफिक्स को कॉन्फ़िगर किया था लेकिन इसे अभी तक विकल्पों का उपयोग करके डिफ़ॉल्ट एमटीए पर स्विच नहीं किया था। – im3r3k

1

शायद यह आपके विन्यास समस्या है। PHPMailer विन्यास की

उदाहरण इस तरह है:

<?php 
require 'class.phpmailer.php'; 

$mail = new PHPMailer; 

$mail->isSMTP();          // Set mailer to use SMTP 
$mail->Host = 'smtp1.example.com;smtp2.example.com'; // Specify main and backup server 
$mail->SMTPAuth = true;        // Enable SMTP authentication 
$mail->Username = 'jswan';       // SMTP username 
$mail->Password = 'secret';       // SMTP password 
$mail->SMTPSecure = 'tls';       // Enable encryption, 'ssl' also accepted 

$mail->From = '[email protected]'; 
$mail->FromName = 'Mailer'; 
$mail->addAddress('[email protected]', 'Josh Adams'); // Add a recipient 
$mail->addAddress('[email protected]');    // Name is optional 
$mail->addReplyTo('[email protected]', 'Information'); 
$mail->addCC('[email protected]'); 
$mail->addBCC('[email protected]'); 

$mail->WordWrap = 50;         // Set word wrap to 50 characters 
$mail->addAttachment('/var/tmp/file.tar.gz');   // Add attachments 
$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name 
$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'; 

if(!$mail->send()) { 
    echo 'Message could not be sent.'; 
    echo 'Mailer Error: ' . $mail->ErrorInfo; 
    exit; 
} 

echo 'Message has been sent'; 

यहाँ $ मेल> होस्ट smtp मेल सर्वर है। आम तौर पर smtp के साथ शुरू किया।

4

@joydesigner द्वारा बहुत अच्छी तरह से जांच की गई, एसएमटीपी के माध्यम से कनेक्ट करने के लिए, आपको hostname, username and password पास करना होगा और फिर उसे ईमेल कनेक्ट करना और भेजना होगा।

$mail->Host = 'smtp1.example.com;smtp2.example.com'; // Specify main and backup server 
$mail->SMTPAuth = true;        // Enable SMTP authentication 
$mail->Username = 'jswan';       // SMTP username 
$mail->Password = 'secret';       // SMTP password 
$mail->SMTPSecure = 'tls';       // tls or ssl connection as req 

यहाँ मैं आप बीत चुके हैं केवल, host जानकारी, कृपया username & password रूप में अच्छी तरह जोड़ सकते हैं और एक बार कोशिश देखते हैं।

यह भी जांच कि TLS/SSL PORT अपने सर्वर के लिए खुला है:

चेक के साथ:

telnet resolver1.opendns.com 25 
संबंधित मुद्दे