在Ubuntu上使用PHP从本地主机发送Gmail邮件

4
我在多个帖子中搜索了但没有找到答案。大家都在使用Postfix。但是当我阅读https://help.ubuntu.com/community/Postfix上的文本时,我发现:
什么是邮件传输代理?
换句话说,它是一个邮件服务器而不是像Thunderbird、Evolution、Outlook、Eudora或基于Web的电子邮件服务(如Yahoo、GMail、Hotmail、Earthlink、Comcast、SBCGlobal.net、ATT.net等)那样的邮件客户端。如果你为名为Acme的公司拥有acme.com的电子邮件地址,则可以为员工提供@acme.com的电子邮件地址。员工可以通过您的计算机发送和接收电子邮件,但前提是必须始终运行您的计算机。如果您的所有电子邮件地址都在您不拥有(@gmail.com、@yahoo.com)或不托管(acme.com)的域中,则根本不需要此项。 正如最后一行所说,您无法将其用于gmail或yahoo使其从localhost工作..!
请问有人能告诉我如何在本地主机上使用gmail SMTP配置邮件服务器吗?我正在使用Ubuntu 14。
我之前尝试过的链接都没用,测试以下列出的链接期间没有错误或警告: https://askubuntu.com/questions/314664/sending-php-mail-from-localhost https://askubuntu.com/questions/228938/how-can-i-configure-postfix-to-send-all-email-through-my-gmail-account https://easyengine.io/tutorials/linux/ubuntu-postfix-gmail-smtp/ https://easyengine.io/tutorials/mail/postfix-debugging/
2个回答

29
请按照以下步骤通过Ubuntu/Linux上的localhost使用gmail发送邮件:
首先,在Linux/Ubuntu服务器上安装msmtp。
其次,由于Gmail使用https(超文本安全协议),您需要安装ca-certificates。
~$ sudo apt-get install msmtp ca-certificates

安装msmtp软件包需要几秒钟时间。
现在你需要使用gedit编辑器创建配置文件(msmtprc)。
~$ sudo gedit /etc/msmtprc

现在你需要将以下代码复制并粘贴到gedit中(使用上面的命令创建的文件)。
defaults
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt

account default
host smtp.gmail.com
port 587
auth on
user MY_GMAIL_ID@gmail.com
password MY_GMAIL_PASSSWORD
from MY_GMAIL_ID@gmail.com
logfile /var/log/msmtp.log

不要忘记在上面的代码行中用你的“gmail id”替换MY_GMAIL_ID,并用你的“gmail密码”替换MY_GMAIL_PASSSWORD
现在创建msmtp.log文件。
~$ sudo touch /var/log/msmtp.log

你必须将这个文件设为任何人都可以阅读的状态。
~$ sudo chmod 0644 /etc/msmtprc

现在将sendmail日志文件设置为可写入。
~$ sudo chmod 0777 /var/log/msmtp.log

您的Gmail SMTP配置已经准备就绪。现在请发送一封测试邮件。
~$ echo -e "Subject: Test Mail\r\n\r\nThis is my first test email." |msmtp --debug --from=default -t MY_GMAIL_ID@gmail.com

请查看您的Gmail收件箱。
现在如果你想从本地主机使用PHP发送电子邮件,请按照以下说明进行操作:
打开并编辑php.ini文件。
~$ sudo gedit /etc/php/7.0/apache2/php.ini

你需要在你的php.ini文件中设置sendmail_path。
使用以下命令检查你的SMTP路径:
~$ which msmtp 

你会得到像这样的 /usr/bin/msmtp
php.ini 中搜索 sendmail_path 并进行以下编辑。
; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
sendmail_path = /usr/bin/msmtp -t

请仔细检查第三行,确保在sendmail_path之前没有分号。
现在保存并退出gedit。现在是重新启动您的apache的时候了。
~$ sudo /etc/init.d/apache2 restart

现在创建一个带有邮件功能的php文件,链接为https://www.php.net/manual/en/function.mail.php
进行测试并享受吧!

6
如果您正在为自己的域名设置Gmail电子邮件,您需要启用“较不安全的应用程序”访问权限。登录到admin.google.com,启用安全性并允许用户管理其较不安全的应用程序设置。在accounts.google.com中,针对您想要发送电子邮件的用户,启用较不安全的应用程序。 - mate.gvo

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接