Failed to connect to mailserver...(το γνωστό τραγούδι)

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
phpdafni
Δημοσιεύσεις: 12
Εγγραφή: 05 Μάιος 2009 06:55

Failed to connect to mailserver...(το γνωστό τραγούδι)

Δημοσίευση από phpdafni » 10 Μάιος 2009 18:59

Πως γίνετε να στείλω email για register όπως έκανε και αυτό το forum ;


Το register.php

Εικόνα

Κώδικας: Επιλογή όλων

<html>

<head>

<title>Διαχείριση Βαθμολογίας </title>
<link href="stylesheets/public.css" media="all" rel="stylesheet"
type="text/css" />
</head>

<body>
<div id="header">
<h1>Σύστημα Διαχείρισης Βαθμολογιών και Απουσιών</h1>
</div>

<div id="main">

<table id="structure">
<tr>
<td id="navigation">
<ul>

<li><a href="index.php">Αρχική Σελίδα</a></li>

<li ><a href="login.php"> Σύνδεση</a></li>
</ul>
</td>
<td id="page">
<h2>Εγγραφή</h2>
<form action='verify.php' method='POST' name='register' accept-charset="UTF-8">
<table>

<tr>
<td>
Όνομα χρήστη&#58;
</td>

<td>
<input type='text' name='username'>
</td>

</tr>


<tr>
<td>
Κωδικός&#58;
</td>

<td>
<input type='password' name='password'>
</td>

</tr>

<tr>
<td>
</td>


</tr>

<td>
Πραγματικό όνομα<br>και επίθετο&#58;
</td>

<td>
<input type='text' name='realname'>
</td>

</tr>
<tr>
<td>
email&#58;
</td>

<td>
<input type='text' name='email'>
</td>

</tr>


<tr>
<td>
Διεύθυνση&#58;
</td>

<td>
<input type='text' name='address'>
</td>

</tr>
<tr>
<td>
T.K&#58;
</td>

<td>
<input type='text' name='pobox'>
</td>

<tr>
<td>
Πόλη&#58;
</td>

<td>
<input type='text' name='city'>
</td>

</tr>


<tr>
<td>
Τηλέφωνο&#58;
</td>

<td>
<input type='text' name='phone'>
</td>
</tr>
<tr>

<td> Ιδιότητα&#58;</td> <td>
<input type="radio" name="idiothta" value="secretary"checked> Γραμματέας
<input type="radio" name="idiothta" value="teacher" > Καθηγητής
<input type="radio" name="idiothta" value="student"> Μαθητής/Κηδεμόνας
</td>

<tr>

<td>
<input type="reset" />
</td>

<td><input type="hidden" name="form_submitted" value="1"/>

<input type='submit' name='submit' value='Εγγραφή'>
</td>

</tr>
</table>
</table>
</div>


<div id="footer">

</html>

To valid.php

Κώδικας: Επιλογή όλων

<?php

include &#40;"config.php"&#41;;
$con=mysql_connect&#40;$dbhost,$dbuser,$dbpass&#41;
or die&#40;"Cannot connect to database"&#41;;

mysql_select_db&#40;'dbusers'&#41;;

if &#40;$_POST&#91;'form_submitted'&#93; == '1'&#41; &#123;
##User is registering, insert data until we can activate it

$activationKey = mt_rand&#40;&#41; . mt_rand&#40;&#41; . mt_rand&#40;&#41; . mt_rand&#40;&#41; . mt_rand&#40;&#41;;


$username = mysql_real_escape_string&#40;$_POST&#91;'username'&#93;&#41;;
$password = mysql_real_escape_string&#40;$_POST&#91;'password'&#93;&#41;;
$realname= mysql_real_escape_string&#40;$_POST&#91;'realname'&#93;&#41;;
$email = mysql_real_escape_string&#40;$_POST&#91;'email'&#93;&#41;;
$address = mysql_real_escape_string&#40;$_POST&#91;'address'&#93;&#41;;
$pobox=$address = mysql_real_escape_string&#40;$_POST&#91;'pobox'&#93;&#41;;
$city= mysql_real_escape_string&#40;$_POST&#91;'city'&#93;&#41;;
$phone=mysql_real_escape_string&#40;$_POST&#91;'phone'&#93;&#41;;
$idiothta=mysql_real_escape_string&#40;$_POST&#91;'idiothta'&#93;&#41;;

mysql_query&#40;"set names utf8;"&#41;;


$sql= "INSERT INTO `dbusers`
&#40;`id` ,`username` ,`password`, `realname`, `email`, `address`, `pobox`, `city`, `phone`, `idiothta`,`activationkey`, `status`&#41;
VALUES
&#40;NULL , '$username', '$password', '$realname', '$email','$address', '$pobox','$city','$phone','$idiothta','$activationKey', 'verify'&#41;;";


if &#40;!mysql_query&#40;$sql&#41;&#41;

&#123;

die&#40;'Σφάλμα&#58; ' . mysql_error&#40;&#41;&#41;;

&#125;

echo "An email has been sent to $_POST&#91;email&#93; with an activation key. Please check your mail to complete registration.";

##Send activation Email

$to = $_POST&#91;email&#93;;

$subject = " registration";

$message = "Welcome to our website!\r\rYou, or someone using your email address, has completed registration at YOURWEBSITE.com. You can complete registration by clicking the following link&#58;\rhttp&#58;//www.YOURWEBSITE.com/verify.php?$activationKey\r\rIf this is an error, ignore this email and you will be removed from our mailing list.\r\rRegards,\ YOURWEBSITE.com Team";

$headers = 'From&#58; noreply@ YOURWEBSITE.com' . "\r\n" .

'Reply-To&#58; noreply@ YOURWEBSITE.com' . "\r\n" .

'X-Mailer&#58; PHP/' . phpversion&#40;&#41;;

mail&#40;$to, $subject, $message, $headers&#41;;

&#125; else &#123;

##User isn't registering, check verify code and change activation code to null, status to activated on success

$queryString = $_SERVER&#91;'QUERY_STRING'&#93;;

$query = "SELECT * FROM dbusers";

$result = mysql_query&#40;$query&#41; or die&#40;mysql_error&#40;&#41;&#41;;

while&#40;$row = mysql_fetch_array&#40;$result&#41;&#41;&#123;

if &#40;$queryString == $row&#91;"activationkey"&#93;&#41;&#123;

echo "Congratulations!" . $row&#91;"username"&#93; . " is now the proud new owner of an YOURWEBSITE.com account.";

$sql="UPDATE users SET activationkey = '', status='activated' WHERE &#40;id = $row&#91;id&#93;&#41;";

if &#40;!mysql_query&#40;$sql&#41;&#41;

&#123;

die&#40;'Error&#58; ' . mysql_error&#40;&#41;&#41;;

&#125;

&#125;

&#125;

&#125;

?>

ΤΟ λάθος που εμφανίζει...:

An email has been sent to 312321 with an activation key. Please check your mail to complete registration.

Warning: mail() [function.mail]: Failed to connect to mailserver at "@localhost" port 30, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\wamp\www\verify.php on line 58

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Failed to connect to mailserver...(το γνωστό τραγούδι)

Δημοσίευση από Rapid-eraser » 10 Μάιος 2009 21:04

Στα windows πρέπει να σετάρεις στο php.ini τον SMTP server που θα χρισιμοποιήσει η php για να στείλει email, αλλιός θα χρισημοποιήσει by defult το localhost.

Ο SMTP που θα χρησιμοποιήσεις πρέπει να είναι openrelayed άρα θα πρέπει να χρισιμοποιήσεις τον SMTP του ISP σου.

ΠΧ otenet -> mailgate.otenet.gr

Ρύθμιση του php.ini

Κώδικας: Επιλογή όλων

SMTP = "mailgate.otenet.gr";
sendmail_from = "mymail@nomail.org";
#sendmail_path = NULL
RTFM function:mail() (PHP 4, PHP 5)
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

phpdafni
Δημοσιεύσεις: 12
Εγγραφή: 05 Μάιος 2009 06:55

Failed to connect to mailserver...(το γνωστό τραγούδι)

Δημοσίευση από phpdafni » 10 Μάιος 2009 22:34

thanks .

Δουλεύει μια χαρά.

AndI2eaS
Δημοσιεύσεις: 5
Εγγραφή: 07 Μαρ 2010 22:20

Failed to connect to mailserver...(το γνωστό τραγούδι)

Δημοσίευση από AndI2eaS » 11 Μαρ 2010 13:57

Παρακολουθώ το φόρουμ καιρό, αλλα πριν λίγες μέρες έκανα εγγραφή και θέλω να κάνω μια ερώτηση..Ελπίζω να μην πειράζει που γράφω εδώ, αλλα είπα να μην ανοίξω νέο θέμα μιας και υπάρχει κάτι ολόιδιο..
Εχω το ίδιο ακριβώς πρόβλημα με τον ίδιο κώδικα και ενώ εχω κάνει όλες τις απαραίτητες αλλαγές στο php.ini για το SMTP μου βγάζει το ίδιο λάθος
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\xampp\htdocs\Project\register.php on line 89
Το θέμα είναι οτι το έτρεξα και στο laptop σε vista και το mail πήγε κανονικά(σε gmail μόνο, γιατί σε yahoo δεν έφτασε ποτέ..) αλλά στο αλλο pc που έχω 7 δεν γίνεται! Εχει κάποιος κάποια ιδέα τι μπορεί να φταίει;;

Είμαι με conn-x,
Στο php.ini έχω αυτά:

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

; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = postmaster@localhost
Εικόνα

AndI2eaS
Δημοσιεύσεις: 5
Εγγραφή: 07 Μαρ 2010 22:20

Failed to connect to mailserver...(το γνωστό τραγούδι)

Δημοσίευση από AndI2eaS » 11 Μαρ 2010 14:33

Τελικά παιδιά βρήκα μια λύση καθώς έψαχνα και ήταν να βάλω αυτό το κομμάτι κώδικα στο script για το mail.

Κώδικας: Επιλογή όλων

// Please specify your Mail Server - Example&#58; mail.yourdomain.com.
			ini_set&#40;"SMTP","mailgate.otenet.gr"&#41;;

			// Please specify an SMTP Number 25 and 8889 are valid SMTP Ports.
			ini_set&#40;"smtp_port","25"&#41;;
Στο δικό μου παράδειγμα το κομμάτι στο mail έγινε έτσι:

Κώδικας: Επιλογή όλων

<?php
			$con = mysql_connect&#40;"localhost","root",""&#41;;
			if &#40;!$con&#41;
			&#123;
			die &#40;'Could not connect&#58; '.mysql_error&#40;&#41;&#41;;
			&#125;
			mysql_select_db&#40;"school2", $con&#41;;
			
			if &#40;$_POST&#91;'form_submitted'&#93; == '1'&#41; &#123;
			//User is registering, insert data until we can activate it

			$activationKey = mt_rand&#40;&#41; . mt_rand&#40;&#41; . mt_rand&#40;&#41; . mt_rand&#40;&#41; . mt_rand&#40;&#41;;


			$username = mysql_real_escape_string&#40;$_POST&#91;'username'&#93;&#41;;
			$password = mysql_real_escape_string&#40;$_POST&#91;'password'&#93;&#41;;
			$realname= mysql_real_escape_string&#40;$_POST&#91;'realname'&#93;&#41;;
			$address = mysql_real_escape_string&#40;$_POST&#91;'address'&#93;&#41;;
			$city= mysql_real_escape_string&#40;$_POST&#91;'city'&#93;&#41;;
			$zipcode=$address = mysql_real_escape_string&#40;$_POST&#91;'zipcode'&#93;&#41;;
			$telephone=mysql_real_escape_string&#40;$_POST&#91;'telephone'&#93;&#41;;
			$email = mysql_real_escape_string&#40;$_POST&#91;'email'&#93;&#41;;
			$idiotita=mysql_real_escape_string&#40;$_POST&#91;'idiotita'&#93;&#41;;

			mysql_query&#40;"set names utf8;"&#41;;

			
			$sql= "INSERT INTO `users`
			&#40;`username` ,`password`, `realname`, `address`, `city`, `zipcode`, `telephone`, `email`, `idiotita`, `activationkey`, `status`&#41;
			VALUES
			&#40;'$username', '$password', '$realname', '$address', '$city', '$zipcode', '$telephone', '$email', '$idiotita', '$activationKey', 'verify'&#41;;";
			
			
			if &#40;!mysql_query&#40;$sql,$con&#41;&#41;
			&#123;
			die&#40;'Σφάλμα&#58; ' . mysql_error&#40;&#41;&#41;;
			&#125;
			echo "An email has been sent to $_POST&#91;email&#93; with an activation key. Please check your mail to complete registration.";

			##Send activation Email

--------Εδώ είναι το κομμάτι που με το οποίο όταν το έβαλα πήγε κανονικά το mail..------------

			// Please specify your Mail Server - Example&#58; mail.yourdomain.com.
			ini_set&#40;"SMTP","mailgate.otenet.gr"&#41;;

			// Please specify an SMTP Number 25 and 8889 are valid SMTP Ports.
			ini_set&#40;"smtp_port","25"&#41;;

			
			$to = $_POST&#91;email&#93;;

			$subject = " registration";

			$message = "Welcome to our website!\r\rYou, or someone using your email address, has completed registration at YOURWEBSITE.com. You can complete registration by clicking the following link&#58;\rhttp&#58;//localhost/register.php\r\rIf this is an error, ignore this email and you will be removed from our mailing list.\r\rRegards,\ YOURWEBSITE.com Team";

			$headers = 'From&#58; noreply@ YOURWEBSITE.com' . "\r\n" .

			'Reply-To&#58; noreply@ YOURWEBSITE.com' . "\r\n" .

			'X-Mailer&#58; PHP/' . phpversion&#40;&#41;;

			mail&#40;$to, $subject, $message, $headers&#41;;

			&#125; else &#123;

			##User isn't registering, check verify code and change activation code to null, status to activated on success

			$queryString = $_SERVER&#91;'QUERY_STRING'&#93;;

			$query = "SELECT * FROM dbusers";

			$result = mysql_query&#40;$query&#41; or die&#40;mysql_error&#40;&#41;&#41;;

			while&#40;$row = mysql_fetch_array&#40;$result&#41;&#41;&#123;

			if &#40;$queryString == $row&#91;"activationkey"&#93;&#41;&#123;

			echo "Congratulations!" . $row&#91;"username"&#93; . " is now the proud new owner of an YOURWEBSITE.com account.";

			$sql="UPDATE users SET activationkey = '', status='activated' WHERE &#40;id = $row&#91;id&#93;&#41;";

			if &#40;!mysql_query&#40;$sql&#41;&#41;

			&#123;

			die&#40;'Error&#58; ' . mysql_error&#40;&#41;&#41;;

			&#125;

			&#125;			

			&#125;

			&#125;

			?>


Αλλά δυστυχώς σε yahoo το mail δεν πάει ούτε τώρα..Ξέρει κάποιος γιατί συμβαίνει αυτό ή έχει να προτείνει κάποια λύση;; Γιατί έτσι δεν έχω καλή δουλειά αφού παέι μόνο σε gmail..Προσωπική ασχολία είναι απλά θέλω να το καταφέρω να λειτουργεί καλά. Σε localhost είμαι.
Επίσης κάποια άλλη λύση μήπως έχει κανείς; Γιατί αυτή δεν είναι και πολύ αποτελεσματική, π.χ η φόρμα επικοινωνίας που υπάρχει εδώ στο φόρουμ με το attachment πάλι θέλει αυτό το κομμάτι κώδικα για να τρέξει, αλλα απο το τίποτα φτάνει που τρέχει! Οτιδήποτε δεκτό! Ευχαριστώ και sorry για τα πολλά πόστ..
Τελευταία επεξεργασία από το μέλος AndI2eaS την 11 Μαρ 2010 14:51, έχει επεξεργασθεί 2 φορές συνολικά.
Εικόνα

AndI2eaS
Δημοσιεύσεις: 5
Εγγραφή: 07 Μαρ 2010 22:20

Failed to connect to mailserver...(το γνωστό τραγούδι)

Δημοσίευση από AndI2eaS » 11 Μαρ 2010 14:39

Διπλό πόστ... :roll:
Εικόνα

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

Failed to connect to mailserver...(το γνωστό τραγούδι)

Δημοσίευση από nbc » 11 Μαρ 2010 16:17

Αν εννοείς yahoo.gr, αυτό έχει σταματήσει εδώ και πολλούς μήνες - είναι γνωστό στα fora γι αυτό και έχουν βγάλει σχετικές ανακοινώσεις. Αλλά και το .com έχει πρόβλημα.

Γενικά, οι περισσότεροι servers στέλνουν τέτοια mails στο junk folder ή τα κόβουν εντελώς. To hotmail, πχ, τα στέλνει στο junk. Εδώ που τα λέμε, mails του τύπου αυτού ή spam είναι ή πειράματα. Τι θα πει localhost και yourwebsite.com? Οι servers έχουν κάθε λόγο να κόβουν mails από ανύπαρκτα domains και με ανύπαρκτα return-paths. Ποιον θα ειδοποιήσουν αν πχ το account δεν υπάρχει? Σε ποιον θα στείλουν "Undelivered" message. Στο localhost σου? :D

AndI2eaS
Δημοσιεύσεις: 5
Εγγραφή: 07 Μαρ 2010 22:20

Failed to connect to mailserver...(το γνωστό τραγούδι)

Δημοσίευση από AndI2eaS » 11 Μαρ 2010 17:21

Ναι σωστό αυτό που λές..Καλα το κείμενο που στέλνεται στο mail μην το ψάχνεις ! Είναι πολύ δοκιμαστικό, ότι είχε το άφησα, δεν πείραξα καθόλου κείμενο και λέει οτι να'ναι..
Thnx για την πληροφορία για το yahoo!
Εικόνα

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης