在共享主机上使用Laravel发送邮件

3

我正在尝试从我的网站发送邮件。

我使用的是Laravel 5.5和hostnet.nl的共享托管。

我非常确定我所有的配置都是正确的。

我的.env文件:

MAIL_DRIVER=mail
MAIL_HOST=smtp02.hostnet.nl
MAIL_PORT=587
MAIL_USERNAME=username
MAIL_PASSWORD=password
MAIL_ENCRYPTION=TLS

但是每当我尝试发送邮件时,总是返回以下信息:

哎呀,出现了一个错误:

proc_open()由于安全原因已被禁用 我已经与托管公司进行了交谈,他们说这不是允许更改的php设置。所以我无法启用它。

当我尝试设置MAIL_DRIVER=smtp时,它会显示连接被拒绝。

我在此共享托管上还有另一个laravel安装/网站,它具有相同的MAIL_DRIVER=mail,并且运行完美。

这个安装程序是在laravel 5.2.*上进行的。

这是从laravel 5.2到5.5中swiftmailer内部发生的变化吗?

我不知道如何解决这个问题。

任何帮助都将不胜感激。


“连接被拒绝”是一个网络级别的错误。这可能是由于服务器主机地址不正确,或者您的共享托管提供商明确地防火墙了您的数据包所致。根据此端口检查器,您提供的主机已经打开并监听587端口,即SMTP端口。您可能无法使用此共享托管提供商来满足您的需求。 - Matt Clark
有时共享主机可能需要额外的字段。最好将MAIL_FROM_ADDRESS和MAIL_FROM_NAME字段添加到.env配置中。 - JanuszO
1个回答

10

你应该尝试更改这个:

MAIL_DRIVER=mail

Laravel的邮件服务(Laravel 5.5)没有"mail"驱动程序,如果凭据不正确,则可能会遇到与"smtp"相关的问题。我认为当设置了"mail"驱动程序时,Laravel 5.2可能使用php内置的"mail()"函数,在某些共享主机上可以工作但在其他主机上可能会失败。

大多数共享主机提供商允许通过默认服务器"sendmail"发送邮件,因此您也可以尝试这种方式:

MAIL_DRIVER=sendmail

如果你无法让“sendmail”或“smtp”正常工作,可以尝试使用“mailgun”或其他外部邮件服务提供商。例如,Mailgun每月提供1万封免费邮件,因此您不需要任何付费订阅,并且设置教程非常简单,此外,您还拥有监视已发送邮件的强大工具。


1
谢谢您的回答。Mailgun宣传每月提供10,000封免费电子邮件,但前提是您必须提供信用卡信息,这是我不想做的事情。顺便说一下,sendmail邮件驱动程序返回相同的错误信息:proc_open()已被禁用以确保安全性。我也无法让SMTP工作,尽管我百分之百确定我的信息是正确的。我现在束手无策。 - Rubberduck1337106092
如果这个不起作用,你仍然有其他几个选择: https://laravel.com/docs/5.5/mail - Trouble
非常感谢 @Kristian Lilov。你救了我的一天!我已经在A2hosting上托管了。你的解决方案对我很有用。 - Vishwa

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