Avatar billede ohmish Nybegynder
22. januar 2004 - 03:45 Der er 8 kommentarer og
1 løsning

SMTP mail: \r\n vs. \n (hr. Tipsen er du der?)

Nu kan det være nok! Jeg vil sende, lad os sige 2000, multipart/alternative html-mails.

Standarden for linieskift i mailheaders (og body) er så vidt jeg har læst \r\n. Men mange emailklienter opfatter dette helt forrykt og viser f.eks headers hvor selve mailen skulle være.

Nu bruger jeg istedet kun \n og \n\n. Jeg er dog nødt til bruge php's egen mail(), som jo uheldigvis åbner og lukker ved hver afsendelse. Men på den måde bliver mailen helt fin i næsten alle klienter.
Men ikke hvor en evt. antispam/virus (f.eks QMail, SpamAssassin) er sat til at opfatte det som "ulovlige tegn". Dem er der mange af. Og her hvad en af dem sagde:

> A problem was found in an Email message you sent.
> This Email scanner intercepted it and stopped the entire message
> reaching its destination.
>
> The problem was reported to be:
>
> Disallowed  characters found in MIME headers
>
>
> Please contact your IT support personnel with any queries regarding this
> policy.


Efter at søge nettet tyndt ser jeg at det er ca. 50/50 hvad folk bruger i scripts m.m.

Smtp-scriptet fra Zend som mange taler varmt for er da god, men bruger \r\n som linieskift. Prøver jeg med kun \n, bliver mailen slet ikke sendt, eller scriptet går i uendeligt loop.

HVAD er der dog galt, og hvad skal jeg bruge?

Kan vi få en EKSPERT på banen og slå fast hvad der er korrekt og bør / ikke bør bruges.. hvordan.. og ikke mindst hvorfor.
Avatar billede Slettet bruger
22. januar 2004 - 03:51 #1
Avatar billede Slettet bruger
22. januar 2004 - 03:54 #2
Og den bruges f.eks således


<?php
include('Mail.php');
include('Mail/mime.php');

$text = 'Text version of email';
$html = '<html><body>HTML version of email</body></html>';
$file = '/home/richard/example.php';
$crlf = "\r\n";
$hdrs = array(
              'From'    => 'you@yourdomain.com',
              'Subject' => 'Test mime message'
              );

$mime = new Mail_mime($crlf);

$mime->setTXTBody($text);
$mime->setHTMLBody($html);
$mime->addAttachment($file, 'text/plain');

$body = $mime->get();
$hdrs = $mime->headers($hdrs);

$mail =& Mail::factory('mail');
$mail->send('postmaster@localhost', $hdrs, $body);
?>
Avatar billede googolplex Novice
22. januar 2004 - 20:21 #3
sandbox: Er PEAR's mailklasse noget man skal installere eller er den bundled med PHP ?
Avatar billede ohmish Nybegynder
22. januar 2004 - 21:37 #4
hva med specielle headers? jeg har et par stykker jeg gerne vil sætte
Avatar billede Slettet bruger
22. januar 2004 - 22:09 #5
googolplex: Mail er bundled, men Mail::Mime skal man vist selv hente.

ohmish: Se eksemplet. Bare tilføj flere headers.

$hdrs = array(
              'From'    => 'you@yourdomain.com',
              'Subject' => 'Test mime message'
              );
Avatar billede ohmish Nybegynder
22. januar 2004 - 22:21 #6
dvs. jeg skal overtale en evt. webhoteludbydere til at installere det?
Avatar billede Slettet bruger
22. januar 2004 - 22:43 #7
Nej, det kan ligge i en hvilkensomhelst mappe. Det er bare normale php-scripts, man skal inkludere på sin side.
Avatar billede ohmish Nybegynder
23. januar 2004 - 05:42 #8
ok, jeg tænkte nok :)
Avatar billede Slettet bruger
23. januar 2004 - 07:54 #9
Deres generelle "Hvordan installerer man pakker manuelt?"-side bruger netop Mail::Mime som eksempel.

http://pear.php.net/manual/en/installation.manually.php
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