Vraag Hoe kan ik mijn PHP verzenden?


Ik heb Ubuntu 11.04, LAMP met tasksel geïnstalleerd.

Ik vind dat PHP mail() werkt niet.

Ik veronderstel dat ik het moet inschakelen of zoiets? Hoe doe ik dat?


69
2018-06-08 10:25


oorsprong


Dit is eenvoudig en gemakkelijk te verzenden vanuit uw gmail. kvcodes.com/2016/03/send-e-mail-localhost-ubuntu-php - Kvvaradha


antwoorden:


Uit de mailhandleiding van php:

Vereisten

Voor de mail-functies te zijn   beschikbaar, PHP vereist een geïnstalleerd   en werkend e-mailsysteem. Het programma   te gebruiken wordt gedefinieerd door de   configuratie-instellingen in php.ini   het dossier.

Dit betekent dat je een soort mailserver moet installeren en php moet configureren om het te gebruiken. Meestal is deze mailserver een postfix in Ubuntu. Echter - als de php-zijde die u codeert uiteindelijk wordt opgeslagen aan de kant van een hostingservice (bijvoorbeeld xmission), is een mailserver daar waarschijnlijk al geïnstalleerd. In dat geval test u uw site online in plaats van lokaal.

Als u het op uw eigen systeem moet testen of wilt organiseren op uw eigen homeserver, ga dan als volgt te werk:

Postfix installatie

Installatie: postfix  Install postfix / sudo apt-get install postfix Tijdens het proces wordt u gevraagd in welke modus u postfix wilt installeren. Er zijn vier mogelijke modi:

  • internet: Uw eigen mailserver.
  • Satelliet: Een externe e-mailprovider (bijvoorbeeld Google) wordt gebruikt voor het verzenden en ontvangen van e-mail. De server ontvangt geen e-mail.
  • smarthost: Mengsel tussen de twee. E-mail wordt lokaal opgeslagen, maar via een externe e-mailprovider verzonden.
  • Alleen lokaal: Zal ​​je niet bezighouden. Dat is een systeem intern mailserver. U kunt alleen e-mail verzenden van gebruiker naar gebruiker op het systeem.

De overige installeeropties hangen af ​​van uw keuze voor deze algemene configuratie.

Hoogstwaarschijnlijk kiest u voor een satellietinstallatie. Dat betekent dat e-mail wordt verzonden via een externe provider. Als smtp-server (uitgaande mailserver) zul je dan je leveranciers smtp moeten specificeren. De rest van de opties spreekt voor zich.

Installatie na installatie

De meeste smtp-servers vereisen een wachtwoordverificatie om e-mail te verzenden. Dus postfix moet dat wachtwoord weten. Er zijn ook zaken als codering om te overwegen (die u moet google). Dit is hoe je postfix configureert met behulp van wachtwoordverificatie (sasl):

  • Installeren libsasl2-modules  Install libsasl2-modules en sasl2-bin  Install sasl2-bin door op de pictogrammen van het softwarecentrum of de terminal te klikken met behulp van:

    sudo apt-get install libsasl2-2 libsasl2-modules sasl2-bin
    
  • Schakel sasl-auth in door deze regels aan toe te voegen /etc/postfix/main.cf

     # add to /etc/postfix/main.cf
     smtp_sasl_auth_enable = yes
     smtp_sasl_security_options = noplaintext noanonymous
     smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
    
  • Maak een bestand /etc/postfix/sasl_password met een regel als:

     smtp.gmail.com USERNAME@gmail.com:USERPASSWORD
    

    Vervang het eigenlijke wachtwoord, gebruikersnaam en smtp-adres.

  • Postfix bijwerken:

     sudo chmod 600 /etc/postfix/sasl_password # for safety of your smtp password
     sudo postmap hash:/etc/postfix/sasl_password 
     sudo postmap /etc/postfix/sender_canonical
     sudo /etc/init.d/postfix restart   
    

    Misschien moet je de 'permission denied' bug door chown postfix:postfix /etc/postfix vooraf.

Dit zou het in de meeste gevallen moeten doen. Toch vereisen sommige smtp-providers een specifiek adres als afzender of versleuteling.

Verwant: PEAR :: Mail interface kan ook interessant voor u zijn.

Gmail (en misschien andere services) vinden het misschien niet leuk dat je e-mail op deze manier probeert te verzenden omdat het onveilig zou zijn volgens hun normen, en zou je poging blokkeren, dwz er gebeurt niets op het scherm of ergens anders zal het hele proces blokkeren uw authenticatie. Je POP3 moet ook zijn ingeschakeld.

Om dat tegen te gaan, kijk hier. (Als je veilig wilt spelen, maak dan een dummy Gmail-account aan)


51
2018-06-08 11:33



Post verzenden vanuit Ubuntu (lokaal) werk. Maar wat als ik wil dat mijn Windows deze machine gebruikt om e-mail te verzenden (ook PHP)? Hoe configureer ik dat? - JM at Work
Ik weet niet zeker of ik de vraag krijg. Je kunt schuren vanaf je Ubuntu-machine. Wat u nu wilt doen is via deze Ubuntu-machine vanaf php naar uw Windows-pc verzenden? Is dat correct? - con-f-use
Nu het pakket libsasl2 bestaat niet Ik gebruik 11.04. Haar libsasl2-2 volgens bijgewerkt pakket .. - mythicalcoder


Zoals al eerder opgemerkt, zou postfix een overkill zijn als je alleen maar e-mails van php moet sturen terwijl je applicaties op je thuiscomputer ontwikkelt.

Ik gebruik persoonlijk zeer eenvoudige en lichtgewicht pakketsmps. Het zal elke smtp-server gebruiken om uitgaande e-mails te verzenden. Installeer het door te draaien:

sudo apt-get install ssmtp

Bewerk vervolgens /etc/ssmtp/ssmtp.conf bestand, commentaar op bestaande mailhub-regel en voeg de volgende regels toe (dit voorbeeld is voor gmail smtp-server):

mailhub=smtp.gmail.com:587
UseSTARTTLS=YES
AuthUser=<YOUR-EMAIL>@gmail.com
AuthPass=<YOUR-PASSWORD>

(Geef je gebruikersnaam en wachtwoord voor gmail op. Natuurlijk kun je elke andere SMTP-server gebruiken).

Zorg er nu voor dat je php.ini correct is sendmail_path. Het zou moeten lezen als:

sendmail_path = /usr/sbin/sendmail -t

(Uit opmerkingen van @ dima-l en @ omar-sabic: U hoeft niet op te geven ssmtp hier omdat de installatie een symlink had moeten maken /usr/sbin/sendmail, die correct verwijst naar ssmtp. Anders moet je specificeren sendmail_path = /usr/sbin/ssmtp -t)

Herlaad apache en uw php moet nu uitgaande e-mails kunnen verzenden.


59
2017-10-29 19:08



Ik denk dat je meende sendmail_path = /usr/sbin/ssmtp -t. Dit werkte, bedankt - Omer Sabic
ssmtp zou een symlink moeten maken voor /usr/sbin/sendmail, die correct naar ssmtp verwijst. Dus, met behulp van sendmail_path = /usr/sbin/sendmail -t zou ook moeten werken - Dima L.
Meer over configureren ssmtp (vond een aantal nuttige opmerkingen): PHP-mail instellen in Debian - deze vraag + deze link hielp bij het opzetten van het programma. - gskema
Voor Gmail moet u overwegen om uw Google-account zo in te stellen dat 'onveilige apps' kunnen werken. Zien support.google.com/accounts/answer/6010255 - aesede
Ik moest ook de volgende regel toevoegen: FromLineOverride=YES om de volgende fout te voorkomen: 550 5.7.60 SMTP; Client does not have permissions to send as this sender - Caumons


PHP vereist een SMTP-client om e-mail te verzenden. Je zou een volledig uitgeruste mail transfer agent (MTA) kunnen installeren zoals postfix om deze functie te vervullen, maar het is overdreven als je alleen maar e-mail moet verzenden via PHP. Installeer in plaats daarvan msmtp. Het is lichtgewicht en veel eenvoudiger om te configureren.

Installeer msmtp

sudo apt-get install msmtp-mta ca-certificates

Configureer het

Maak een nieuw configuratiebestand:

sudo vi /etc/msmtprc

... met de volgende configuratiegegevens:

# Set defaults.
defaults

# Enable or disable TLS/SSL encryption.
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt

# Set up a default account's settings.
account default
host <smtp.example.net>
port 587
auth on
user <username@example.net>
password <password>
from <address-to-receive-bounces@example.net>
syslog LOG_MAIL

U moet de configuratiegegevens vervangen door alles binnen "<" en ">" (inclusief, verwijder deze). Gebruik voor host / gebruikersnaam / wachtwoord uw normale inloggegevens voor het verzenden van e-mail via uw e-mailprovider.

Vertel PHP om het te gebruiken

sudo vi /etc/php5/apache2/php.ini

Voeg deze enkele regel toe:

sendmail_path = /usr/bin/msmtp -t

27
2018-04-29 19:19



Natuurlijk werkt 'sudo vi /etc/php5/conf.d' zonder php.ini niet. In mijn geval (Ubuntu) moest ik '/etc/php5/apache2/php.ini' bewerken en ook apache 'sudo /etc/init.d/apache2 reload' herstarten om te kunnen werken. - Dejan
BTW, je kunt je msmtprc config testen met behulp van: cat <<EOF | msmtp <receiver@test.com> Subject: test This is a test! EOF - Dejan
Zou leuk zijn, maar het werkt niet voor mij. Er verschijnt niets in zijn logboek. Het lijkt helemaal goed, maar geen dobbelstenen. - James T Snell
Om msmtp voor het hele systeem beschikbaar te maken, installeer "msmtp-mta". - colan
In het geval dat u een te letterlijke zoals ik in het volgen van instructies, bewaart u niet echt de <> haakjes in het configuratiebestand. Het kostte me een goede 20 minuten om dat uit te zoeken - de Raad


Moet een eenvoudige oplossing zijn. Je hoeft alleen maar Postfix te installeren die het e-mailen doet.

sudo apt-get install postfix

U wilt dat van een terminal (en niet van het softwarecentrum) laten lopen, omdat het u een paar instellingsvragen moet stellen. U zou moeten vinden om gewoon alle standaardinstellingen te accepteren (alleen lokaal, enz.).


3
2018-06-08 10:47





Dit is een oude vraag en er zijn bovenstaande goede antwoorden, maar ik had het nodig exim voor mijn omgeving. Bevestig ook dat je sendmail op de eerste plaats hebt geïnstalleerd ($ which sendmail - zou iets als / usr / sbin / sendmail moeten teruggeven). Ik vond een goede gids bij linode.com, maar de kern is:

apt-get install exim4-daemon-light mailutils

gevolgd door:

dpkg-reconfigure exim4-config

waarmee je naar een interactieve editor gaat.


2
2018-04-30 21:46





Goed antwoord, verwarren.

Ik heb één ding toe te voegen over het "dummy gmail-account":

Dit wordt ten zeerste aanbevolen omdat je je gmail-account moet configureren om minder veilige applicaties toe te staan: https://www.google.com/settings/u/0/security/lesssecureapps Anders krijg je de foutmelding "Log in met je webbrowser en probeer het opnieuw" in je /var/log/mail.log het dossier.

ook vond ik dat ik een time-outfout krijg tenzij ik het gmail smtp verdeel mijn wortelcertificaat. Om dit te doen:

sudo nano /etc/postfix/main.cf

voeg het volgende toe aan de onderkant van het bestand

smtp_tls_CAfile = /etc/postfix/cacert.pem

Kopieer vervolgens de thawte root cert naar de cacert.pem het dossier:

cat /etc/ssl/certs/thawte_Primary_Root_CA.pem | sudo tee -a /etc/postfix/cacert.pem

Hier is de link die ik heb gebruikt: Configureer Postfix om Gmail SMTP te gebruiken op Ubuntu | EasyEngine

Hopelijk bespaart dit iemand een paar haarzakjes ...


1
2018-05-25 17:12





Ik vond de oplossingen geleverd door Dima L. is de meest eenvoudige manier en lichtgewicht naar systeem.

Een kleine toevoeging voor meer duidelijkheid over het instellen. Je moet reageren hostname in /etc/ssmtp/ssmtp.conf het dossier. Het voorbeeld ssmtp.conf bestand is als volgt:

#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=postmaster

# The place where the mail goes. The actual machine name is required no 
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.yourdomain.com
UseSTARTTLS=YES
AuthUser=mail@yourdomain.com
AuthPass=YOUREMAILPASSWORD

# Where will the mail seem to come from?
#rewriteDomain=

# The full hostname
#hostname=

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES

0
2018-04-13 06:33