从服务器php发送邮件

时间:2011-03-22 13:53:27

标签: php email

我正在尝试从我的服务器发送邮件,而不会在另一端收到垃圾邮件进入垃圾邮件文件夹。我做了我的研究,发现我应该尝试PHPMailer。

现在我已经用了整整一天的时间来爬网,试图找到解决这个问题的方法。我想使用谷歌免费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   = 'myadress@gmail.com'; // SMTP account username  
$mail->Password   = 'mypw'; 

$mail->SetFrom('myadress@gmail.com', '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("reciever@live.no", "Reciever Name");

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

所以这显然不起作用。我应该接受我的isp吗?或者我应该尝试别的吗?我真的需要能够发送电子邮件而不直接进入垃圾文件夹...

最好的问候, 亚历山大

4 个答案:

答案 0 :(得分:0)

您的邮件被“Spamassassins”等软件标记为垃圾邮件,有很多事情需要了解,根据上一版本的列表,您的邮件会被Spamassassin评级:SpamAssassin Tests

快速了解您的邮件被标记为垃圾邮件的原因。

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

答案 1 :(得分:0)

如果无法连接到SMTP,则可能与代码无关。事实上,从它的声音来看,你的代码正在尝试做它应该做的事情 - 只是失败。

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

您可以尝试使用PuTTy或类似工具直接访问邮件服务器,并输入一些SMTP命令以查看您收到的邮件。

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

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

答案 2 :(得分:0)

  

我正在尝试从我的服务器发送邮件,而不会在另一端收到垃圾邮件进入垃圾邮件文件夹。我做了我的研究,发现我应该尝试PHPMailer。

错误。你还没有正确地完成你的研究。

如果他们到远程端,那么你的代码没有任何本质上的错误。使用phpmailer()无济于事。使用不同的SMTP服务可能有所帮助 - 但无法帮助您了解此处的实际情况。

如何让远程系统不将您的电子邮件视为垃圾邮件的问题已在此处多次询问和回答:

  • 尝试阅读这些其他帖子的许多好答案
  • 没有明确的答案 - 有太多的因素,即使你确切知道它们是什么,你也无法解释所有这些因素
  • 您所能做的就是让您的电子邮件 less 像垃圾邮件一样
  • 这完全是关于电子邮件的内容以及电子邮件服务器/ DNS的配置方式

答案 3 :(得分:0)

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