Skocz do zawartości
m3ntor

Problem z mail() (Phpmailer)

Polecane posty

Witam wszystkich!

 

Mam problem, męczę się z tym od dłuższego czasu i w sumie nie wiem o co chodzi...

 

Czy ktoś z Was ma może doświadczenie w wysyłce maili via skrypt? Ja myślałem, że zwykłe mail() załatwia sprawę i nie ma problemu... Bardzo się myliłem...

 

Przerobiłem mail() - słabo, dużo wiadomości nie dochodzi. Swiftmailer - lepiej, ale też bez szału, teraz męczę phpmailera z użyciem serwerów smtp (poczta.o2.pl i smtp.gmail.com).

 

I teraz tak:

wysyłając cokolwiek na gmaila - dochodzi, bez problemu. Ale próbuję wysłać coś testowego na o2 lub poczta.pl i jest lipa ogólnie. Wrzucam logi

Dec  1 00:32:31 vz14922 postfix/pickup[25256]: BC7321782B4A: uid=33 from=<www-data>
Dec  1 00:32:31 vz14922 postfix/cleanup[25281]: BC7321782B4A: message-id=<cc70b0a50f5c96cc4512591726c0b7ef@m3ntor.eu>
Dec  1 00:32:31 vz14922 postfix/qmgr[5744]: BC7321782B4A: from=<www-data@vz14922>, size=652, nrcpt=1 (queue active)
Dec  1 00:32:32 vz14922 postfix/smtp[25283]: BC7321782B4A: to=<xxx.xxx@poczta.pl>, relay=mail.poczta.pl[194.181.93.175]:25, delay=0.48, delays=0.01/0/0.18/0.29, dsn=5.0.0, status=bounced (host mail.poczta.pl[194.181.93.175] said: 550-Verification failed for <www-data@vz14922> 550-Unrouteable address 550 Sender verify failed (in reply to RCPT TO command))
Dec  1 00:32:32 vz14922 postfix/cleanup[25281]: 3F0AE1782B4B: message-id=<20141130233232.3F0AE1782B4B@vz14922>
Dec  1 00:32:32 vz14922 postfix/qmgr[5744]: 3F0AE1782B4B: from=<>, size=2630, nrcpt=1 (queue active)
Dec  1 00:32:32 vz14922 postfix/bounce[25284]: BC7321782B4A: sender non-delivery notification: 3F0AE1782B4B
Dec  1 00:32:32 vz14922 postfix/qmgr[5744]: BC7321782B4A: removed
Dec  1 00:32:32 vz14922 postfix/smtp[25283]: 3F0AE1782B4B: to=<www-data@vz14922>, relay=none, delay=0.01, delays=0/0/0/0, dsn=5.4.4, status=bounced (Host or domain name not found. Name service error for name=vz14922 type=A: Host not found)
Dec  1 00:32:32 vz14922 postfix/qmgr[5744]: 3F0AE1782B4B: removed
Dec  1 00:34:57 vz14922 postfix/pickup[25256]: 3ECCF1782B4A: uid=33 from=<www-data>
Dec  1 00:34:57 vz14922 postfix/cleanup[25294]: 3ECCF1782B4A: message-id=<9c99d98c9f171cb426d058a801fda120@m3ntor.eu>
Dec  1 00:34:57 vz14922 postfix/qmgr[5744]: 3ECCF1782B4A: from=<www-data@vz14922>, size=652, nrcpt=1 (queue active)
Dec  1 00:34:57 vz14922 postfix/smtp[25296]: 3ECCF1782B4A: to=<xxx.xxx@gmail.com>, relay=gmail-smtp-in.l.google.com[173.194.65.26]:25, delay=0.33, delays=0.01/0/0.13/0.18, dsn=2.0.0, status=sent (250 2.0.0 OK 1417390394 hj1si28649151wib.65 - gsmtp)
Dec  1 00:34:57 vz14922 postfix/qmgr[5744]: 3ECCF1782B4A: removed

Swoje dane wyxxxowałem. Używam jak widać postfixa (zamiast sendmaila), z tym też się pierniczyłem sporo czasu, bo skrypt mi mulił po zapuszczeniu mail() a nie zawsze cokolwiek udało mu się wypluć. Postfix jest dużo szybszy, ale jak wspomniałem, na gmaila mi wszystko ładnie przychodzi, na inne serwery już nie chce iść. Nadmienię, że nie ma znaczenia czy w phpmailerze użyję danych z gmaila czy o2.pl - na GMaila e-mail dojdzie, na o2.pl, poczta.pl - niekoniecznie.

 

Kod, którego używam jest bardzo prosty, zresztą skoro na gmaila dochodzą wiadomości, to znaczy, że wina nie leży po stronie tego co wydziergałem, a gdzieś coś leży po stronie poczta.pl... o2.pl...?

 

Czy ktoś zna jakąkolwiek bibliotekę, cokolwiek, co będzie dawało sto procent pewności, że e-mail wysłany z www dojdzie bez przeszkód? Skrypt zawsze wypluwa mi wynik pozytywny operacji wysyłania maila. Korzystam z VPSa na biznes-host.

 

Phpinfo: http://m3ntor.eu/phpinfo.php

 

Ponadto na home.pl skrypt też działa w podobny sposób, wypluwając albo i nie wypluwając maila (mam dostęp do dwóch kont - na jednym w ogóle nic nie wypluwa i zwraca error, że mail() wyłączone, na drugim z kolei działa podobnie jak na moim VPS). Support home.pl twierdzi, że aby wysłać maila z www, na pewno nie uda się go wysłać jak nie wpiszemy jako nadawcę, adresu e-mail hostowanego z home.pl (????).

 

Z góry dzięki za każdą wskazówkę, polecenie jakiejś biblioteki, cokolwiek.

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Kluczowy dla zrozumienia istoty Twojego problemu jest log:

Dec  1 00:32:31 vz14922 postfix/qmgr[5744]: BC7321782B4A: from=<www-data@vz14922>, size=652, nrcpt=1 (queue active)

W polu From masz adres www-data@vz14922 - przyznasz, że vz14922 to nie jest nazwa domenowa? A co robi serwer pocztowy onetu?
A no odpytuj sobie serwery DNS o domenę vz14922

Host or domain name not found. Name service error for name=vz14922 type=A: Host not found

O czym to świadczy? O nieprawidłowo skonfigurowanym serwerze poczty - zaznajom się z hasłami: hostname, spf, revDNS, dkim, rekord mx. Pozwoli Ci to na skonfigurowanie MTA tak, aby wiadomości docierały do większości odbiorców (pomijam aspekt greylist i blacklist oraz filtrów antyspamowy jak spamassasin).

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Z funkcją mail zazwyczaj są problemy, może użyj:

https://github.com/Synchro/PHPMailer

<?php
require 'PHPMailerAutoload.php';

$mail = new PHPMailer;

//$mail->SMTPDebug = 3;                               // Enable verbose debug output

$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'smtp1.example.com;smtp2.example.com';  // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = 'user@example.com';                 // SMTP username
$mail->Password = 'secret';                           // SMTP password
$mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587;                                    // TCP port to connect to

$mail->From = 'from@example.com';
$mail->FromName = 'Mailer';
$mail->addAddress('joe@example.net', 'Joe User');     // Add a recipient
$mail->addReplyTo('info@example.com', 'Information');

$mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
$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>';

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}
Edytowano przez Gość (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Witam ponownie,

 

Poradziłem sobie z tym problemem, wujek google mi pomógł (chociaż zajęło mi to mnóstwo czasu :/), po przeedytowaniu pliku main.cf jako config postfixa, maile zaczęły dochodzić jak należy.

 

@up używam swiftmailera, też niby z funkcji mail() ale wstępne testy dały 100% docieralności wiadomości. Co do phpmailera to próbowałem go używać na źle skonfigurowanym postfixie i także były problemy z wysyłką, ale same możliwości phpmailera są w porządku, przetestowałem je, ale sam swiftmailer spełnia wymagania.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×