Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Prosta funkcja lub skrypt do wysyłania maili
Forum PHP.pl > Forum > Przedszkole
-bigart-
Witam,

musze zrobić wysyłanie newsów ze stronki.

Czyli komus się podoba news i chce o tym powiadomić znajomego, klika na ikonke wpisuje e-mail adresata i podpis i wysyła.

Macie może coś prostego lub gotowego ?
Mlodycompany
  1. <?php
  2. $to = 'osoba@example.com';
  3. $subject = 'temat';
  4. $message = 'witam';
  5. $headers = 'From: webmaster@example.com' . "r\n" .
  6.  
  7. mail($to, $subject, $message, $headers);
  8. ?>
JoShiMa
Nagłówków to powinno być trochę więcej. Na forum co jakis czas przewija się temat. Szczegóły możesz znaleźć choćby tu:
http://forum.php.pl/index.php?showtopic=95999
bigart
dzieki za pomoc, ale tej funkcji uzyc sie okazalo nie moge ..

znasz moze jakąś inną ?
Mlodycompany
dlaczego nie mozesz uzyc tej funkcji? do wysylania mail jest chyba tylko ta
bigart
  1. <?php
  2. include_once('funkcje.php');
  3. $polaczenie=polacz("baza");
  4. if (!$polaczenie)
  5.  
  6. {
  7. echo "brak";
  8. }
  9. $zapytanie=mssql_query("select * from Wiadomosci where id=".$_GET[id],$polaczenie);
  10. $wynik=mssql_fetch_assoc($zapytanie);
  11.  
  12.  
  13.  
  14. if (isset($_POST['submit']))
  15. {
  16.  
  17.  
  18. $wynik2['data']=strtotime($wynik2['data']);
  19. $wynik2['data']=date('d-m-Y',$wynik2['data']);
  20. $wynik2['tytul'] = strtr($wynik2['tytul'], "xA5x8Cx8FxB9x9Cx9F","xA1xA6xACxB1xB6xBC");
  21. $wynik2['skrot'] = strtr($wynik2['skrot'], "xA5x8Cx8FxB9x9Cx9F","xA1xA6xACxB1xB6xBC");
  22. $wynik2['tresc'] = strtr($wynik2['tresc'], "xA5x8Cx8FxB9x9Cx9F","xA1xA6xACxB1xB6xBC");
  23.  
  24. $do = $_POST['email'];
  25. $temat = 'Inormacja';
  26.  
  27. $tytul=$wynik['tytul'];
  28. $tresc=$wynik['tresc'];
  29. $email=$_POST['youremail'];
  30.  
  31. $headers = 'From: poczta@testowo.pl' . "r\n" .
  32. 'Reply-To: poczta@testowo.pl' . "r\n" .
  33. 'X-Mailer: PHP/' . phpversion();
  34.  
  35. mail($do, $temat, $tytul, $tresc);
  36.  
  37.  
  38.  
  39.  
  40. }
  41. ?>
  42. <html>
  43. <script language="javascript" type="text/javascript">
  44. function submitbutton() {
  45. var form = document.frontendForm;
  46. // do field validation
  47. if (form.email.value == "" || form.youremail.value == "") {
  48. alert( 'Wpisz poprawnie swój adres email oraz adres odbiorcy.' );
  49. return false;
  50. }
  51. return true;
  52. }
  53. </script>
  54.  
  55. <form action="mail.php?id=<?php echo $_GET['id']?>" method="post" name="frontendForm" onSubmit="return submitbutton();">
  56. <table cellspacing="0" cellpadding="0" border="0">
  57. <tr>
  58. <td colspan="2">
  59. Wy&para;lij znajomemu </td>
  60. </tr>
  61. <tr>
  62. <td colspan="2">&nbsp;</td>
  63. </tr>
  64. <tr>
  65. <td width="130">
  66. Adres e-mail znajomego: </td>
  67. <td>
  68. <input type="text" name="email" size="25" />
  69. </td>
  70. </tr>
  71. <tr>
  72. <td height="27">
  73. Twoje imię i nazwisko: </td>
  74. <td>
  75. <input type="text" name="yourname" size="25" />
  76. </td>
  77. </tr>
  78. <tr>
  79. <td>
  80. Twój e-mail: </td>
  81. <td>
  82. <input type="text" name="youremail" size="25" />
  83. </td>
  84. </tr>
  85. <tr>
  86. <td>
  87.  Temat wiadomo&para;ci: </td>
  88. <td>
  89. <input type="text" name="temat" maxlength="100" size="40" />
  90. </td>
  91. </tr>
  92. <tr>
  93. <td colspan="2">&nbsp;</td>
  94. </tr>
  95. <tr>
  96. <td colspan="2">
  97. <input type="submit" name="submit" class="button" value="Wy&para;lij e-mail" />
  98. &nbsp;&nbsp;
  99. <input type="button" name="cancel" value="Anuluj" class="button" onclick="window.close();" />
  100. </td>
  101. </tr>
  102. </table>
  103. <?php
  104.  
  105.  
  106. ?>
  107. <!--<input type="hidden" name="id" value="1554" />
  108. <input type="hidden" name="8b2fcf7f298e6436ea8fb23430d4e418" value="1" />-->
  109.  
  110. </form>
  111. </body>
  112. </html>


jak robie wyslij pojawia sie tylko ze strona sieci web nie moze byc wyswietlona

lub

PHP Warning: mail() [function.mail]: SMTP server response: 550 5.7.1 Unable to relay for adres-email@o2.pl in C:\Inetpub\Strona\mail.php on line 37

co robie zle ?
Mlodycompany
korzystasz z mysql czy mssql?
bigart
korzystam z mssqla

jak wpisuje swojego maila to wywala teraz błąd

PHP Warning: mail() [function.mail]: SMTP server response: 550 5.7.1 Unable to relay for bigart@o2.pl in C:\Inetpub\Strona\mail.php on line 37

coś z samą funkcja ...

serwer przez który jest to wysyłane nie jest open relay
JoShiMa
Bo formularz przekierowuje do skryptu mail.php masz taki skrypt u siebie?
  1. <form action="mail.php...
tiraeth
JoShiMa, pomyśl zanim coś napiszesz!

bigart, sprawa wygląda następująco - coś z serwerem SMTP smile.gif A nawet się zapytam, czy i jaki serwer SMTP masz na Windowsie (wnioskują po C:/...) ?
bigart
calosc kodu co wkleilem zawiera sie w pliku mail.php

serwer pocztowy postawiony jest na exchange 2003

chcialem zaznaczyc ze wenatrz sieci na mojej domenie imie.nazwiko@mojadomena.pl bez problemu ta funkcja dziala

jak wysylam na zewnątrz jest klops ...

bardzo wazna jest informacja ze serwer nie jest open relay !

dlatego wczesniej pisałem ze raczej nie moge korzystac z tej funkcji sad.gif
piotrooo89
może to Ci pomoże http://drupal.org/node/30079
tiraeth
Nie jestem pewien, ale wydaje mi się, że to pomoże:

Exchange 2003 domyślnie ma closed relay dla użytkowników, którzy nie dokonali autentykacji przy logowaniu się do serwera SMTP. Krótko - ustaw zmienne smtp_user itd. w ini_set() - więcej o tym poczytasz w mail" title="Zobacz w manualu PHP" target="_manual smile.gif
bigart
Cytat
Krótko - ustaw zmienne smtp_user itd. w ini_set()


gdzie dokladnie mam to ustawic...

jestem generalnie poczatkujacy w php i sie gubie .. mozesz cos przyblizyc ?
tiraeth
W kodzie PHP, tuż przed wysłaniem mail() smile.gif Pamiętaj, żeby prócz smtp_user też hasło ustawić. Ewentualnie skorzystaj z jakiejś funkcji bądź klasy wysyłającej maile przez fsockopen" title="Zobacz w manualu PHP" target="_manual.
bigart
a mozesz napisac przykladowy kod jak to ustawic ?
bo sama funkcja mail chyba nie ma takiego czegos jak ustawienie uzytkownika i hasla..

ustawienia do tej funkcji sa w php.ini z tego co pamietam

znalazłem coś takiego

  1. <?php
  2. // connect to MTA server 'smtp.gmail.com' port '465' via SSL ('tls' encryption)
  3. // with authentication: 'username@gmail.com' and 'password'
  4. // set the connection timeout to 10 seconds, the name of your
  5. // host 'localhost' and the authentication method to 'plain'
  6. // make sure you have OpenSSL module (extension) enable on your php configuration
  7. $c = $m->Connect('smtp.gmail.com', 465, 'username@gmail.com', 'password', 
  8. 'tls', 10, 'localhost', null, 'plain') or die(print_r($m->Result));
  9. // connect to MTA server 'smtp.gmail.com' port '465' via SSL ('tls' encryption)
  10. // with authentication: 'username@gmail.com' and 'password'
  11. // set the connection timeout to 10 seconds, the name of your
  12. // host 'localhost' and the authentication method to 'plain'
  13. // make sure you have OpenSSL module (extension) enable on your php configuration
  14. $c = $m->Connect('smtp.gmail.com', 465, 'username@gmail.com', 'password', 
  15. 'tls', 10, 'localhost', null, 'plain') or die(print_r($m->Result));
  16. ?>


i u mnie zrobiłem coś takiego

smtp mam na porcie 25
uzytkownik to adres e-mail i hasło

(z tym ze nie wiem czy dobrze zrobiłem bo w ustawieniach i konfiguracji poczty np w outlooku trzeba zaznaczyc we wlasciwosciach serwer smtp wymaga uwierzytelniania)

  1. <?php
  2. $c=Connect('smtp.mojadomena.pl', 25, 'poczta@mojadomena.pl', 'haslo', 10, 192.168.0.1, null) or die;
  3.  
  4. mail($do, $temat, $tytul, $tresc, $headers);
  5. ?>


tylko nie wiem za bardzo jak wywolac to polaczenie w momencie kiedy funkcja mail jest uruchamiana
tiraeth
Cytat
ustawienia do tej funkcji sa w php.ini z tego co pamietam

Tak, i do tych ustawień używa się funkcji ini_set" title="Zobacz w manualu PHP" target="_manual smile.gif

  1. <?php
  2. ini_set("smtp_user", "user@domain.com");
  3. ini_set("smtp_password", "you_password");
  4.  
  5. mail($recipent, $title, $body, $headers);
  6. ?>


Zwróć też uwagę, że niepotrzebnie dwa razy przekazujesz temat/tytuł do funkcji mail!

Użyj tego: http://www.phpclasses.org/browse/package/2958.html (zlekceważ plik socktest.php - wystarczą smtp.php, sock.php i przykład z smtptest.php) - Aha, musisz być zarejestrowany w phpclasses.org smile.gif

Pomogłem? Kliknij pomógł smile.gif Dzięki temu inni będą wiedzieć, że ten temat zawiera post, w którym jest działające rozwiązanie.
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.