从服务器发送邮件php

问题描述:

我试图从我的服务器发送邮件,而他们没有进入垃圾文件夹时收到的另一端。我做了我的研究,发现我应该试用PHPMailer。从服务器发送邮件php

现在我已经用了整整两天的时间来浏览互联网,试图找出解决这个问题的办法。我想使用Google免费SMTP服务发送电子邮件。但不能让这个工作。

我得到的只是错误消息:无法连接到SMTP主机 在我实际得到错误消息之前,大约需要15秒。

据谷歌称这是怎么了,我应该设定我的设置:

http://mail.google.com/support/bin/answer.py?answer=13287

这是我的代码:(同其他10个指引/教程我已经找到)

header('Content-Type: text/html; charset=utf-8'); 

require_once('../class.phpmailer.php'); 
require_once('../class.smtp.php'); 

$mail = new PHPMailer(); 

$body    = file_get_contents('contents.html'); 
$body    = eregi_replace("[\]",'',$body); 

$mail->IsSMTP();       // telling the class to use SMTP 
$mail->Host  = "smtp.gmail.com";  // SMTP server 
$mail->SMTPDebug = 2;      // enables SMTP debug information (for testing) 

$mail->SMTPSecure = 'ssl'; 
$mail->Port = 465; 
$mail->SMTPKeepAlive = true; 
$mail->SMTPAuth = true; // enable SMTP authentication 
$mail->CharSet = 'utf-8'; 

$mail->Username = '[email protected]'; // SMTP account username 
$mail->Password = 'mypw'; 

$mail->SetFrom('[email protected]', 'My name'); 
$mail->Subject = "PHPMailer Test Subject via smtp, basic with authentication"; 
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; 

$mail->MsgHTML($body); 

$mail->AddAddress("[email protected]", "Reciever Name"); 

if(!$mail->Send()) { 
    echo "Mailer Error: " . $mail->ErrorInfo; 
} else { 
    echo "Message sent!"; 
} 

所以这显然不起作用。我应该接触我的isp吗?或者我应该尝试其他的东西?我真的需要能够发送电子邮件,而不他们直行到垃圾邮件文件夹...

最好的问候, 亚历山大

+0

许多ISP阻止访问外部SMTP服务器作为垃圾邮件防范措施。您可以使用普通邮件客户端从运行此脚本的任何地方向Gmail帐户发送邮件吗? – 2011-03-22 14:31:58

我试图从我的服务器发出邮件,而他们没有进入垃圾文件夹,当收到另一端。我做了我的研究,发现我应该试用PHPMailer。

错。你没有做好你的研究。

如果它们远到远端,那么代码没有任何内在错误。使用phpmailer()不会有帮助。使用不同的SMTP服务可能会有所帮助,但这并不能帮助您理解这里发生的事情。

如何获取远程系统无法处理您的电子邮件为垃圾邮件已被要求在这里回答了无数次的问题:

  • 尝试读一些很多很好的答案,这些其他职位
  • 有没有明确的答案 - 有太多的因素,即使你知道他们究竟是你无法解释他们都
  • 所有你能做的就是让你的邮件看起来像垃圾邮件
  • 这是关于te电子邮件的内容以及电子邮件服务器/ DNS配置的方式

您的邮件,如“Spamassassins”标记为垃圾邮件的软件,还有很多事情要知道,根据最新版本的列表,您的消息被评为Spamassassin:SpamAssassin Tests

看一看,你会很容易理解为什么你的邮件被标记为垃圾邮件。

您到达的分数越高,被标记为垃圾邮件的概率越高,尝试以纯文本形式发送。

如果您无法连接到SMTP,它可能根本不是代码相关的。事实上,从它的声音来看,你的代码正在尽力去做它应该做的 - 只是失败。

您的服务器可以通过您机器或网络上的任何防火墙访问端口465上的smtp.gmail.com吗?是否允许在另一端? (Google允许这种访问吗?)

您可以尝试使用PuTTy或类似的方法直接访问邮件服务器,然后键入一些SMTP命令以查看您收到的邮件。

如果你有一个本地邮件服务器正在运行,我会试着用它发送一些消息并从那里开始工作。

一旦你真的可以发送电子邮件,正如其他答案中提到的那样 - 你可以开始担心被服务器接受而不被视为垃圾邮件!

这听起来像您的问题与反垃圾邮件处理无关,而是无法实际连接到Google SMTP服务器。这就是我关注的重点。答复中的长时间延迟通常会导致我查出可能的DNS问题,作为故障排除的第一步。你能够从你的服务器ping smtp.gmail.com吗?如果主机名由DNS解析并得到响应,则检查出站端口465是否在防火墙处被阻塞。