Avatar billede jannek_ek Nybegynder
03. august 2006 - 20:04 Der er 17 kommentarer og
1 løsning

bruge mail() funktion via gmails mailserver

jeg er igang med at lave en hjemmeside, hvor jeg vil kunne sende en mail til dem der opretter en ny bruger. Men da jeg ikke har nogen mailserver på min computer, kunne jeg tænke mig at sende via gmails mailserver.

http://mail.google.com/support/bin/answer.py?answer=13287&query=smtp&topic=0&type=f&ctx=search

problemet er at jeg ikke har nogen anelse om hvordan jeg skal bære mig ad med det... Derfor håber jeg der er nogen her der kan hjælpe

jeg kører php 5.1.2 på en apache 2 server på windows xp
Avatar billede Slettet bruger
03. august 2006 - 20:10 #1
Du skal benytte dig af sockets til at åbne en forbindelse til serveren, frem for at anvende mail() funktionen.

Her er vist lidt du kan bruge:
http://email.about.com/cs/phpemailtips/qt/et021802.htm
Avatar billede Slettet bruger
03. august 2006 - 22:37 #2
Men det er meget lettere at sætte php til at benytte din normale udbyders SMTP-server.
Avatar billede jannek_ek Nybegynder
03. august 2006 - 23:01 #3
hvor stor er forskellen, jeg skal vel begge gange conecte til en server, og indtaste brugernavn og adgangskode.
jeg har også forsøgt at bruge min egen mailserver, men det kan jeg heller ikke finde ud af... jeg har installeret en argosoft mailserver, men jeg kan ikke få den til at sende mails.
jeg kan fint forbinde til den med telnet.
Avatar billede leif Seniormester
03. august 2006 - 23:02 #4
jannek_ek -> Hvad med at bruge den SMTP server som stillet tilrådighed ved din internet udbyder ?
Avatar billede jannek_ek Nybegynder
03. august 2006 - 23:14 #5
jo den kan jeg også bruge, men jeg har stadig ikke styr på det med password og brugernavn
Avatar billede leif Seniormester
04. august 2006 - 09:39 #6
Hvis du bruger din udbyders SMTP skal du da ikke angive brugernavn og password ?

Som philip skriver så kan du ikke bruge almindelig mail() men skal "manuelt" åbne forbindelsen til SMTP serveren smide korrekte kommandoer og lukke forbindelsen igen.
Avatar billede jannek_ek Nybegynder
04. august 2006 - 10:35 #7
jeg mener nu bestemt at tdc har adgangskode på...

men anyways

jeg får dette output når jeg prøver at tage forbindelse:
Fejl 1050 - Unable to find the socket transport "smtp" - did you forget to enable it when you configured PHP?

med den her stump kode:

$fo = fsockopen("smtp://smtp.mail.dk", 25, $errno, $errstr);
if (!$fo)
  echo "Fejl ".$errno." - ".$errstr;
else
  echo $fo;
Avatar billede jannek_ek Nybegynder
04. august 2006 - 10:37 #8
hov hvis jeg fjerne smtp:// får jeg
Resource id #6
Avatar billede fangel Nybegynder
04. august 2006 - 11:11 #9
Hvis du sidder på en windows-computer, så kan du sætte hvilken smtp-server PHP skal bruge - tvivler dog på at PHP kan finde ud af at snakke m. GMail da det kræver ssl-user-auth..

Derimod bør du sætte den til at bruge TDC's (hvis du altså har en tdc-internet forbindelse) - der er intet password på, men den tjekker om du kommer fra en tdc-linje, og hvis ikke afviser dig.

---

hvis du derimod sidder på en linux (tvivler) så skal du bare ændre på din MTA til at relaye igennem TDC..

---

Og mht at echo af en fsockopen giver "Resource id #n", så ja - det vil den altid gøre... Du skal så bruge fgets($fo) og fputs($fp, $input) for at læse og skrive til den åbnede socket.

-fangel
Avatar billede jannek_ek Nybegynder
04. august 2006 - 11:37 #10
så får jeg et output:
220 pfepc.post.tele.dk ESMTP

meeenn... jeg kommer ikke langt uden lidt mere kendskab til kommandoerne...

og ja jeg sidder på en windows xp, og bruger tdc
Avatar billede fangel Nybegynder
04. august 2006 - 11:44 #11
Ja, find din php.ini fil (ligger ofte i c:\windows\php.ini) og find den linje der hedder noget i retningen af "smtp = localhost" og ændre den til "smtp = smtp.mail.dk", genstart apache og bare brug mail() som man plejer

-fangel
Avatar billede jannek_ek Nybegynder
07. august 2006 - 02:39 #12
det nåede lige at virke, men tdc har skiftet til asmtp (et system hvor man skal registreres med bruger nr og adgangskode før man kan sende mails... men har fundet noget interesant hos gmail:
telnet smtp.gmail.com 587

og derfra henviser de til denne fil:
http://www.ietf.org/rfc/rfc2821.txt
Avatar billede fangel Nybegynder
07. august 2006 - 10:14 #13
Ja, simpel SMTP (der normalt kører fra port 25) er ganske nemt... En lille mock-up-dialog

< = ting servere sender = fgets($fo)
> = ting du sender = fputs($fo, $string)
<CR><LF> = "\r\n" = carriage return + line-feed = ny linje
<EOF> = "end-of-file" = serveren lukker forbindelsen

---
[connect til server]
< 220 [identifikation] <CR><LF>
> HELO [ident, fx "xyz"] <CR><LF>
< 250 [server-navn] <CR><LF>
> MAIL FROM: din@email.com <CR><LF>
< 250 OK <CR><LF>
> RCPT TO: din@modtager.com <CR><LF>
< 250 OK <CR><LF>
> DATA <CR><LF>
< 354 End data with "<CR><LF>.<CR><LF>" <CR><LF>
> Subject: Dit subject her <CR><LF>
> To: Din Modtager <din@modtager.dk> <CR><LF>
> From: Dig Selv <din@email.com> <CR><LF>
>
> Indholdet af din email her... <CR><LF>
> . <CR><LF>
< 250 Ok: queued as [queue-navn] <CR><LF>
> QUIT <CR><LF>
< 221 Bye <CR><LF>
<EOF>
---

Så skal man så lige tænke over encoding af tekst, fordi mails kun må indholdet 7-bit encodet tekst (aka us-ascii aka ingen æøå). Så skal man ud i at lave encoding af content og headers - derfor mange bruger en klasse ala phpMailer fordi den klare det for en. Man kan dog også sagtens lave det selv - jeg har gjort det to gange (en gang i php, en gang i java)

Problemet m. Google's SMTP er at den kræver login over SSL, så det skal man liiiiiige tænke en del over.. det ved jeg ik hvordan man efterligner...

---

Håber det gav lidt overblik...

-fangel
Avatar billede jannek_ek Nybegynder
07. august 2006 - 22:26 #14
det havde jeg fået læst mig til, men hele problemet ligger i ssl... det er noget med et certifikat, og jeg tvivler på jeg uden videre kan fikse den

men ellers har tdc jo skiftet til asmtp, hvor jeg skal logge på med password og brugernavn, men jeg har ikke kunne finde noget eksempel på hvordan det gøres over telnet
Avatar billede jannek_ek Nybegynder
09. august 2006 - 17:52 #15
nu har jeg fundet ud af at webspeed stqadig kører på smtp.mail.dk... og da jeg skiftede tilbage, virkede det igen... ved ikke hvad der gik galt før, men nu er den der :P
så kom med nogle svar
Avatar billede fangel Nybegynder
10. august 2006 - 18:16 #16
behøver ingen point..

-fangel
Avatar billede Slettet bruger
10. august 2006 - 22:58 #17
Jeg skal ikke have for den lille kommentar - at jeg havde ret er belønning nok ;-)
Avatar billede jannek_ek Nybegynder
03. oktober 2006 - 21:02 #18
ok så tror jeg jeg vil lukke mange tak for hjælpen anyways :P
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester