PhpMailer VS. SMTP [Megoldva]

Sziasztok!

Napok óta próbálkozom már azzal, hogy el tudjak küldeni egy levelet PHP-ből a GMail SMTP szervere segítségével.



<?php
	require("class.phpmailer.php");
	$mailer = new PHPMailer();
	$mailer->IsSMTP();
	$mailer->Host = 'ssl://smtp.gmail.com';
	$mailer->SMTPSecure = "tls";                 // sets the prefix to the servier
	$mailer->Port = 587;
	$mailer->SMTPAuth = TRUE;
	$mailer->Username = 'sajat@gmail.com';  // Change this to your gmail adress
	$mailer->Password = 'jelszo';  // Change this to your gmail password
	$mailer->From = 'sajat@gmail.com';  // This HAVE TO be your gmail adress
	$mailer->FromName = 'fake'; // This is the from name in the email, you can put anything you like here
	$mailer->Body = 'This is the main body of the email';
	$mailer->Subject = 'This is the subject of the email';
	$mailer->AddAddress('cimzett@gmail.com');  // This is where you put the email adress of the person you want to mail
	
	if(!$mailer->Send())
	{
	   echo "Message was not sent<br/ >";
	   echo "Mailer Error: " . $mailer->ErrorInfo;
	}
	else
	{
	   echo "Message has been sent";
	}
?>

folyton a következő hibaüzenetet kapom:

SMTP Error: Could not connect to SMTP host. Message was not sent
Mailer Error: SMTP Error: Could not connect to SMTP host.

Az ISP és a tűzfal nem blokkolhatja, mivel a Thunderbird beállításai ugyanezek és azzal tudok levelet fogadni és küldeni.

A php.ini a következőket tartalmazza:

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

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = postmaster@localhost

---------

Windows 7, EasyPHP 5.3.0 (PHP 5.3.0)

Mi lehet a gond?

Köszi.
MysteryKe.

Hozzászólások

$mailer->Port = 465;
probald igy.

OpenBSD 4.7/i386 theo for the prezident:D

Én így csnáltam: http://pastebin.com/0izGpUJX
Fáradt vagyok már átnézni a különbségekért. Remélem azért segítettem.
SMTP beállítások azért vannak elágazásban, mert konfig alapján, lehet sendmail vagy mail-t is használni így.

köszi, kipróbáltam.
hibaüzenetet dobott:

Warning: stream_socket_enable_crypto() [streams.crypto]: this stream does not support SSL/crypto in C:\Program Files\EasyPHP5.3.0\www\class.smtp.php on line 197

a class.smtp.php tartalma:


196:    // Begin encrypted connection
197:    if(!stream_socket_enable_crypto($this->smtp_conn, true, STREAM_CRYPTO_METHOD_TLS_CLIENT)) {
198:      return false;
199:    }
200:
201:       return true;
202:    }

$mailer->Host = 'ssl://smtp.gmail.com';

simán csak smtp.gmail.com (ssl:// nélkül)?

Az 587-es fix SSL szokott lenni. TLS-t 465-on hasznalnak. Azzal, hogy kiszedted az ssl:// tagot, tls-sel probal kommunikalni, ami nem fog menni.

Nem ismerem tulzottan a php mailert, de en megneznem a kovetkezoket:

1) ssl:// es tls nelkuli config 587-en
2) ssl:// nelkuli es tls-es config 465-on

Nekem a php5-pear-mail -el simán megy a gmail-es smtp-s levélküldés. (pear-mime is kell hozzá)
Én nagyjából így csinálom.

"Windows 7, EasyPHP 5.3.0 (PHP 5.3.0)"

származási hely: http://easyphp.org
Apache verzió: 2.2.13

Nem forrásból fordítottam, az easyphp telepítője feltelepít és automatikusan konfigurál mindent. utána igény szerint szerkesztgetem az apache konfigfájlját és a php.ini-t.

Hello!

Még azért nem fog neked levelet küldeni ,mert a sendmail config fájlban meg kell neki adni hogy melyik szerveren keresztül levelezzen ami az esetedben a gmail lesz. De itt is jó ha nem a sima php_mail-t használod hanem ami benne van a PEAR csomagba mert úgy tudom hogy avval kényalmesebb az authentikált levélküldés,de ezt már elöttem többen megmutatták már.
Hülye kérdés de azért felteszem. Gondolom a saját gépeden akarsz fejleszteni valami oldalt. Nálad ez biztos tutin is fog menni ,de mi lesz ha kirakod egy külső tárhelyre? Annak is ilyen lesz a levélküldési mechanizmusa?
A sendmail konfigurálását meg a xampp könyvtárában lévő sendmail almappán található sendmail.ini fájlban lehet. Itt kapsz segítséget is hogy mit kell megadni.
Remélem előrébb leszel evvel.

Üdv.

a sandmail konfigfájljában megadtam az smtp szerver címét. Most nem tudom megmutatni a tartalmát, mivel most nem a saját gépemről netezek. A saját gépemen írom az alkalmazást és egy másik (szintén saját üzemeltetésü szerver a munkahelyemen (XP - XAMPP)(nagyon-nagyon-nagyon kicsi cég)) és az alkalmazás nem publikus, azaz csak a dolgozók használják bentről és otthonról (egyszerre 3-4 embernél több nem használja).

Amint saját gépről leszek, kiteszem a sendmail.ini tartalmát is.

-----

szerk.:

sendmail.php


# A GMail service example
account Gmail
tls on
tls_certcheck off
host smtp.gmail.com
from kuldo@hotmail.com
auth on
user kuldo@hotmail.com
password jelszo

itt hol kell megadni a port-ot?

megadtam a php.ini-ben:


; http://php.net/smtp-port
smtp_port = 465

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = postmaster@localhost

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

display_errors = On
error_reporting = E_ALL

A legvegso eset, hogy felcsapsz az XP-re egy IIS SMTP szervert, azt megadod neki localhostnak (a windowsos PHP kepes SMTP szerver adatokat fogadni, csak nem tud TLS-t meg ilyen hulyesegeket), az meg elvben ki fog tudni konnektalni a GMail szerverehez. Borzaszto gany megoldas, de C tervnek tokeletes.
--


Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.

Hello!

Szerintem kezdésnek azt nézd meg hogy van-e benne egyáltalán valamilyen smtp szerver. Ha nincs akkor szerintem nem fog menni a levélküldés. Persze itt még lehetőség van arra is hogy telepíted az IIS-t ha még ez nem történt meg és annak a levélküldőjét használod.
Azután meg ha nem ragazkodsz az easyphp-hez akkor egy próbára szerintem nézd meg a xampp-ot. Abban alapból benne van a sendmail és azt kb. három sor configolással rá lehet venni hogy küldjön neked levelet. Nem mellékesen abban biztosan benne van a PEAR csomag is.

Üdv.

Hello!

Első körben szerintem érdemes lenne azt is kipróbálni hogy egy hagyományos tls nélküli kapcsolattal kipróbáld az egész dolgot. Mondjuk a saját internetszolgáltatódon keresztül. Talán ott nem forszirozzák a titkosított kapcsolatot. Ha már ez működik akkor lenne érdemes tovább lépni egy szintet és nézni hogy melyik beállitás hozza el a megfelelő eredményt. Jelen pillanatban szerintem még az sem biztos hogy az smtp szerver beállításai jók,valamint hogy a php script is azt teszi amit kellene.
Üdv.

új fejlemények!
Feltelepítettem egy Free SMTP szerver nevű programot.
25-ös portra van beállítva alapértelmezetten.
Az SMTP szerver "Active connections" listájában meg is jelenik a címzett email címe, a de levél nem megy már el.

mail3.php

1: <?php
2: mail("cimzett@gmail.com", "Test Subject", "Test Message");
3:
4: ?>

Hibaüzenet:

Warning: mail() [function.mail]: SMTP server response: 550 Invalid recipient: cimzett@gmail.com in C:\xampp\htdocs\mail3.php on line 2

Fatal error: Maximum execution time of 60 seconds exceeded in C:\xampp\htdocs\mail3.php on line 4

php.ini

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

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = postmaster@localhost

; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
;sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

Hello!

Még mindig a gmail-en keresztül próbálsz levelezni? Mert ha igen akkor ez a hibaüzenet feltehetőleg azért van mert nem authentikálsz a gmail-hez. A sima mail fügvény meg erre nem alkalmas.

Üdv.

melyik verziót érdemes használnom és hol találhatok hozzá patch-et?

szerk.: vagy létezik ingyenes IIS SMTP szerver?

megnéztem, az apache betölti az SSL modult.
Az XAMPP 1.7.3 van nekem, PHP 5.3.1 -el.

találtam egy ilyet: http://izzaldeen.blogspot.com/2009/11/enable-open-ssl-in-xampp.html

Az XAMPP php.ini fájljában nem szerepelet a ";extension=php_openssl.dll" sor és az "ext" könyvtár sem tartalmazta a "php_openssl.dll" fájlt.
Letöltöttem egy windows-os PHP 5.3.1-et és kimásoltam belőle a "php_openssl.dll" -t. De az apache nem hajlandó indítani így a PHP modult, a következő hibaüzenetet dobja:

"PHP Startup: Unable to load dynamic library 'C:\xampp\php\ext\php_openssl.dll' - Az alkalmazást nem sikerült elindítani, mert a konfigurációja helytelen. Az alkalmazás újratelepítése megoldhatja a problémát."

szerk.: (H)up!
up!

szerk.:

-Hahó....! Van itt valaki? ... Ez már nem vicces.... :S