Avatar billede erik_a Novice
01. december 2011 - 00:03 Der er 2 kommentarer og
1 løsning

send mail med tekst og attachment?

Hej

Jeg har haft et script kørende i et stykke tid ved surftown, kørende uden problemer, men efter et flyt til dandomains private server(?) så virker dette ikke mere.

Min kode er:

function SendMail($email,$subject,$text,$attach = "",$member = ""){
    if (strtoupper(substr(PHP_OS,0,3)=='WIN')) {
        $eol="\r\n";
    } elseif (strtoupper(substr(PHP_OS,0,3)=='MAC')) {
        $eol="\r";
    } else {
        $eol="\n";
    }
   
$headers .= "From: ".emailfrom." <".emailaddress.">".$eol;
$headers .= "Reply-To: ".emailaddress."".$eol;
$headers .= "Return-Path: ".emailfrom." <".emailaddress.">".$eol;   
// these two to set reply address
$headers .= "Message-ID:<".$now." TheSystem@".$_SERVER['SERVER_NAME'].">".$eol;
$headers .= "X-Mailer: PHP v".phpversion().$eol;         
// These two to help avoid spam-filters

if($attach == "attach"){

    $mime_boundary=md5(time());
    $bound = "--".$mime_boundary."\r\n";
    $bound_last = "--".$mime_boundary."--\r\n"; 
       
    $headers .= "MIME-Version: 1.0\r\n"."Content-Type: multipart/mixed; boundary=\"".$mime_boundary."\"";
   
    $message .= "If you can see this MIME than your client doesn't accept MIME types!\r\n".$bound; 
       
    $message .= "Content-Type: text/html; charset=\"iso-8859-1\"\r\n"."Content-Transfer-Encoding: 7bit\r\n\r\n".EmailWrapper($text)."\r\n".$bound;
   
    $filename = $member.".pdf";
    $file = file_get_contents((string)pdf_path.$filename); 
       
    $message .= "Content-Type: application/pdf; name=\"".$filename."\"\r\n"."Content-Transfer-Encoding: base64\r\n"."Content-disposition: attachment; file=\"".$filename."\"\r\n"."\r\n".chunk_split(base64_encode($file)).$bound_last; 
}else{
    $headers .= "MIME-Version: 1.0".$eol;
    $headers .= "Content-Type: text/html;\"".$eol;
    $message = EmailWrapper($text);
   
}

  if(mail($email, $subject, $message, $headers))
  {
    return true;
  }else{
    return false;
  }
}

Jeg ved alle variabler til funktionen er korrekte og at der kommer noget i disse, håber virkelig i kan hjælpe.

EmailWrapper(text) er bare for at kunne stoppe al tekst ind i en anden sammenhæng så det ser lidt pænere ud...

På forhånd tak...
Avatar billede olsensweb.dk Ekspert
02. december 2011 - 17:19 #1
skulle der ikke $ foran emailfrom og emailaddress i nedenstående ??
$headers .= "From: ".emailfrom." <".emailaddress.">".$eol;
$headers .= "Reply-To: ".emailaddress."".$eol;
$headers .= "Return-Path: ".emailfrom." <".emailaddress.">".$eol; 

>Jeg har haft et script kørende i et stykke tid ved surftown, kørende uden problemer, men efter et flyt til dandomains private server(?) så virker dette ikke mere.
kunne det tænkes surftown har "globals var on" ??


du er selvføgelig opmærksom på at
ref http://php.net/manual/en/function.php-uname.php
For the name of just the operating system, consider using the PHP_OS constant, but keep in mind this constant will contain the operating system PHP was built on.


nb jeg tror jeg ville lave
if (strtoupper(substr(PHP_OS,0,3)=='WIN')) {
    $eol="\r\n";
} elseif (strtoupper(substr(PHP_OS,0,3)=='MAC')) {
    $eol="\r";
} else {
    $eol="\n";
}


om til en switch
$os = strtoupper(substr(PHP_OS,0,3));
switch($os){
    case 'WIN': $eol="\r\n"; break;
    case 'MAC'; $eol="\r"; break;
    default: $eol="\n"; break;   
}
Avatar billede erik_a Novice
05. december 2011 - 09:17 #2
$ behøves ikke da globals åbenbart er on ved dandomain, den afsender mailen rigtigt nok, og vedhæfter en fil, men dilen er kun 212byte isteder for 220kb, og alt skreven tekst kommer ikke med.
Vælger jeg ikke at vedhæfte et dokument, så er der ingen problemer, den bliver sendt ganske fint...

/Erik
Avatar billede erik_a Novice
07. december 2011 - 14:18 #3
Nå, løsningen var at fjerne alt med \r\n og erstatte med PHP_EOF.

Fatter så bare at det virker et sted, og ikke et andet...
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

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