Kom ihåg mig?
Home Menu

Menu


Email-forwarding via PHP fil

Ämnesverktyg Visningsalternativ
Oläst 2008-08-29, 17:17 #1
simphax simphax är inte uppkopplad
Nykomling
 
Reg.datum: Mar 2007
Inlägg: 30
simphax simphax är inte uppkopplad
Nykomling
 
Reg.datum: Mar 2007
Inlägg: 30
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");
?>
Men denna kod ger ett mail innehållande liknandeavsändare och rubrik är korrekt)
Citat:
------=_Part_5023_621368.1220018446891
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

test

--
// - Simon Nilsson -

------=_Part_5023_621368.1220018446891
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

<div dir="ltr">fdhjfdsghjkgfdsbdf gsdc<br clear="all">
--
// - Simon Nilsson -

</div>

------=_Part_5023_621368.1220018446891--
Och det är inte resultatet jag vill ha, utan jag vill ha med formatering och bilder och charset mm
simphax är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-08-29, 17:24 #2
emilvs avatar
emilv emilv är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Feb 2004
Inlägg: 1 564
emilv emilv är inte uppkopplad
Bara ett inlägg till!
emilvs avatar
 
Reg.datum: Feb 2004
Inlägg: 1 564
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.
emilv är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-08-29, 17:33 #3
simphax simphax är inte uppkopplad
Nykomling
 
Reg.datum: Mar 2007
Inlägg: 30
simphax simphax är inte uppkopplad
Nykomling
 
Reg.datum: Mar 2007
Inlägg: 30
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:
From [email protected] Fri Aug 29 17:27:55 2008
Received: from qw-out-1920.google.com ([74.125.92.148])
* * * by majestix.kontrollpanelen.se with esmtp (Exim 4.62)
* * * (envelope-from <[email protected]>)
* * * id 1KZ5tD-000Gxb-Nl
* * * for [email protected]; Fri, 29 Aug 2008 17:27:55 +0200
Received: by qw-out-1920.google.com with SMTP id 9so85968qwj.28
* * * for <[email protected]>; Fri, 29 Aug 2008 08:27:53 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
* * * d=gmail.com; s=gamma;
* * * h=domainkey-signature:received:received:message-id:date:from:to
* * * *:subject:mime-version:content-type;
* * * bh=1ARjS8MYHzEbAlk03uNOj3e6WRtm69Dbv4wws8ry7wA=;
* * * b=Bn+IOOEwcKopJPtvAfUsfIHFOLwYrObl+dc6MANwQYIcQf+Z tcQGO3hUqp9Klqj+mj
* * * *VpPKEUThJrucjsG5AkpNKpfttYcrDD9kDij+x6Oq9RRNdJ6vS iLy0vkVHm7Qtfz8Ez8D
* * * *re475XNn2KZuco9l/oEPP9VZjVE5SZK/M6H9E=
DomainKey-Signature: a=rsa-sha1; c=nofws;
* * * d=gmail.com; s=gamma;
* * * h=message-id:date:from:to:subject:mime-version:content-type;
* * * b=hPO/ku2Lxl65xgIvFhfElbHYNlA+JYsEXiBcWujfhI5BylgAXOREEO nV0hATM3oHYj
* * * *EqwmgvlWO+7e762RWAg0M6hr/UVrHWD1XJpiLHiXkHvagMglerBdZCLtBjzMBjHe+N7F
* * * *VVZvlUAg9zbGahEjgOpW9a2pZHbn2uAdJXDVk=
Received: by 10.214.181.19 with SMTP id d19mr3832388qaf.13.1220023673023;
* * * Fri, 29 Aug 2008 08:27:53 -0700 (PDT)
Received: by 10.70.15.3 with HTTP; Fri, 29 Aug 2008 08:27:52 -0700 (PDT)
Message-ID: <493b5e6a0808290827g524cd33ch13e049b6889e12f9@mail .gmail.com>
Date: Fri, 29 Aug 2008 17:27:52 +0200
From: "Simon Nilsson" <[email protected]>
To: [email protected]
Subject: =?ISO-8859-1?Q?NUD=C5?=
MIME-Version: 1.0
Content-Type: multipart/alternative;
* * * boundary="----=_Part_5975_14467733.1220023673002"

------=_Part_5975_14467733.1220023673002
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

JIPP

--
// - Simon Nilsson -

------=_Part_5975_14467733.1220023673002
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

<div dir="ltr"><span class="Apple-style-span" style="font-weight: bold;">JIPP</span><br clear="all">
--
// - Simon Nilsson -

</div>

------=_Part_5975_14467733.1220023673002--
Och det ser ju bara ännu värre ut ... ? :S
simphax är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-08-29, 17:41 #4
MMCs avatar
MMC MMC är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jan 2008
Inlägg: 560
MMC MMC är inte uppkopplad
Mycket flitig postare
MMCs avatar
 
Reg.datum: Jan 2008
Inlägg: 560
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.
MMC är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-08-29, 22:32 #5
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Dom headers du behöver är:

Citat:
From: "Simon Nilsson" <[email protected]>
To: [email protected]
Subject: =?ISO-8859-1?Q?NUD=C5?=
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----=_Part_5975_14467733.1220023673002"
Dom andra är headers som mailservern lägger till.


Varken mer, varken mindre.
Jonas är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-08-30, 21:20 #6
simphax simphax är inte uppkopplad
Nykomling
 
Reg.datum: Mar 2007
Inlägg: 30
simphax simphax är inte uppkopplad
Nykomling
 
Reg.datum: Mar 2007
Inlägg: 30
Tack för alla svar Jag har insett att det skulle bli för krångligt att försöka göra vidarebefordringar via PHP. Jag låter istället användaren få information om POP3-kontot så de kan vidarebefordra mailen den vägen
simphax är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-08-30, 22:36 #7
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Citat:
Originally posted by simphax@Aug 30 2008, 21:20
Tack för alla svar Jag har insett att det skulle bli för krångligt att försöka göra vidarebefordringar via PHP. Jag låter istället användaren få information om POP3-kontot så de kan vidarebefordra mailen den vägen
Det är inte krångligare än vad man gör det till
Jonas är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 20:50.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017