$from = "[email protected]";
$headers = "From:" . $from;
echo mail ("[email protected]" ,"testmailfunction" , "Oj",$headers);
Mam problem z wysyłaniem e-maili w PHP. I pojawia się błąd: SMTP server response: 530 SMTP authentication is required
.
Miałem wrażenie, że w celu weryfikacji można wysyłać emaile bez SMTP. Wiem, że prawdopodobnie ta poczta zostanie odfiltrowana, ale teraz to nie ma znaczenia.
[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 = [email protected]
To jest konfiguracja w php.ini
pliku. Jak skonfigurować SMTP? Czy istnieją serwery SMTP, które nie wymagają weryfikacji lub czy muszę samodzielnie skonfigurować serwer?
mail()
funkcji PHP .'phpmailer_init'
haka akcji. To wygodny sposób na skonfigurowanie WordPressa dla poczty SMTP lub Amazon SES (który obsługuje połączenia SMTP).<?php ini_set("SMTP", "aspmx.l.google.com"); ini_set("sendmail_from", "[email protected]"); $message = "The mail message was sent with the following mail setting:\r\nSMTP = aspmx.l.google.com\r\nsmtp_port = 25\r\nsendmail_from = [email protected]"; $headers = "From: [email protected]"; mail("[email protected]", "Testing", $message, $headers); echo "Check your email now....<BR/>"; ?>
lub, aby uzyskać więcej informacji, czytaj dalej .
źródło
php mail()
problemy z funkcją GoDaddy - 2017 - nie powinno być konieczne pobieranie PHPMailera ani innych zasobów strony trzeciej - dziękiDla użytkowników Uniksa, mail () w rzeczywistości używa polecenia Sendmail do wysyłania wiadomości e-mail. Zamiast modyfikować aplikację, możesz zmienić środowisko. msmtp to klient SMTP ze składnią CLI kompatybilną z Sendmail, co oznacza, że może być używany zamiast Sendmaila. Wymaga tylko niewielkiej zmiany w pliku php.ini.
sendmail_path = "/usr/bin/msmtp -C /path/to/your/config -t"
Wtedy nawet skromna funkcja mail () może działać z dobrocią SMTP. Jest to bardzo przydatne, jeśli próbujesz połączyć istniejącą aplikację z usługami pocztowymi, takimi jak sendgrid lub mandrill bez modyfikowania aplikacji.
źródło
mail()
do czegoś, co obsługuje SMTP. Dziękuję Ci!Oto sposób na zrobienie tego z PHP PEAR
// Pear Mail Library require_once "Mail.php"; $from = '<[email protected]>'; //change this to your email address $to = '<[email protected]>'; // change to address $subject = 'Insert subject here'; // subject of mail $body = "Hello world! this is the content of the email"; //content of mail $headers = array( 'From' => $from, 'To' => $to, 'Subject' => $subject ); $smtp = Mail::factory('smtp', array( 'host' => 'ssl://smtp.gmail.com', 'port' => '465', 'auth' => true, 'username' => '[email protected]', //your gmail account 'password' => 'snip' // your password )); // Send the mail $mail = $smtp->send($to, $headers, $body); //check mail sent or not if (PEAR::isError($mail)) { echo '<p>'.$mail->getMessage().'</p>'; } else { echo '<p>Message successfully sent!</p>'; }
Jeśli korzystasz z Gmaila SMTP, pamiętaj, aby włączyć SMTP na swoim koncie Gmail w ustawieniach
EDYCJA: Jeśli nie możesz znaleźć Mail.php na debianie / ubuntu, możesz zainstalować php-pear za pomocą
Następnie zainstaluj rozszerzenie poczty:
Wtedy powinieneś móc go załadować, po prostu
require_once "Mail.php"
inaczej znajduje się tutaj:/usr/share/php/Mail.php
źródło
Problem w tym, że
mail()
funkcja PHP ma bardzo ograniczoną funkcjonalność. Istnieje kilka sposobów wysyłania poczty z PHP.mail()
używa serwera SMTP w twoim systemie. Istnieją co najmniej dwa serwery można używać w systemie Windows: hMailServer i xmail . Spędziłem kilka godzin na ich konfigurowaniu i ustawianiu. Pierwsza jest moim zdaniem prostsza. W tej chwili hMailServer działa na Windows 7 x64.mail()
używa serwera SMTP na maszynie zdalnej lub wirtualnej z systemem Linux. Oczywiście prawdziwa usługa pocztowa, taka jak Gmail, nie pozwala na bezpośrednie połączenie bez żadnych danych uwierzytelniających ani kluczy. Możesz skonfigurować maszynę wirtualną lub użyć maszyny znajdującej się w Twojej sieci LAN. Większość dystrybucji Linuksa ma serwer pocztowy po wyjęciu z pudełka. Skonfiguruj to i baw się dobrze. Używam domyślnego exim4 na Debianie 7, który nasłuchuje interfejsu LAN.Bez względu na to, jaki wybór wybierzesz, polecam użycie warstwy abstrakcji. Możesz używać biblioteki PHP na swojej maszynie deweloperskiej z systemem Windows i po prostu
mail()
działać na maszynie produkcyjnej z systemem Linux. Warstwa abstrakcji umożliwia wymianę sterowników poczty w zależności od systemu, w którym działa aplikacja. UtwórzMyMailer
klasę abstrakcyjną lub interfejs zsend()
metodą abstrakcyjną . Dziedzicz dwie klasyMyPhpMailer
iMySwiftMailer
. Implementujsend()
metodę w odpowiedni sposób.źródło
Istnieją serwery SMTP, które działają bez uwierzytelniania, ale jeśli serwer wymaga uwierzytelnienia, nie można tego obejść.
Wbudowane funkcje pocztowe PHP są bardzo ograniczone - określenie serwera SMTP jest możliwe tylko w systemie Windows. Na * nix
mail()
użyje plików binarnych systemu operacyjnego.Jeśli chcesz wysłać wiadomość e-mail na dowolny serwer SMTP w sieci, rozważ użycie biblioteki takiej jak SwiftMailer . Umożliwi to na przykład korzystanie z serwerów wychodzących Google Mail.
źródło
W przypadkach, gdy hostujesz witrynę Wordpress w systemie Linux i masz dostęp do serwera, możesz zaoszczędzić sobie bólu głowy, instalując msmtp, który umożliwia wysyłanie przez smtp ze standardowej funkcji php mail (). msmtp to prostsza alternatywa dla Postfix, która wymaga nieco więcej konfiguracji.
Oto kroki:
Zainstaluj msmtp
Utwórz nowy plik konfiguracyjny:
... z następującymi informacjami o konfiguracji:
# Set defaults. defaults # Enable or disable TLS/SSL encryption. tls on tls_starttls on tls_trust_file /etc/ssl/certs/ca-certificates.crt # Set up a default account's settings. account default host <smtp.example.net> port 587 auth on user <[email protected]> password <password> from <[email protected]> syslog LOG_MAIL
Musisz zastąpić dane konfiguracyjne reprezentowane przez wszystko w „<” i „>” (włącznie, usuń je). W przypadku hosta / nazwy użytkownika / hasła użyj zwykłych poświadczeń do wysyłania poczty za pośrednictwem dostawcy poczty.
Powiedz PHP, aby go użył
Dodaj tę pojedynczą linię:
Pełną dokumentację można znaleźć tutaj:
https://marlam.de/msmtp/
źródło
W innym podejściu możesz wziąć taki plik:
From: Sunday <[email protected]> To: Monday <[email protected]> Subject: Day Tuesday Wednesday
i wyślij w ten sposób:
<?php $a1 = ['[email protected]']; $r1 = fopen('a.txt', 'r'); $r2 = curl_init('smtps://smtp.gmail.com'); curl_setopt($r2, CURLOPT_MAIL_RCPT, $a1); curl_setopt($r2, CURLOPT_NETRC, true); curl_setopt($r2, CURLOPT_READDATA, $r1); curl_setopt($r2, CURLOPT_UPLOAD, true); curl_exec($r2);
https://php.net/function.curl-setopt
źródło