PDA

Bekijk Volledige Versie : Sendmail aanpassen? php mail "from"(afzender) wijzigen?



janton
02/01/10, 22:15
Beste Alle,

Ik ben nogal nieuw met directadmin/linux/vps... Tot op heden verloopt het allemaal wel goed, veel moeten google.. maar dat hoort bij het leer proces!

Ik ben bezig met een site, hiervoor gebruik ik de mail functie vanuit php.
Nou wilde ik de from(afzender) een ander mail adres geven, omdat dit reeds mijn persoonlijke mail adres is.. (hiervoor zijn ook andere wegen in php zelf, maar ik wil de standaard gewoon wijzigen)

Nou dacht ik dat je dit kon doen in php.ini.
Helaas had dit geen effect.

Ik heb mijn vraag een maand geleden op directadmin forum zelf gepost.. maar geen reactie;

Ik hoop dat jullie het antwoord misschien hebben?
Want via google kan ik het niet vinden!

Dennis
02/01/10, 22:21
<?php mail("naar@gmail.com", "onderwerp", "bericht", "from: Naam <naam@gmail.com>"); ?>
Je kunt het toch zo doen? Op Google staan ook veel resultaten om het default te veranderen.

marsipulami
02/01/10, 22:27
Waarom zou je de default from willen veranderen? Dat snap ik niet helemaal, waarom niet zoals dennis zegt als parameter

janton
02/01/10, 22:51
Ja wat Dennis zegt heb ik reeds al gedaan..Uiteraard werkt perfect!
Maar dat is naar mijn mening een omweg.. waarom zou ik de default niet kunnen wijzigen? Daarnaast moet ik een hoop scripts wijzigen omdat ik de mail functie regelmatig had gebruikt zonder afzender op te geven.. Als ik de default kon wijzigen.. leek mij efficiënter qua tijd! Maar lijkt er op dat ik maar in mijn scripts kan duiken!:balloon:

Ramon Fincken
02/01/10, 23:59
dit zou toch moeten kunnen? heb je ook al in je mailsoftware op de server zelf gekeken? (exim etc.. )

hoe dan ook als je bv phpmailer gebruikt EN het lukt je dus niet om dit serverwide te doen, kun je daar in de constructor een from adres opgeven.

marsipulami
03/01/10, 00:14
dit zou toch moeten kunnen? heb je ook al in je mailsoftware op de server zelf gekeken? (exim etc.. )

Je moet er natuurlijk wel om denken dat iedereen dan die afzender krijgt, klanten etc. toch?

Ramon Fincken
03/01/10, 00:17
Je moet er natuurlijk wel om denken dat iedereen dan die afzender krijgt, klanten etc. toch?

Jep, tis ook geen mooie oplossing.
Maar nu krijgt ook iedereen dat from adres als ik het goed heb gelezen.

Normaliter is dat www-user of [DA_username]@servernaam.tld
Ook niet mooi maar die laatste heb ik standaard op een DA bak staan. ( Ben geen sysadmin )

cfmweb
03/01/10, 11:10
<?php mail("naar@gmail.com", "onderwerp", "bericht", "from: Naam <naam@gmail.com>"); ?>


Heej dat komt bekend voor.. je kon zo vroegâh ook je afzendadres spoofen door met telnet in te loggen op de mailserver van planet internet :thumbup:

janton
06/01/10, 14:01
hoe dan ook als je bv phpmailer gebruikt EN het lukt je dus niet om dit serverwide te doen, kun je daar in de constructor een from adres opgeven.

THX ik heb nu tijdelijk mijn scripts aangepast.. ik zal hier meer informatie over gaan opzoeken! Dus ik moet mij gaan verdiepen in de constructor..

frankske
06/01/10, 14:16
Echte mannen gebruiken SMTP ipv php's mail(). Daarin heb je al die rommel niet!

Triloxigen
06/01/10, 14:27
Die opmerking snap ik dan weer niet.. Kun je ook echte argumentatie geven? ;)

Randy
06/01/10, 14:33
Echte mannen gebruiken SMTP ipv php's mail(). Daarin heb je al die rommel niet!

Daar sluit ik me helemaal bij aan. Het voorkomt een hoop problemen en je kunt als (eind)gebruiker makkelijker switchen voor als de server (weer) eens geblacklist staat ergens. Ook mág de server met zijn IP vaak niet mailen van je SPF-records en je eigen SMTP-server mag dit wel.

t.bloo
06/01/10, 14:51
Die opmerking snap ik dan weer niet.. Kun je ook echte argumentatie geven? ;)

Geen echte man dan :D

Met je eigen SMTP script lever je zelf de email netjes bij de ontvanger af en laat je het niet over aan het zwarte gat van je PHP installatie. Je hebt de aflever details dan zelf in de hand en je krijgt dan ook echte feedback of het gelukt is enzovoort.

Ramon Fincken
06/01/10, 15:26
THX ik heb nu tijdelijk mijn scripts aangepast.. ik zal hier meer informatie over gaan opzoeken! Dus ik moet mij gaan verdiepen in de constructor..

Ik zal deze week eens in mijn superclass duiken, het is niet zo heel lastig. Ik heb voor mijn CMS eentje gemaakt die automatisch noreply@domeinnaam.nl neerzet als From adres en Reply-to adres tenzij je dit meegeeft.

Maar even sleutelen en je zou bv zo-eits kunnen doen ( deels pseudocode ! ):


class MyMail extends Phpmailer {[..]}

$params = array("From: => adres@domain.tld");
$mailobject = new MyMail($params);
// Hier de rest en daarna een mooie verzending.

Triloxigen
06/01/10, 15:45
Geen echte man dan :D

Met je eigen SMTP script lever je zelf de email netjes bij de ontvanger af en laat je het niet over aan het zwarte gat van je PHP installatie. Je hebt de aflever details dan zelf in de hand en je krijgt dan ook echte feedback of het gelukt is enzovoort.

Maar dit klopt natuurlijk niet ;-)
PhP levert met sendmail net zo goed de email af VIA php NAAR een SMTP server. Je ontkomt echt niet aan het gebruik van het 'zwarte gat' van PHP, als je PHP gebruikt. Dit geld net zo goed als je direct naar SMTP stuurt.

En echte feedback of het gelukt is krijg je anders ook, maar niet als je geen reply adres insteld maar dat geld voor SMTP net zo goed natuurlijk. ;)


Overigens kan ik inderdaad ook de phpmailer class aanrader, werkt erg prettig.

Randy
06/01/10, 16:02
Ik zal deze week eens in mijn superclass duiken, het is niet zo heel lastig. Ik heb voor mijn CMS eentje gemaakt die automatisch noreply@domeinnaam.nl neerzet als From adres en Reply-to adres tenzij je dit meegeeft.

Het eerste dat ik in mijn spamfilters zet: noreply en no-reply@-adressen.

frankske
06/01/10, 16:04
phpmailer (als je hem configureert om smtp te gebruiken) gebruikt de php mail() functie helemaal niet. Het probleem met die mail() functie is dat het enorm afhangt van de configuratie van je host, van de gebruikte MTA, van de instellingen enz. Je *kan* het correct krijgen in bijna alle gevallen, maar het zal 9 kansen op 10 niet meer 100% correct zijn als je verhuist naar een andere host. Als je SMTP gebruikt, is het zoveel eenvoudiger...

Triloxigen
06/01/10, 16:49
maar het zal 9 kansen op 10 niet meer 100% correct zijn als je verhuist

Dat is natuurlijk onzin.
In 99 van de 100 gevallen werkt sendmail prima, volgens jou theorie zou 90% van de vrij beschikbare scripts niet eens werken gezien de meeste via sendmail werken. De kans dat SMTP gegevens wijzigen is groter dan dat sendmail wijzigt uiteindelijk ;-)

Ik vind het prima discussie te voeren en SMTP is eigenlijk ook beter, maar de argumenten die tot nu toe gekomen zijn slaan nagenoeg nergens op :o

frankske
06/01/10, 16:51
Bon, hier de twee belangrijkste:


Default directadmins laten niet toe om om een return path aan te passen bij default php en exim install
Sommige MTA's eisen \n, andere \r\n in het "extra headers" veldje


Het is *wel* zo dat 95% van de mensen het niet uitmaakt op wat een return path header staat. Maar als je het exact juist wil krijgen, moet je altijd knutselen. Als je daarentegen SMTP gebruikt, moet je bijna nooit knutselsen.

Triloxigen
06/01/10, 16:54
Bon, hier de twee belangrijkste:


Default directadmins laten niet toe om om een return path aan te passen bij default php en exim install
Sommige MTA's eisen \n, andere \r\n in het "extra headers" veldje


Het is *wel* zo dat 95% van de mensen het niet uitmaakt op wat een return path header staat. Maar als je het exact juist wil krijgen, moet je altijd knutselen. Als je daarentegen SMTP gebruikt, moet je bijna nooit knutselsen.

Mwah, het coden van SMTP is altijd meer code dan mail().
het return path kun je toch bij de headers wijzigen, heb er zelf eigenlijk nog nooit tegenaan gelopen. Maar de keren dat ik met DA werk is ook wel op 1 vinger te tellen :p

frankske
06/01/10, 16:57
Mwah, het coden van SMTP is altijd meer code dan mail().

Klopt, maar het is "universeler". Zet het 1 keer juist, en als je MTA zich plots anders gedraagt, moet je hoogstens smtpserver/poort/auth info aanpassen. Hierin zit de grote kracht: het is een goed gedocumenteerde standaard. De documentatie die je op php.net/mail vindt, is op meerdere punten onjuist of "situatie afhankelijk".



het return path kun je toch bij de headers wijzigen, heb er zelf eigenlijk nog nooit tegenaan gelopen. Maar de keren dat ik met DA werk is ook wel op 1 vinger te tellen :p
[/quote]

Een default DA (of een strikt geconfigureerde exim) laten dit by default dus niet toe :)

PreServer
06/01/10, 17:15
http://php.net/manual/en/function.mail.php

additional_headers (optional)

Note: When sending mail, the mail must contain a From header. This can be set with the additional_headers parameter, or a default can be set in php.ini.
Failing to do this will result in an error message similar to Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing. The From header sets also Return-Path under Windows.

http://nl2.php.net/manual/en/mail.configuration.php#ini.sendmail-from

frankske
06/01/10, 17:19
Geloof me:



Een default DA (of een strikt geconfigureerde exim) laten dit by default dus niet toe :)

t.bloo
06/01/10, 17:34
Geloof me:

ik geloof je :) echter mijn klanten niet (dit is zo onderhand technische support vraag nummer 1) :(

Ramon Fincken
06/01/10, 23:17
phpmailer (als je hem configureert om smtp te gebruiken) gebruikt de php mail() functie helemaal niet. Het probleem met die mail() functie is dat het enorm afhangt van de configuratie van je host, van de gebruikte MTA, van de instellingen enz. Je *kan* het correct krijgen in bijna alle gevallen, maar het zal 9 kansen op 10 niet meer 100% correct zijn als je verhuist naar een andere host. Als je SMTP gebruikt, is het zoveel eenvoudiger...

Hij heeft ook een mooie SMTP ondersteuning inderdaad.

bigall
07/01/10, 00:00
de betreffende gebruiker toevoegen aan de trusted users van je exim config en ook de regel no_local_from_check opnemen zal je probleem wel oplossen.

huizinga
07/01/10, 01:53
Wij gebruiken ook altijd de SMTP ipv de mail() in php. Wij draaien SuPhp op de servers waardoor php draait als de eigen user. hierdoor kun je de "From" niet aanpassen ook al geef je die mee in de header bij gebruik van de mail() in php. Als je vis een smtp classe mailt heb je dit probleem niet..

Keizer
10/03/11, 18:34
Wij gebruiken ook altijd de SMTP ipv de mail() in php. Wij draaien SuPhp op de servers waardoor php draait als de eigen user. hierdoor kun je de "From" niet aanpassen ook al geef je die mee in de header bij gebruik van de mail() in php. Als je vis een smtp classe mailt heb je dit probleem niet..

Je kan het volgende toevoegen aan php.ini en het werkt weer


mail.force_extra_parameters = -f

vne
10/03/11, 19:54
en om het helemaal juist te doen stel je ook de 'envolope from' in... kans dat je mail bij junk geraakt bij hotmail en facebook slinkt enorm


mail('to@blah.com','subject!','body!','From: from@blah.com','-f from@blah.com');

(de laatste optie maakt het hem)