Pour que les fonctions de messagerie soient disponibles, PHP nécessite un système de messagerie installé et opérationnel. Le programme à utiliser est défini par les paramètres de configuration du fichier php.ini.
Cela signifie que vous devez installer une sorte de serveur de messagerie et configurer php pour l'utiliser. Habituellement, ce serveur de courrier est postfix dans Ubuntu. Cependant, si le côté php que vous codez finit par être stocké sur le service d'hébergement (par exemple, xmission), un serveur de messagerie y sera probablement déjà installé. Dans ce cas, il vous suffit de tester votre site en ligne plutôt que localement.
Si vous avez besoin de le tester sur votre propre système ou si vous voulez l'héberger sur votre propre serveur domestique, procédez comme suit:
Installation de Postfix
Installation: postfix / sudo apt-get install postfix
Au cours du processus, il vous sera demandé dans quel mode vous souhaitez installer postfix. Il y a quatre modes possibles:
Internet : Votre propre serveur de messagerie.
Satellite : Un fournisseur de messagerie externe (Google, par exemple) sera utilisé pour envoyer et recevoir du courrier. Le serveur ne recevra aucun courrier.
Smarthost : Mélange entre les deux. Le courrier est stocké localement mais envoyé via un fournisseur de messagerie externe.
Local uniquement : ne vous concernera pas. C'est un serveur de messagerie interne au système. Vous pouvez uniquement envoyer des messages d'un utilisateur à un autre sur le système.
Le reste des options d'installation dépend de votre choix pour cette configuration générale.
Très probablement, vous choisirez une installation par satellite. Cela signifie que le courrier sera envoyé à l'aide d'un fournisseur externe. En tant que serveur smtp (serveur de courrier sortant), vous devrez alors spécifier votre fournisseur smtp. Le reste des options est explicite.
Configuration post-installation
La plupart des serveurs smtp nécessitent une authentification par mot de passe pour envoyer un courrier. Postfix devra donc connaître ce mot de passe. En outre, il y a des choses comme le cryptage à considérer (que vous devrez google). Voici comment configurer postfix en utilisant l'authentification par mot de passe (sasl):
Installez
libsasl2-modules et
sasl2-bin
en cliquant sur les icônes du centre logiciel ou à partir du terminal à l'aide de:
Remplacez le mot de passe, le nom d'utilisateur et l'adresse smtp actuels.
Mise à jour de postfix:
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
Vous devrez peut-être contourner le bogue 'autorisation refusée' au chown postfix:postfix /etc/postfixpréalable.
Cela devrait le faire dans la plupart des cas. Pourtant, certains fournisseurs smtp nécessitent une adresse spécifique en tant qu’expéditeur ou chiffrement.
Connexe: L' interface PEAR :: Mail peut également vous intéresser.
Gmail (et peut-être d’autres services) n’aimeront peut-être pas que vous tentiez d’envoyer du courrier de cette façon, car cela pourrait être considéré comme peu sûr selon leurs normes, et cela bloquerait votre tentative, c’est-à-dire que rien ne se passerait à l’écran ou que tout le processus bloquerait votre authentification. De plus, votre POP3 doit être activé.
Pour contrer cela, voir ici. (Si vous voulez être du bon côté, créez un compte Gmail factice)
L'envoi de courrier depuis Ubuntu (local) fonctionne. Mais que faire si je veux que Windows utilise cette machine pour envoyer des mails (PHP également)? Comment puis-je configurer cela?
JM au travail
Pas sûr que je reçois la question. Vous pouvez poncer depuis votre machine Ubuntu. Maintenant, ce que vous voulez faire est d’envoyer du mal via cette machine Ubuntu à partir de votre PC Windows via php? Est-ce exact?
con-f-use
2
Maintenant, le paquet libsasl2 n'existe pas. J'utilise 11.04. Son libsasl2-2 selon le paquet mis à jour ..
mythicalcoder
61
Comme déjà noté, postfix serait une overkill si vous avez juste besoin d'envoyer des emails à partir de php lors du développement d'applications sur votre ordinateur à la maison.
Personnellement, j'utilise le paquet ssmtp très simple et léger. Il utilisera n'importe quel serveur smtp pour envoyer des emails sortants. Installez-le en exécutant:
sudo apt-get install ssmtp
Ensuite, éditez le /etc/ssmtp/ssmtp.conffichier, commentez la ligne mailhub existante et ajoutez les lignes suivantes (cet exemple concerne le serveur gmail smtp):
(Indiquez votre nom d'utilisateur et votre mot de passe gmail. Vous pouvez bien entendu utiliser n'importe quel autre serveur SMTP).
Maintenant, assurez-vous que votre php.ini est correct sendmail_path. Il devrait se lire comme suit:
sendmail_path = /usr/sbin/sendmail -t
( D'après les commentaires de @ dima-l et @ omar-sabic : vous n'avez pas à spécifier ssmtpici, car l'installation aurait dû créer un lien symbolique pour /usr/sbin/sendmail, qui pointe correctement ssmtp. Sinon, vous devez spécifier sendmail_path = /usr/sbin/ssmtp -t)
Rechargez apache et votre php devrait pouvoir envoyer des emails sortants maintenant.
Je pense que tu voulais dire sendmail_path = /usr/sbin/ssmtp -t. Cela a fonctionné, merci
Omer Sabic
1
ssmtp devrait créer un lien symbolique pour /usr/sbin/sendmail, qui pointe correctement vers ssmtp. Donc, utiliser sendmail_path = /usr/sbin/sendmail -tdevrait aussi marcher
Dima L.
2
Pour en savoir plus sur la configuration ssmtp(quelques notes utiles ont été trouvées): Comment configurer le courrier PHP dans Debian - cette question + ce lien vous ont aidé à configurer le programme.
Gskema
1
Pour Gmail, vous devez configurer votre compte Google afin de permettre aux "applications non protégées" de fonctionner. Voir support.google.com/accounts/answer/6010255
aesede
1
J'ai également dû ajouter la ligne suivante: FromLineOverride=YESafin d'éviter l'erreur suivante:550 5.7.60 SMTP; Client does not have permissions to send as this sender
Caumons
29
PHP nécessite un client SMTP pour envoyer du courrier. Vous pouvez installer un agent de transfert de courrier (MTA) complet, tel que Postfix, pour remplir cette fonction, mais c'est excessif si vous n'avez besoin d'envoyer que des messages via PHP. Au lieu de cela, installez msmtp . C'est léger et beaucoup plus simple à configurer.
Installer msmtp
sudo apt-get install msmtp-mta ca-certificates
Le configurer
Créez un nouveau fichier de configuration:
sudo vi /etc/msmtprc
... avec les informations de configuration suivantes:
# 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 <[email protected]>
password <password>
from <[email protected]>
syslog LOG_MAIL
Vous devez remplacer les données de configuration représentées par tout ce qui est compris entre "<" et ">" (inclus, supprimez-les). Pour hôte / nom d'utilisateur / mot de passe, utilisez vos informations d'identification habituelles pour l'envoi de courrier via votre fournisseur de messagerie.
Bien sûr, 'sudo vi /etc/php5/conf.d' sans php.ini ne fonctionnera pas. Dans mon cas (Ubuntu), je devais éditer '/etc/php5/apache2/php.ini' et redémarrer apache 'sudo /etc/init.d/apache2 reload' pour que cela fonctionne.
Dejan
1
Par ailleurs, vous pouvez tester votre configuration msmtprc en utilisant:cat <<EOF | msmtp <[email protected]> Subject: test This is a test! EOF
Dejan
Ce serait bien, mais ça ne marche pas pour moi. Rien ne figure dans son journal. Cela semble tout à fait bien, mais pas de dés.
James T Snell
2
Pour rendre msmtp disponible sur l'ensemble du système, installez "msmtp-mta".
Colan
1
Au cas où vous seriez trop littéral comme moi dans les instructions suivantes, vous ne conserverez pas les crochets <> dans le fichier de configuration. Cela m'a pris 20 bonnes minutes pour comprendre cela
de Raad
4
Devrait être une solution simple. Vous avez juste besoin d'installer Postfix, qui effectue le mailing proprement dit.
sudo apt-get install postfix
Vous voulez exécuter cela à partir d'un terminal (et non du centre logiciel) car il doit vous poser quelques questions de configuration. Vous devriez être trouvé à accepter uniquement tous les paramètres par défaut (local uniquement, etc.).
C'est une vieille question et il y a des réponses dignes, mais j'avais besoin eximde mon environnement. Vérifiez également que vous avez installé sendmail en premier lieu ( $ which sendmail- devrait renvoyer quelque chose comme / usr / sbin / sendmail). J'ai trouvé un bon guide sur linode.com , mais l'essentiel est:
J'ai une chose à ajouter à propos du "compte factice gmail":
Ceci est vivement recommandé car vous devez configurer votre compte gmail pour autoriser les applications moins sécurisées: https://www.google.com/settings/u/0/security/lesssecureapps.
Sinon, vous obtiendrez un message "connectez-vous à l'aide de votre navigateur Web. puis réessayez "erreur dans votre /var/log/mail.logfichier.
De plus, j’ai constaté une erreur de dépassement de délai sauf si j’envoie un certificat racine à gmail smtp. Pour faire ça:
sudo nano /etc/postfix/main.cf
ajoutez ce qui suit au bas du fichier
smtp_tls_CAfile = /etc/postfix/cacert.pem
Copiez ensuite le certificat racine thawte dans le cacert.pemfichier:
cat /etc/ssl/certs/thawte_Primary_Root_CA.pem | sudo tee -a /etc/postfix/cacert.pem
J'ai trouvé que les solutions fournies par Dima L. étaient le moyen le plus simple et le plus léger pour le système.
Juste quelques ajouts pour plus de clarté sur le réglage. Vous devriez commenter hostnamedans le /etc/ssmtp/ssmtp.conffichier. Le ssmtp.conffichier exemple est comme ci-dessous:
#
# 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
[email protected]
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
Réponses:
Du manuel de mail de php:
Cela signifie que vous devez installer une sorte de serveur de messagerie et configurer php pour l'utiliser. Habituellement, ce serveur de courrier est postfix dans Ubuntu. Cependant, si le côté php que vous codez finit par être stocké sur le service d'hébergement (par exemple, xmission), un serveur de messagerie y sera probablement déjà installé. Dans ce cas, il vous suffit de tester votre site en ligne plutôt que localement.
Si vous avez besoin de le tester sur votre propre système ou si vous voulez l'héberger sur votre propre serveur domestique, procédez comme suit:
Installation de Postfix
Installation: postfix /
sudo apt-get install postfix
Au cours du processus, il vous sera demandé dans quel mode vous souhaitez installer postfix. Il y a quatre modes possibles:Le reste des options d'installation dépend de votre choix pour cette configuration générale.
Très probablement, vous choisirez une installation par satellite. Cela signifie que le courrier sera envoyé à l'aide d'un fournisseur externe. En tant que serveur smtp (serveur de courrier sortant), vous devrez alors spécifier votre fournisseur smtp. Le reste des options est explicite.
Configuration post-installation
La plupart des serveurs smtp nécessitent une authentification par mot de passe pour envoyer un courrier. Postfix devra donc connaître ce mot de passe. En outre, il y a des choses comme le cryptage à considérer (que vous devrez google). Voici comment configurer postfix en utilisant l'authentification par mot de passe (sasl):
Installez libsasl2-modules et sasl2-bin en cliquant sur les icônes du centre logiciel ou à partir du terminal à l'aide de:
Activez sasl-auth en ajoutant ces lignes à
/etc/postfix/main.cf
Créez un fichier
/etc/postfix/sasl_password
avec une ligne comme:Remplacez le mot de passe, le nom d'utilisateur et l'adresse smtp actuels.
Mise à jour de postfix:
Vous devrez peut-être contourner le bogue 'autorisation refusée' au
chown postfix:postfix /etc/postfix
préalable.Cela devrait le faire dans la plupart des cas. Pourtant, certains fournisseurs smtp nécessitent une adresse spécifique en tant qu’expéditeur ou chiffrement.
Connexe: L' interface PEAR :: Mail peut également vous intéresser.
Gmail (et peut-être d’autres services) n’aimeront peut-être pas que vous tentiez d’envoyer du courrier de cette façon, car cela pourrait être considéré comme peu sûr selon leurs normes, et cela bloquerait votre tentative, c’est-à-dire que rien ne se passerait à l’écran ou que tout le processus bloquerait votre authentification. De plus, votre POP3 doit être activé.
Pour contrer cela, voir ici. (Si vous voulez être du bon côté, créez un compte Gmail factice)
la source
Comme déjà noté, postfix serait une overkill si vous avez juste besoin d'envoyer des emails à partir de php lors du développement d'applications sur votre ordinateur à la maison.
Personnellement, j'utilise le paquet ssmtp très simple et léger. Il utilisera n'importe quel serveur smtp pour envoyer des emails sortants. Installez-le en exécutant:
Ensuite, éditez le
/etc/ssmtp/ssmtp.conf
fichier, commentez la ligne mailhub existante et ajoutez les lignes suivantes (cet exemple concerne le serveur gmail smtp):(Indiquez votre nom d'utilisateur et votre mot de passe gmail. Vous pouvez bien entendu utiliser n'importe quel autre serveur SMTP).
Maintenant, assurez-vous que votre php.ini est correct
sendmail_path
. Il devrait se lire comme suit:( D'après les commentaires de @ dima-l et @ omar-sabic : vous n'avez pas à spécifier
ssmtp
ici, car l'installation aurait dû créer un lien symbolique pour/usr/sbin/sendmail
, qui pointe correctementssmtp
. Sinon, vous devez spécifiersendmail_path = /usr/sbin/ssmtp -t
)Rechargez apache et votre php devrait pouvoir envoyer des emails sortants maintenant.
la source
sendmail_path = /usr/sbin/ssmtp -t
. Cela a fonctionné, merci/usr/sbin/sendmail
, qui pointe correctement vers ssmtp. Donc, utilisersendmail_path = /usr/sbin/sendmail -t
devrait aussi marcherssmtp
(quelques notes utiles ont été trouvées): Comment configurer le courrier PHP dans Debian - cette question + ce lien vous ont aidé à configurer le programme.FromLineOverride=YES
afin d'éviter l'erreur suivante:550 5.7.60 SMTP; Client does not have permissions to send as this sender
PHP nécessite un client SMTP pour envoyer du courrier. Vous pouvez installer un agent de transfert de courrier (MTA) complet, tel que Postfix, pour remplir cette fonction, mais c'est excessif si vous n'avez besoin d'envoyer que des messages via PHP. Au lieu de cela, installez msmtp . C'est léger et beaucoup plus simple à configurer.
Installer msmtp
Le configurer
Créez un nouveau fichier de configuration:
... avec les informations de configuration suivantes:
Vous devez remplacer les données de configuration représentées par tout ce qui est compris entre "<" et ">" (inclus, supprimez-les). Pour hôte / nom d'utilisateur / mot de passe, utilisez vos informations d'identification habituelles pour l'envoi de courrier via votre fournisseur de messagerie.
Dites à PHP de l'utiliser
Ajouter cette seule ligne:
la source
cat <<EOF | msmtp <[email protected]> Subject: test This is a test! EOF
Devrait être une solution simple. Vous avez juste besoin d'installer Postfix, qui effectue le mailing proprement dit.
Vous voulez exécuter cela à partir d'un terminal (et non du centre logiciel) car il doit vous poser quelques questions de configuration. Vous devriez être trouvé à accepter uniquement tous les paramètres par défaut (local uniquement, etc.).
la source
C'est une vieille question et il y a des réponses dignes, mais j'avais besoin
exim
de mon environnement. Vérifiez également que vous avez installé sendmail en premier lieu ($ which sendmail
- devrait renvoyer quelque chose comme / usr / sbin / sendmail). J'ai trouvé un bon guide sur linode.com , mais l'essentiel est:suivi par:
qui vous mènera à un éditeur interactif.
la source
Grande réponse , con-f-use.
J'ai une chose à ajouter à propos du "compte factice gmail":
Ceci est vivement recommandé car vous devez configurer votre compte gmail pour autoriser les applications moins sécurisées: https://www.google.com/settings/u/0/security/lesssecureapps. Sinon, vous obtiendrez un message "connectez-vous à l'aide de votre navigateur Web. puis réessayez "erreur dans votre
/var/log/mail.log
fichier.De plus, j’ai constaté une erreur de dépassement de délai sauf si j’envoie un certificat racine à gmail smtp. Pour faire ça:
ajoutez ce qui suit au bas du fichier
Copiez ensuite le certificat racine thawte dans le
cacert.pem
fichier:Voici le lien que j'ai utilisé: Configurer Postfix pour utiliser Gmail SMTP sur Ubuntu | EasyEngine
Espérons que cela épargnera à quelqu'un quelques follicules pileux ...
la source
J'ai trouvé que les solutions fournies par Dima L. étaient le moyen le plus simple et le plus léger pour le système.
Juste quelques ajouts pour plus de clarté sur le réglage. Vous devriez commenter
hostname
dans le/etc/ssmtp/ssmtp.conf
fichier. Lessmtp.conf
fichier exemple est comme ci-dessous:la source