从PHP发送SMTP电子邮件

I'm a bit stuck here. I have some websites hosted on TSOHosts. I use the php mail() function to send the occassional email, e.g. from a contact form. The emails have stopped working, and nobody at the hosting provider seems to be capable of fixing it. They say I should use SMTP emails. OK, I get that, they point me to this article on how to do it: https://www.lifewire.com/send-email-from-php-script-using-smtp-authentication-and-ssl-1171197

So I write the script (below) and, it doesnt work:

require_once "Mail.php";
$from = "NoReply@mysite.org.uk";
$to = "me@myemailaddress.co.uk";
$subject = "Hi port 465";
$body = "Hello World";
$host = "ssl://mail3.gridhost.co.uk";
$port = "465";
$username = "username@mysite.org.uk;
$password = "Testing123";

$headers = array (
'From' => $from,
'To' => $to,
'Subject' => $subject);

$smtp = Mail::factory('smtp',
array ('host' => $host,
'port' => $port,
'auth' => true,
'username' => $username,
'password' => $password));
$mail = $smtp->send($to, $headers, $body);

if (PEAR::isError($mail))
{
echo "<p>".$mail->getMessage()."</p>";
}
else
{
echo"<p>Message successfully sent!</p>";
}

I also have a port 25, non-ssl script, that also doesnt work. When I say doesnt work, its not throwing an error, just no email arrives (checked in spam).

The hosting company first asked me where the Mail.php is as referred to by the require_once "Mail.php" line The article suggests that this should be installed on php4+ (Im using 5.6.37)

This is remarkably similar to this article: smtp configuration for php mail

But I am stummped as to how to proceed.

展开翻译

译文

我有点卡在这里。 我在TSOHosts上托管了一些网站。 我使用php mail()函数发送偶尔的电子邮件,例如 来自联系表格。
电子邮件已停止工作,托管服务提供商的任何人似乎都无法修复它。
他们说我应该使用SMTP电子邮件。 好的,我明白了,他们指的是如何做到这篇文章:
https://www.lifewire.com/send-email-from-php-script-using-smtp-authentication-and-ssl-1171197 < / p>

所以我编写了脚本(如下所示),它不起作用:</ p>

  require_once“Mail.php”; 
$ from from = “NoReply@mysite.org.uk”;
$ to =“me@myemailaddress.co.uk”;
$ subject =“Hi port 465”;
$ body =“Hello World”;
$ host =“ssl://mail3.gridhost.co.uk”;
$ port =“465”;
$ username =“username@mysite.org.uk;
$ password =”Testing123“;
\ n $ headers = array(
'From'=&gt; $ from,
'To'=&gt; $ to,
'Subject'=&gt; $ subject);

$ smtp = Mail :: factory('smtp',
array('host'=&gt; $ host,
'port'=&gt; $ port,
'auth'=&gt; true,
'username'=&gt; $ username,

'password'=&gt; $ password));
$ mail = $ smtp-&gt; send($ to,$ headers,$ body);

if(PEAR :: isError($ mail))\ n {
echo“&lt; p&gt;”。$ mail-&gt; getMessa ge()。“&lt; / p&gt;”;
}
else
{
echo“&lt; p&gt;消息已成功发送!&lt; / p&gt;”;
}
</ code> </ pre >

我还有一个端口25,非ssl脚本,也不起作用。
当我说不工作时,它不会抛出错误,只是没有电子邮件到达(检查垃圾邮件)。</ p>

托管公司首先问我在哪里发送了mail_php,这是由require_once“Mail.php”行引用的
文章建议这应该安装在php4 +上(我使用的是5.6.37) )</ p>

这与本文非常相似:
用于php邮件的smtp配置 </ p>

但我很沮丧如何继续。</ p>
</ div>

douyu2817
douyu2817 我偶然发现了原因。我使用脚本中的$username和$password登录了托管公司提供的webmail客户端,正如我所料,我收到了收件箱,但我现在看到的是一些路由故障。事实证明,我试图使用的$to地址是使用转发器,例如me@mydomain.com>myactualemail@gmail.com。当我把$地址更改为myactualemail@gmail.com时,它第一次工作!我希望这种见解可以帮助别人。
10 个月之前 回复
doujia4041
doujia4041 是的我在主机上有一个实际的电子邮件帐户,该帐户适用于我使用的$username和$password。
10 个月之前 回复
dqellle310167
dqellle310167 缺少引用是我编辑脚本以删除真实地址等时的错误。
10 个月之前 回复
dppb79372
dppb79372 您错过了电子邮件地址第8行的结束报价。
10 个月之前 回复
douzhenchun6782
douzhenchun6782 您是否在NoReply@mysite.org.uk上有电子邮件地址?请记住,这必须是主机上的电子邮件帐户。
10 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!