VIKTIG !! Bestilling fra nettbutikk blir oppfattet som spam

Tonny Kluften

Administrator
Bestillingbekreftelsen fra en enkel php nettbutikk blir oppfattet som spam og bestillingen blir da ikke sendt til epostadressen til selger. Hvordan kan jeg løse dette?

Teksten i eposten er f.eks. slik:


Tittel:
Bestilling av materiale fra nettsted.no‏

Innhold:

Bestilling fra nettbutikken

---------------------------------------
Inspirasjon: on
Antall - Inspirasjon: 54
enneske: on
Antall - menneske: 56
Far: on
Antall - Far: 565
---------------------------------------
Firma: elle mur
Navn: tfg et
Adresse: ytre 45
Postnummer: 5445
Poststed: terger
Epost: ellen@online.no
tlf: 12312354
--------------------------------------
Kommentar: bla bla
 
J

Jiberish

Guest
Blir eposten sendt via en smtp-server eller via php sin mail funksjon og webserveren? Hvis den blir sendt via webserveren, hva sender du med av headere? Jeg regner med at avsender adressen er satt til en fungerende epost?
 

Tonny Kluften

Administrator
Den blir sendt via php.
Epostkontoen tonny@tonny.no tar imot bestillingen, den blir puttet i spamkurven hos en hotmailadresse jeg testet den på, men andre epostkontoer som jeg har på andre servere får ingenting.

PHP:
<?php
/*
Template Name: process
*/
?>

<?php
require_once('incbutikk.php');
?>


<?php
//uskadeligjør php_self
if (!empty ($_SERVER['PATH_INFO']) && strpos ($_SERVER['PHP_SELF'], $_SERVER['PATH_INFO']) !== false) {
$_SERVER['PHP_SELF'] = substr ($_SERVER['PHP_SELF'], 0, -(strlen ($_SERVER['PATH_INFO'])));
}

include("global.inc.php");
$errors=0;
$error="<br /><br /><br /><br /><br />En av f&oslash;lgende feil skjedde:<ul>";
// opprettelse av de globale variablene til $_POST
// litt i tvil om dette er smart eller ikke...
pt_register('POST','bok1');
pt_register('POST','antall1');
pt_register('POST','bok2');
pt_register('POST','antall2');
pt_register('POST','bok3');
pt_register('POST','antall3');
pt_register('POST','firma');
pt_register('POST','navn');
pt_register('POST','adresse');
pt_register('POST','postnummer');
pt_register('POST','poststed');
pt_register('POST','epost');
pt_register('POST','tlf');
pt_register('POST','kommentar');

// i denne blir linjeskift og newline byttet til \n(\012)
// form for vasking av inndata
$kommentar=preg_replace("/(\015\012)|(\015)|(\012)/","\n", $kommentar);

// her blir alt sjekket så det ikke er empty fields
// denne og genVal sjekken burde deles opp så brukeren får vita spesifikt hav som er galt.
if($navn=="" || $adresse=="" || $postnummer=="" || $poststed=="" || $epost=="" || $tlf=="" ){
$errors=1;
$error.="<li>Du fyllte ikke ut et p&aring;krevet felt. Klikk tilbake og pr&oslash;v en gang til.";

// se genVal($str) neders
if(!genVal($navn) || !genVal($adresse) || !genVal($postnummer) || !genVal($poststed) || !genVal($tlf) || !genVal($kommentar))
{
$errors=1;
$error.="<li>Enkelte av feltene du har fylt inn inneholder ugyldige tegn";
}
}

// validere e-post, Eregi: This function has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 6.0.0. Relying on this feature is highly discouraged.
if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$epost)){
$error.="<li>Ukorrekt epostadresse ble skrevet inn";
$errors=1;
}
if($errors==1){
echo $error;
}else{
$where_form_is="http".($HTTP_SERVER_VARS["HTTPS"]=="on"?"s":"")."://".$SERVER_NAME.strrev(strstr(strrev($PHP_SELF) ,"/"));
$message="Bestilling fra nettbutikken\n
---------------------------------------
Inspirasjon til hverdag og fest: ".$bok1."
Antall - Inspirasjon til hverdag og fest: ".$antall1."
Det myndiggjorte menneske: ".$bok2."
Antall - Det myndiggjorte menneske: ".$antall2."
Far, hvor er du?: ".$bok3."
Antall - Far, hvor er du?: ".$antall3."
---------------------------------------
Firma: ".$firma."
Navn: ".$navn."
Adresse: ".$adresse."
Postnummer: ".$postnummer."
Poststed: ".$poststed."
Epost: ".$epost."
tlf: ".$tlf."
--------------------------------------
Kommentar: ".$kommentar."
";

$message = wordwrap($message, 70); //maks 70chars per linje
mail("tonny@tonny.no","Bestilling av materiale fra personalutvikling.no", utf8_decode($message),"From: Nettbutikken");

?> 

<!-- Do not change anything below this line -->

<?php 
}
?>
 
Sist redigert:
J

Jiberish

Guest
Hvem står som avsender på disse mailene? Jeg skjønner at "Nettbutikken" dykker opp men det står vel en epost-adresse også regner jeg med?

Har du sjekket headerne på hotmail meldingen? Jeg bruker ikke hotmail men det kan tenkes at hotmail skriver noe om hvorfor meldingen tolkes som spam i headerne.
 
J

Jiberish

Guest
Det er vanlig å sjekke om avsender-adressen eksisterer, eller mer spesifikt om server.qts.no har en MX definert. Når jeg sjekker nå så har ikke server.qts.no en MX, dermed er det lite sannsynlig at det kan komme legitim epost derfra (mener hotmail og mange andre leverandører).

Se om det hjelper å definere en faktisk avsender som en header. For mer info om hvordan det kan gjøres: PHP: mail - Manual
 
J

Jiberish

Guest
Som regel så blir servernavnet satt til avsender når man ikke selv definerer avsender. Det kan også tenkes at det er satt en fast avsender i php.ini.
 

Tonny Kluften

Administrator
Men grunnen til at epostene kommer frem til epostene på den ene serveren, men ikke til den andre, er det at de to serverne har forskjellige innstillinger? Er det spamfiltre eller?

Har satt inn avsender, men det hjalp ikke:

$message = wordwrap($message, 70); //maks 70chars per linje
mail("tonny@tonny.no","Bestilling av materiale fra personalutvikling.no", utf8_decode($message),"From: post@personalutvikling.no");
 
U

Uregistrert

Guest
Hei

Har vært snikeleser på forumet i en god stund:)

Det er vanskelig of sende mail ut fra php uten at den blir merket som spam.

For og rette avsenderadressen så kan du legge "-f " som siste parameter på mailutsendingen

mail($to, $subject, $message, $headers, '-f');

Du burde også sammenligne headeren med en mail som ikke bli merket som spam.
Forskjellen fra en vanlig mail og spam kan være noe så enkelt som en " istedenfor ', så du må sammenligne nøye.
 

Mr Vest

Sjefen over alle sjefer!
Jeg har lekt meg litt med denne mail()-funksjonen med epost direkte til egen server, Yahoo og Hotmail. Hotmail og på egen server kommer det meste direkte i innboks umiddelbart. På Yahoo derimot opplever jeg at epost bruker opptil 5 dager før den kommer frem, og da er det tilfeldig om den havner i spamfilteret eller i innboks. Veldig rart egentlig, og jeg har valgt og bare tro at det er Yahoo som er noe hekkans drit. Ofte mottar jeg epost som var sendt for opptil 6mnd siden på den også.

@Uregistrert, snikleser er bra. Hva gjør "-f" ?

Det jeg bruker når jeg sender ut mail er ganske simpelt egentlig, og den havner ikke i noe spam, bortsett fra dette rotet med Yahoo da.

PHP:
$supportmail='support@atle.com';
$epost='mottaker@mottaker.com';
mail( $epost, "Eyyyy, hvordan det står til a?", 
"Heisann.

Dette er en epost. Denne er sendt til deg fordi Atle er tullete og bare tuller seg enda mer enn vanlig.

Mvh
Atle", "From: $supportmail");

Er det dumt og gjøre det slik?
 
Topp