Avatar billede ruwald Nybegynder
01. juli 2004 - 20:37 Der er 5 kommentarer

mail (php-funktion) problemer

Jeg har følgende simple linje;

$retval = mail($to, $sbjct, $bdy, "From: Ruwald <bjorn@ruwald.com>");

Det fungerer fint på min egen computer, hvor jeg selv sætter SMTP til min udbyders.

Når jeg uploader det til mit webhotel hos surftown virker det ikke - jeg har checket ini og SMTP er sat til localhost, hvilket skulle være rigtigt. Jeg har dog også prøvet med ini_set() at ændre smtp til forskellige servere uden positivt resultat.

Input?????
Avatar billede neess Nybegynder
01. juli 2004 - 20:39 #1
Ellers kan du bruge denne function, virker fint hos mig. Og under støtter html og det hele

<?
function SendMail($From,$FromName,$To,$ToName,$Subject,$Text,$Html){
$OB="----=_OuterBoundary_000";
$IB="----=_InnerBoundery_001";
$Html=$Html?$Html:preg_replace("/\n/","{br}",$Text)
  or die("neither text nor html part present.");
$Text=$Text?$Text:"Sorry, but you need an html mailer to read this mail.";
$From or die("sender address missing");
$To or die("recipient address missing");
 
$headers ="MIME-Version: 1.0\r\n";
$headers.="From: ".$FromName." <".$From.">\n";
$headers.="To: ".$ToName." <".$To.">\n";
$headers.="Reply-To: ".$FromName." <".$From.">\n";
$headers.="X-Priority: 1\n";
$headers.="X-MSMail-Priority: High\n";
$headers.="X-Mailer: My PHP Mailer\n";
$headers.="Content-Type: multipart/mixed;\n\tboundary=\"".$OB."\"\n";

//Messages start with text/html alternatives in OB
$Msg ="This is a multi-part message in MIME format.\n";
$Msg.="\n--".$OB."\n";
$Msg.="Content-Type: multipart/alternative;\n\tboundary=\"".$IB."\"\n\n";

//plaintext section
$Msg.="\n--".$IB."\n";
$Msg.="Content-Type: text/plain;\n\tcharset=\"iso-8859-1\"\n";
$Msg.="Content-Transfer-Encoding: quoted-printable\n\n";
// plaintext goes here
$Msg.=$Text."\n\n";

// html section
$Msg.="\n--".$IB."\n";
$Msg.="Content-Type: text/html;\n\tcharset=\"iso-8859-1\"\n";
$Msg.="Content-Transfer-Encoding: base64\n\n";
// html goes here
$Msg.=chunk_split(base64_encode($Html))."\n\n";

// end of IB
$Msg.="\n--".$IB."--\n";

// attachments
if($AttmFiles){
  foreach($AttmFiles as $AttmFile){
  $patharray = explode ("/", $AttmFile);
  $FileName=$patharray[count($patharray)-1];
  $Msg.= "\n--".$OB."\n";
  $Msg.="Content-Type: application/octetstream;\n\tname=\"".$FileName."\"\n";
  $Msg.="Content-Transfer-Encoding: base64\n";
  $Msg.="Content-Disposition: attachment;\n\tfilename=\"".$FileName."\"\n\n";
         
  $Msg.=$FileContent;
  $Msg.="\n\n";
  }
}
 
//message ends
$Msg.="\n--".$OB."--\n";
mail($To,$Subject,$Msg,$headers);   
//syslog(LOG_INFO,"Mail: Message sent to $ToName <$To>");
}
?>
Avatar billede neess Nybegynder
01. juli 2004 - 20:40 #2
var et svar
Avatar billede ruwald Nybegynder
01. juli 2004 - 20:45 #3
Hej neess,

Jeg har kigget lidt på den der (der er en lignende i php dokumentationen, altså send mail), men mail() virker bare så meget mere overskueligt. Kan ovenstående gøres simplere??
Avatar billede neess Nybegynder
01. juli 2004 - 20:50 #4
Vil sige den er vildt simpel. Du sætter den ind i din kode. Og når du skal bruge den kalder du den sådan her
SendMail(
  "afsender@mail.dk","afsender navn",        //sender
  $email,"Recipients Name",    //recipient
  "emne",                              //subject
  $TEXT,$besked); 
$text er for dem som ikke kan læse html
$besked er til html mails.
Avatar billede Slettet bruger
02. juli 2004 - 12:06 #5
neess: Din funktion bruger jo også mail(), så hvis det ikke virker at kalde mail() normalt, så vil din funktion heller ikke virke.

ruwald:
I php.ini er der tre indstillinger til mailserver:

1) SMTP
2) sendmail_from
3) sendmail_path

De første to bruges kun på Windows og den sidste bruges kun på Unix (og lignende).
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