FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Nykomling
|
Hej! Jag undrar hur man helt enkelt skulle kunna vidarebefordra ett mail med tillhörande bifogade filer mm till en annan mailadress via PHP. Anledningen till varför jag måste göra detta via PHP är att jag vill att användarna ska själv kunna ändra vilken mail de ska vidarebefordra till, och webbhotellet tillåter inte att direkt manipulera mail-inställningarna via PHP. Men däremot kan jag vidarebefordra alla mail till en PHP fil som jag sedan tänkt skulle kolla vilka inställningar användaren gjort och efter det vidarebefordra till rätt adress.
Hittills har jag kommit fram till denna kod enl. http://evolt.org/incoming_mail_and_p...s_per_page=50: Kod:
<?php // read from stdin $fd = fopen("php://stdin", "r"); $email = ""; while (!feof($fd)) { $email .= fread($fd, 1024); } fclose($fd); // handle email $lines = explode("\n", $email); // empty vars $from = ""; $subject = ""; $headers = ""; $message = ""; $splittingheaders = true; for ($i=0; $i<count($lines); $i++) { if ($splittingheaders) { // this is a header $headers .= $lines[$i]."\n"; // look out for special headers if (preg_match("/^Subject: (.*)/", $lines[$i], $matches)) { $subject = $matches[1]; } if (preg_match("/^From: (.*)/", $lines[$i], $matches)) { $from = $matches[1]; } } else { // e-mail body $message .= $lines[$i]."\n"; } if (trim($lines[$i])=="") { // empty line, header section has ended $splittingheaders = false; } } $to = "[email protected]"; mail($to, $subject, $message ,"From: $from"); ?> ![]() Citat:
|
||
![]() |
![]() |
![]() |
#2 | |||
|
||||
Bara ett inlägg till!
|
Ta med fler SMTP-headers! Det ultimata är att du tar med alla headers förutom To och Return-Path, och möjligen måste du även droppa alla Recieved-headers (eller lägga till en egen!).
Det är nämligen huvudet som berättar att det är ett brev av multipart-typ, vilken som är den första body-delen etc. |
|||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Nykomling
|
okej hur menar du jag ska göra då?
om jag tar med alla headers i meddelandet, alltså (mail($to, $subject, $headers.$message ,"From: $from") ![]() blir detta vad som skickas: Citat:
|
||
![]() |
![]() |
![]() |
#4 | |||
|
||||
Mycket flitig postare
|
Två rekommendationer: för att lösa ditt specifika problem, läs på om SMTP-protokollet och hur mail() används. Fundera dessutom på att istället använda PHPMailer för fler funktioner.
Den andra rekommendationen är att tänka om hur du löser det här. Om detta ska användas i någon som helst skala så blir det lätt ohållbart, du kan inte skriva en SMTP-server i PHP som är bättre än någon av de existerande, riktiga servrarna. Jag tror dessutom att ditt webbhotell lätt kan bli griniga då du definitivt kan bli spamklassad fort med ett sådant här beteende. Fundera istället på att skaffa en egen server eller VPS med en eller ett par egna IP-adresser och installera en riktig mejlserver som klarar av att vidarebefordra mejl och att använda en databas som datastore. Om du inte själv har kompetensen för att installera detta på rätt sätt så behöver det inte kosta många tusen att låta en konsult göra det, och du kommer att få ett oändligt mer stabilt och säkert upplägg. |
|||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Klarade millennium-buggen
|
Dom headers du behöver är:
Citat:
Varken mer, varken mindre. |
||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Nykomling
|
Tack för alla svar
![]() |
||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Klarade millennium-buggen
|
Citat:
![]() |
||
![]() |
![]() |
Svara |
|
|