Kerth
30.07.2015, 14:00:55
Cześć,
próbuję na VPS używać klasy phpmailer. Dziwne, bo pomimo błędu i komunikacie o wysłanym e-mailu, nie otrzymuję go. Dlaczego tak się dzieje? Proszę spójrzcie na ten kod:
require_once('../phpmailer/class.phpmailer.php');
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded
$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch
$mail->IsSMTP(); // telling the class to use SMTP
try {
$mail = new PHPMailer();
$mail->IsHtml(false); //format wiadomości jeśli true=HTML, false=TXT
$mail->CharSet = "utf-8";
$mail->PluginDir = "/var/www/portfolio/phpmailer/";
$mail->From = "email"; // od
$mail->FromName = "email"; //nazwa
$mail->Host = "smtp.gmail.com"; //adres gmaila ;)
$mail->Port = 587; //port gmaila
$mail->Mailer = "smtp";
$mail->Username = "email";//nazwa admina na poczcie
$mail->Password = "Mojehasło";//hasło admina do konta SMTP
$mail->SMTPAuth = true;
$mail->SetLanguage("pl", "language/");
$mail->SetFrom(''.$email.'', ''.$topic.'');
$mail->Subject = ''.$topic.'';
$mail->AltBody = nl2br($message); // optional - MsgHTML will create an alternate automatically $mail->Body = nl2br('Wiadomość od: '.$name.' || Treść: '.$message.''); $mail->Send();
} catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer } catch (Exception $e) {
echo $e->getMessage(); //Boring error messages from anything else! }
Port 465 też nie działa. Pomożecie?
nospor
30.07.2015, 14:17:37
Jesli mail sie nie uda to o to:
$mail->Send();
zwroci false. A ty tego nie obslugujesz tylko jakis wyjatek. No chyba ze najnowszej wersji phpmailera zmienili to na wyjatek. zmienili?
Kerth
30.07.2015, 17:11:06
Po wywołaniu $mail->Send(); dałem tak:
Rzeczywiście zwraca mi false. Co tu może być nie tak? Co z tymi wyjątkami?
Byłby w stanie ktoś coś podpowiedzieć w jaki sposób podłączyć to pod gmail?
nospor
30.07.2015, 20:16:04
Obiekt $mail ma w sobie informacje o bledzie. Wyswietl go sobie, a moze sie rozjasni trochę.
Kerth
30.07.2015, 20:42:48
W jaki sposób mam wyświetlić błędy obiektu mail?
nie powoduje w tym przypadku, że otrzymam błędy.
nospor
30.07.2015, 20:52:53
Napisalem ze obiekt $mail czyli klasa PHPMailer zawiera w sobie wlasciwosc, ktora trzyma ostatni blad. Wyswietl to sobie. Jak nie wiesz ktora to, to zajrzyj do dokumentacji lub przykladow. Tam jest napisane a ja nie pamietam dokladnie jak to sie nazywalo. errorInfo czy jakos tak
Kerth
30.07.2015, 21:03:51
Skorzystałem z tego ErrorInfo. Otrzymałem takie coś:
SMTP -> ERROR: Password not accepted from server: 534-5.7.14 Please log in via your web browser and 534-5.7.14 then try again. 534-5.7.14 Learn more at 534 5.7.14 <a href="https://support.google.com/mail/answer/78754" target="_blank">https://support.google.com/mail/answer/78754</a> y1sm873923wib.7 - gsmtp
SMTP
-> ERROR: MAIL not accepted from server
: 530-5
.5
.1 Authentication Required
. Learn more at
530 5
.5
.1
<a href
="https://support.google.com/mail/answer/14257" target
="_blank">https
://support.google.com/mail/answer/14257</a> y1sm873923wib.7 - gsmtp The following From address failed
: email
@gmail
.com
: MAIL not accepted from server
,530,5
.5
.1 Authentication Required
. Learn more at
530 5
.5
.1
<a href
="https://support.google.com/mail/answer/14257" target
="_blank">https
://support.google.com/mail/answer/14257</a> y1sm873923wib.7 - gsmtpSMTP server error: 5.5.1 Authentication Required. Learn more at 530 5.5.1 <a href="https://support.google.com/mail/answer/14257" target="_blank">https://support.google.com/mail/answer/14257</a> y1sm873923wib.7 - gsmtp
Mailer Error
: The following From address failed
: email
@gmail
.com
: MAIL not accepted from server
,530,5
.5
.1 Authentication Required
. Learn more at
530 5
.5
.1
<a href
="https://support.google.com/mail/answer/14257" target
="_blank">https
://support.google.com/mail/answer/14257</a> y1sm873923wib.7 - gsmtpSMTP server error: 5.5.1 Authentication Required. Learn more at 530 5.5.1 <a href="https://support.google.com/mail/answer/14257" target="_blank">https://support.google.com/mail/answer/14257</a> y1sm873923wib.7 - gsmtp
SMTP server error: 5.5.1 Authentication Required. Learn more at 530 5.5.1 <a href="https://support.google.com/mail/answer/14257" target="_blank">https://support.google.com/mail/answer/14257</a> y1sm873923wib.7 - gsmtp
Co zrobić?
vokiel
31.07.2015, 08:02:12
Podać prawidłowe dane, masz przecież w błędach przyczyny:
- Password not accepted
- Authentication Required
W skrócie oznacza to, że żeby wysłać maile z Gmaila trzeba się autoryzować loginem i hasłem do poczty.
Wystarczy zajrzeć do przykładów na stronie PHPMailer'a:
http://phpmailer.worxware.com/?pg=examplebgmail http://phpmailer.worxware.com/index.php?pg=exampleagmail
Kerth
31.07.2015, 13:27:56
Ok. Z tym sobie poradziłem tylko mam teraz pytanie. Dlaczego wiadomości wysyłane przez klasę PHPMailer przychodzą w poczcie gmail do folderu SPAM?
I dlaczego przychodzą po 2 wiadomości? Tak to wygląda:

Kod:
<?php
class Message{
function SendMessage(){
$name = isset($_POST['name']) ?
$_POST['name'] : false; $email = isset($_POST['email']) ?
$_POST['email'] : false; $topic = isset($_POST['topic']) ?
$_POST['topic'] : false; $message = isset($_POST['message']) ?
$_POST['message'] : false;
if(isset($_POST['send_message'])){ include "../phpmailer/class.phpmailer.php"; // include the class name
$mail = new PHPMailer(); // create a new object
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Username = "myemail@gmail.com";
$mail->Password = "password";
$mail->AddAddress('myemail@gmail.com','myname');
$mail->CharSet = "UTF-8";
$mail->AltBody = nl2br($message); // optional - MsgHTML will create an alternate automatically $mail->Body = nl2br('Wiadomość od: '.$name.' || Treść: '.$message.'');
$mail->SetFrom($email);
$mail->Subject = ''.$topic.'';
//$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
//$mail->SMTPKeepAlive = true;
$mail->IsHTML(true);
if(!$mail->Send()){
echo "Mailer Error: " . $mail->ErrorInfo; }
else{
echo '<meta charset="utf-8"/>'; echo "<script>alert('Dziękuję za przesłanie wiadomości. Odpowiem na nią jak najszybciej.');</script>"; <script>
setTimeout(function(){
window.location.href = "../index.php";
},
100);
</script>
';
}
}
}
}
$send = new Message();
$send->SendMessage();
?>
Dlaczego otrzymuję wiadomości do SPAMu?
Proszę też nie patrzcie na stosowanie tu mojej wybitnej twórczości jaką jest pseudo obiektowość
nospor
31.07.2015, 13:34:40
To raczej nie ma zwiazku z PHPMailer tyko z kontem z ktorego wysylasz maile.
Kerth
31.07.2015, 13:43:35
To bez znaczenia jaki adres podam przy wysyłaniu e-mail i tak zawsze wiadomość trafia do SPAMu. Wiesz może jak temu zaradzić?
nospor
31.07.2015, 14:08:32
No na pewno nie podales mojego

A mojego nigdy do spamu nie trafialo.
Kerth
31.07.2015, 14:29:25
Nie chcę schodzić na bezsensowną polemikę ale znalazłem Twój e-mail na Twojej stronie, wpisałem i uwierz mi, że również wiadomości idą do SPAMu
kapslokk
31.07.2015, 14:33:43
Przecież nie wysyłasz maila z jego skrzynki, tylko dajesz nagłówek, który mówi, że to jego mail. Dlatego możesz trafiać do spamu. Spróbuj wysłać maila z nagłówkiem takim jak jego faktyczny adres.
Kerth
31.07.2015, 14:38:47
Tak też robię ale pomimo tego, wiadomości wysyłane przez formularz kontaktowy, korzystające z tej klasy ZAWSZE trafiają do SPAMu. Nie ważne jaki podam adres email w nagłówku. Dla potwierdzenia:
kapslokk
31.07.2015, 14:41:24
Jeżeli używasz do wysyłania skrzynki myemail@gmail.com to w nagłówku nadawce ustaw jako myemail@gmail.com, a nie nospor@gmail.com czy cokolwiek innego.
Wyobraź sobie sytuacje:
wysyłasz maila z nagłówkiem adresu bill@microsoft.com i piszesz :
"Cześć Halina, zapomniałem sobie przelać kasy na moje drugie konto, wyślij mi stówke a oddam dwie."
I to nie trafia do spamu... Bez sensu, prawda?
Kerth
31.07.2015, 14:49:41
Nie rozumiesz. W:
$mail->SetFrom($email);
pobieram przesłany adres e-mail z pola "Adres email" w formularzu kontaktowym. Dodam, że nawet jeśli w formularzu podam nadawcę jako siebie i wysyłam również do siebie to wiadomość także opatrzona jest jako spam.
kapslokk
31.07.2015, 14:51:01
A czy jeśli zalogujesz się normalnie na tą skrzynkę, i wyślesz do siebie maila to też trafia do spamu? Czy nie?
Kerth
31.07.2015, 15:17:53
Wtedy nie trafia do spamu. Wiadomośc otrzymuję wtedy normalnie.
Skie
31.07.2015, 16:47:35
Wiadomośc trafia do spamu prawdopodobnie dlatego, że wysyłasz w tym samym czasie dwie identyczne wiadomości z tego samego konta do tego samego innego. Jak tego nie traktować jako spam?
Wiadomość z kolei jest wysyłana dwa razy dlatego, że wywołujesz $mail->Send() dwa razy - raz w linii 35 i raz w 49.
Zmień warunek z linii 35 na
if (($status = $mail->Send()) === false)
i var_dump z linii 49 na
Powinno działać dobrze.
Kerth
31.07.2015, 17:05:59
To prawda, teraz otrzymuję tylko jedną wiadomość aczkolwiek nawal e-mail trafia do SPAMu.
Skie
31.07.2015, 17:43:39
W takim razie rozwiązania musisz poszukać w google, najlepiej na stacku. Tutaj masz podobny temat :
http://stackoverflow.com/questions/1630296...er-how-to-avoid wraz z wielostopiowym postępowaniem co zrobić by wiadomość nie trafiała do spamu. Zwróć także uwagę na punkt 11. "Accept that there is no, and never will be an "exact solution on this issue". Ever."
Jednym słowem przeznacz sobie pewną ilość czasu na rozwiązanie tego problemu - jak się nie uda, to trudno. Po coś istnieją te wszystkie uwagi w systemach resjetracyjnych by sprawdzać też kontener SPAM jak mail długo nie dochodzi.
Pamiętaj również, że to zależy od serwera, do którego wysyłasz wiadomość. Na jednym serwerze będzie to SPAM, na innym już nie. Ze swojego doświadczenia jedynie co Ci mogę powiedzieć, to to, że wysyłanie maili automatycznie w dużej ilości przez gmaila to zły pomysł. Ta skrzynka się nie sprawdza do tego.
Kerth
31.07.2015, 17:50:48
Mam 2 poczty - na gmail i na onecie. Gdy jako nadawcę w formularzu podam tą z onetu to w gmailu trafia wiadomość do SPAMu. Mogę jednak na nią odpowiedzieć. Gdy odpowiem to wiadomość dochodzi do tej drugiej skrzynki i tam wiadomość traktowana jest już normalnie. Dziwne. to jest strasznie.
Skie
31.07.2015, 18:20:31
Sprawdź najlepiej jakimś managerem poczty, który używa SMTP czy tam też się to dzieje czy nie. Testy przez przeglądarkę, że ręcznie wyślesz maile nic nie znaczą w tym przypadku.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.