Sende mail() med NAS Server

Hej v5
Jeg har lavet et lille script, som jeg håbede at kunne se mails med. I forbindelse med den hjemmeside jeg laver til vores lokale sejlklub.
Det er så blevet modificeret så det passer til hjemmesiden.
Men der er nogle problemer. Når jeg sender fra hjemmesiden, der er hostet på min egen Synology NAS mail server, som står her i huset.
Scriptet virker fint når jeg sender email til email der ligger på min egen NAS, men ikke når jeg sender mail ud til den store verden.
Når scriptet bliver lagt ud på en server ude i byen, virker det.
Har I nogen erfaring med, hvad der kan være galt?
Med venlig hilsen
Ole Hovmand

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Send en e-mail</title>
</head>
<body>
<?php
$minemail = "[email protected]"; // adressen som e-mailen skal vises at være fra
$tilemail = "[email protected]"; // adressen som e-mailen skal sendes til
ini_set("sendmail_from", $minemail); // bruges kun til Windows systemer
ini_set("SMTP", "mail.xxxxxx.com"); // bruges kun til Windows systemer
ini_set("smtp_port", "25"); // bruges kun til Windows systemer
$encoding = "utf-8"; // sæt til samme encoding som HTML siden hvor formular sendes
$emne = "Mail fra xxxxxx.com til xxxxxx.com"; // e-mailens emne
$besked = "Hej." . "\r\n" // e-mail beskeden
. "Hvis dette når frem, virker mailen." . "\r\n"
. "På xxxxxx.com." . "\r\n"
. "Hilsen Ole." . "\r\n";
$headers = "From: " . $minemail . " <" . $minemail . ">" . "\r\n"
. "Content-Type: text/plain; charset=" . $encoding . "\r\n";
$besked = wordwrap($besked, 70, "\r\n"); // linjer må ikke være større end 70 tegn ifølge PHP manualen
// når Windows snakker direkte med en SMTP server fjernes linjer som begynder med et punktum. Denne linje modvirker dette
$besked = str_replace(array("\r\n", "\n."), array("\n", "\n.."), $besked);
if (mail($tilemail, $emne, $besked, $headers)) {
echo "Beskeden blev sendt";
} else {
echo "Beskeden blev ikke sendt";
}
?>
</body>
</html>

Hej
, @olehovmand
Som
skriver, ville det giver os lidt mere at gå efter. Hvis du kunne ligge dit script ud. Der kan være mange grunde til at sådan noget nemlig ikke virker. @jesperpetersen
Du kan evt. bruge PasteBin eller lave en Gist på GitHub. (Selvfølgelig undgå at dele de følsomme data, såsom login oplysninger osv.)
Evt. også nogen informationer omkring Mail serveren du specifikt bruger - og konfigurationen du har af denne, ville være dejligt. Så vi kan "debugge" din fejl.
- Velkommen til v5.dk og ikke mindst vores forum.
Med venlige hilsner
Daniel H. Hemmingsen (@dhh)

Jeg var vidst en smule for hurtig på tasterne lige før, jeg havde i farten glemt at vi selvfølgelig havde vores egen måde at dele kode på. Som du jo så bruger
- Super fedt. @olehovmand
Ud fra din kode, ser jeg ikke noget iøjnefaldende som skulle lave de store problemer.
Jeg tror at dit problem har noget med din (NAS) server at gøre. Jeg snakkede lidt med
tidligere på kontoret. Og vi blev enige om at det nok skyldtes at du har problemer med opsætningen af mail serveren. I korte træk er problemet noget som er (evt. kunne være) "Windows vs. Linux" relateret og at din Mail server (på din NAS) prøver at sende emails lokalt - og dermed fejler. @db
Efter lidt søgning fandt jeg en god dokumentation for at opsætte en Mail server med din Synology NAS. Du kan end da læse den på dansk lige her: https://www.synology.com/da-dk/knowledgebase...
Jeg håber at det hjælper dig på rette vej.
Med venlige hilsner
Daniel H. Hemmingsen (@dhh)

Den opsætning har jeg set og brugt. Nærmest stavet mig igennem.
Og det virker stadig ikke.
Jeg har en NAS server stående fordi jeg syntes at det er sjovt og hyggeligt at "rode" med PHP, men det er godt nok ærgerligt hvis jeg skal ud i byen, for at leje Hotel til den hjemmeside. Bare for at få mailen til at virke.
Jeg lader tråden køre lidt endnu, så må vi se hvad der byder sig...
Mvh. Ole

Hej
og god aften. @olehovmand
Hvis jeg skal være helt ærlig, så er det med at sende mails fra egen server i 2016 en større jungle en det burde være. Der er så mange elementer man skal have styr på; Reverse DNS på IP-adressen, Evt blokering af port 25 hos din Internet provider, DomainKeys, SPF mv.
Sagt på en anden måde - at sende en e-mail i dag, kræver en masse teknologier som skal spille og virke, før man kan være sikker på at mailen kommer sikkert frem.
Jeg plejer derfor at anbefale folk at brug en 3. parts e-mail tjeneste som f.eks. Mandrill.com, som vi også selv bruger her på v5.dk.
Mandrill koster desværre lidt penge, men der findes nogle gratis alternativer som f.eks. SendGrid der tillader op til 12.000 e-mail pr. måned gratis, eller MailJet som giver dig op til 6.000 e-mails pr. måned gratis.
Alternativt hvis du har en Google Apps eller Gmail.com konto kan du bruge SMTP-oplysningerne her til at sende igennem. Jeg vil dog stadig anbefale en dedikeret mail-tjeneste som Mandrill, SendInGrid eller MailJet.
Hvis du f.eks. bruger SendInGrid kan du sende igennem deres API med PHP, sådan her:
// Hent SendGrids PHP Library på https://github.com/sendgrid/sendgrid-php
$api_user = "dit brugernavn fra sendgrid.com)
$api_key = "din apinøgle fra sendgrid.com)
$sendgrid = new SendGrid($api_user, $api_key);
$email = new SendGrid\Email();
$email->addTo("[email protected]")
->setFrom("[email protected]")
->setSubject("Din årsopgørelse for 2016")
->setHtml("Hej Daniel, din årsopgørelse for 2016 er <b>klar</b>!");
$sendgrid->send($email);
Hvis du ønkser det, kan vi evt. lave nogle videoer om at sende e-mail vha. Mandrill og SendGrid i PHP her på v5.dk. Du kan oprette dit ønske her.
Hvis du alligevel ønsker at gøre brug af din Synolgy NAS til mail-udsendelse vil vi også gerne prøve at hjælpe dig med det, så må du lige give besked, men igen, det er anbefales at bruge en 3. parts tjeneste, især hvis man sender mindre end 12.000 emails pr. måned, da de så er gratis at bruge.
Håber dette hjælper dig lidt videre.
God aften Ole :-)
Med venlige hilsner Daniel Bahl (@db)
CEO – v5.dk ApS

Hej @olehovmand
Kan du fortælle hvilken
Model/Type: https://www.synology.com/da-dk/support/download/
DMS: https://www.synology.com/en-us/dsm/5.2
du bruger?
Måske er der en firewall foran din Synology som blokerer for udgående SMTP opkald?
Her forklares der meget godt, hvordan du ser om der er blokeret eller ej.
http://serverfault.com/questions/26564/how-to-check-if-a-port-is-blocked-on-a-windows-machine
Umiddelbart kan jeg ikke gennem din kode, se hvad der skulle være galt.

Til @Thomas
NAS'en er en DS 215+ og den kører DSM 5,2 Sidste opdatering.
Jeg har oprettet to mail klienter på min NAS'es Mail server, de virker. Det er kun når jeg prøver at sende mails fra et script på en hjemmeside det ikke virker.
Jeg tror heller ikke at det er scriptet der ikke virker, for når jeg lægger det ud på en server ude i byen virker det. Så det må være et eller andet i min NAS der ikke er sat rigtigt op.
Til @db
Måske er det løsningen at bruge SendGrind eller MailJet. Men det vil kræve at jeg får hjælp til at implantere det på mit site.
I øvrigt drejer det sig ikke om særligt mange mails.
Mvh. Ole
P.S. Det ville jo være sjovere at kunne sende mails fra min egen server.

Jeg har netop udgivet en ny e-learning video om mail-udsendelse med Mailgun på vores hjemmeside her.
Link: Send e-mails med PHP igennem Mailgun
Med venlige hilsner Daniel Bahl (@db)
CEO – v5.dk ApS

Bare rolig, i videoen gennemgår vi det præcis som du beskriver, altså til et webhotel som vi tilgår med FTP - ingen terminal nødvendig. @simonpedersen
Vi henter- og bruger Composer på vores Mac og bruger vores Mac-computer til at bygge Composer-filerne, i dette tilfælde Mailgun – og så uploader vi Composer igennem FTP med vores Atom.io editor. Men du kan i princippet bruge et hvilket-som-helst FTP-program.
Alt dette gennemgår vi trin-for-trin i videoen :)
Jeg har planer om at lave nogle flere videoer om Composer - hvordan man opdaterer og hvordan Composer virker mere detaljeret. Stay tuned for more :-)
Med venlige hilsner Daniel Bahl (@db)
CEO – v5.dk ApS

#14
Lige en kommentar til det med at oprette spørgsmål. @simonpedersen
Vi har valgt at samle alle spørgsmål i vores forum. Derfor har vi fjernet muligheden for at skrive indlæg, spørgsmål og kommentarer til hver eneste video, til gengæld kan du i højre side på video-siden finde en "Opret spørgsmål"-knap som går direkte ind i vores forum.
I sidste ende tror vi på dette valg gør det nemmere for både brugerne og vores support-team her på v5.dk - fordi der kun er éet sted hvor man søger hjælp - nemlig vores forum :-)
Håber det giver mening :-) Hvis du har yderligere spørgsmål til Composer, må du endelig åbne en ny tråd her på forum'et. Vi vil elske at hjælpe dig :D
Ha' en fantastisk onsdag aften
Med venlige hilsner Daniel Bahl (@db)
CEO – v5.dk ApS

Til @db
Jeg tror at jeg opgiver at få min NAS til at sende mail. Der bliver nok for mange problemer med at få skittet til at virke.
Nå, jeg er gået i gang med at se v5.dk video om MailGun, Jeres video ser overbevisend ud.
Men, men under installationen, til min windows PC, kommer der en fejl, den mangler at åbne en fil der ligger i php.ini-development ;extension=php_openssl.dll Den skal aktiveres ved at man fjerner ';' Det er gjort men fejlmeldingen komme stadig.
Så hvad gør jeg nu?
Mvh. Ole
Ps. jeg PHP ver 5.4.9.0

#18
Hej igen @olehovmand
Ud at dømme fra billedet med fejlen du sendte. Så mangler du ganske simpelt at finde den rigtige php.ini fil som din server bruger og derefter genstarte den. (Så den jo kan bruge den nyligt ændrede opsætning.)
For at finde din php.ini fil som bruges med din PHP server, kan du smide dette ind i en PHP fil - for derefter at tilgå filen, den vil så visse dig stien til filen. (På Linux baseret systemer kan du finde de samme oplysninger med "php --ini"-kommandoen.)
<?php
$inipath = php_ini_loaded_file();
if ($inipath) {
echo 'Loaded php.ini: ' . $inipath;
} else {
echo 'A php.ini file is not loaded';
}
?>
Du leder efter linjen (nedenunder) i php.ini filen og fjerne ";"-tegnet:
;extension=php_openssl.dll
Bid mærke i, at det kun gælder Windows servere. (Kan også ses på ".dll" endelsen. Dynamic Link Library. Som Windows benytter.) Langt de fleste Linux servere. (Som jeg også tror din Synology NAS køre. (Jeg ville blive overasket hvis det var andet.) Har det enten sat til eller ej, hvis du har OpenSSL installeret til at begynde med. Så vidt jeg ved.
Da Composer bruger PHP for at virke til at begynde med, skal du have adgang til en PC/Mac/Linux maskine som køre PHP. (Der hvor du vil installere filerne. Hvis du eksempelvis som i videoen vil installere det selv i din computer mappe, inden at du smider det over på en webserver/webhotel. Så skal du have PHP installeret lokalt på din maskine også. (Der findes pakkeløsninger såsom MAMP til Mac og XAMPP til Windows.)
Jeg håber at det gav mening. Er du stadigvæk i tvivl - så ville ekstra informationer være godt, bl.a:
- Hvor du vil installere Composer?
- Har du adgang til "skrivebordet" eller en Terminal hvor du vil installere Composer?
- Eller vil du simpelthen bare downloade og bruge Composer lokalt på egen maskine, for derefter at smide det op på et evt. webhotel.
Med venlige hilsner
Daniel H. Hemmingsen (@dhh)

#21
Der findes også WAMP til Windows, som er lidt mere kun til Apache, PHP og MySQL.
Hvorimod XAMPP er Apache, MariaDB, PHP og Perl.
Med venlige hilsner
Daniel H. Hemmingsen (@dhh)