2009-09-04 174 views
0

我写了一个邮件功能的基本脚本。 我想通过WAMP服务器运行这个脚本。PHP邮件功能不起作用

<?php 
phpinfo(); 

$to = "[email protected]"; 
$subject = "Test mail"; 
$message = "Hello! This is a simple email message."; 
$from = "[email protected]"; 
$headers = "From: $from"; 
$res= mail($to,$subject,$message,$headers); 
echo " $res Mail Sent."; 
?> 

我已经设置了SMTP,sendmail_from在php.ini文件。 它给我下面的错误

警告:电子邮件()[function.mail]:无法连接在 到邮件服务器 “mucse409.eu.xyz.com” 端口25,验证 “SMTP” 和“ smtp_port“ 在php.ini中设置或在第9行的C:\ wamp \ www \ email.php中使用ini_set() 发送邮件。

我能够从我的机器ping到SMTP地址。请指导我。

+0

可能是邮件提供商阻止了您的请求。检查使用Gmail SMTP,因为据我所知,Gmail不会阻止你。 这里是Gmail的SMTP设置: smtp.gmail.com 端口:465或587 – Mohamed 2009-09-04 10:28:30

+0

其给予同样的错误 警告:电子邮件()[function.mail]:无法连接到邮件服务器在“smtp.gmail.com “端口465,请在php.ini中验证您的”SMTP“和”smtp_port“设置,或在第8行的C:\ wamp \ www \ email.php中使用ini_set() 发送邮件。 – Vidya 2009-09-04 10:42:38

回答

0

按照本教程中,我能够发送邮件link text。使用Gmail和PHPMailer的新的自动更新 发电机准备

发送电子邮件,它已经很长一段时间,因为OCRALight一直是这个 完成,点点已经被打磨的 更新产生。

这个过程是相当复杂的,它涉及反向工程, 数据挖掘,包装,配送,大量邻我们 蹩脚的Windows服务器是我,最后的Linux 解放之间的战斗。

路上的每一步都被自动化了,一个接一个,每个问题 已经解决和抛光了,现在最后一块是在他的位置, 自动生成电子邮件。现在将进行更新并每天发送 ,甚至周末和假期。

如果你有兴趣在技术方面继续阅读:

如何已经完成:

首先,你需要有PHP和OpenSSL的支持,为Windows 你需要安装PHP,并在 组件列表慎重选择OpenSSL的,如果你已经安装了PHP,不用担心一个 重新安装将让您的配置,你就可以选择 OpenSSL的。

然后下载PHPMailer,& nbsp;并将其解压缩到您的主文件php 附近。

你需要有一个Gmail帐号(显然)我建议你为此做一个新的,主要是因为配置需要 非常精确,而且你将无法自由使用它没有 失去功能或冒着破坏配置的风险。

配置您的Gmail帐户使用POP邮件,但不是IMAP,ONLY POP, 只是POP。

而现在的代码:

<?php 
require(”PHPMailer/class.phpmailer.php”); 
$update_emails = array(
    ‘Juan Perez’ => ‘[email protected]’, 
    ‘Francisco Garcia’ => ‘[email protected]’, 
    ‘Diana la del Tunel’ => ‘[email protected]’ 
); 

echo “\nSending Update Email\n”; 

$mail = new PHPMailer(); // Instantiate your new class 
$mail->IsSMTP();   // set mailer to use SMTP 
$mail->SMTPAuth = true; // turn on SMTP authentication 
$mail->Host = “smtp.gmail.com”; // specify main and backup server 
$mail->SMTPSecure= ’ssl’; // Used instead of TLS when only POP mail is selected 
$mail->Port = 465;  // Used instead of 587 when only POP mail is selected 

$mail->Username = “[email protected]”; // SMTP username, you could use your google apps address too. 
$mail->Password = “yaourextremelynotlamepassword”; // SMTP password 

$mail->From = “[email protected]”; //Aparently must be the same as the UserName 
$mail->FromName = “Your name”; 
$mail->Subject = ‘The subject’; 
$mail->Body = “The body of your message”; 

foreach ($update_emails as $name => $email) { 
    $mail->AddBcc($email, $name); 
} 

if(!$mail->Send()) 
{ 
    echo “There was an error sending the message:” . $mail->ErrorInfo; 
    exit; 
} 
echo “Done…\n”; 
?> 

在这段代码我发送电子邮件到一群人,所以我用的是 “密件抄送:”字段,而不是“要”一,添加一个“收件人:”你会使用 AddAddress($ email,$ name)。

一个可能的升级将是使用MySQL数据库来存储 地址,& NBSP;并提供一个网络界面来添加和删除它们。目前来看,这已经足够了。

请记住: PHP与OpenSSL; PHPMailer的;创建一个Gmail帐户;激活POP主机: smtp.gmail.com; SMTPAUTH = TRUE; SMTPSEcure = SSL;港口:465;拥有域名的用户; 密码; $ Mail- & gt; send();

0

你能也从本机发送邮件到使用一些邮件客户端,如MS Outlook或Mozilla Thunderbird此SMTP服务器?

我有一个问题,一旦我的供应商挡行驶在SMTP端口指向外面,由于病毒感染,而且我无法发送邮件,因为这个,但我可以ping通服务器和端口。

+0

我可以通过MS Outlook从同一个SMTP服务器发送。 – Vidya 2009-09-04 10:13:50

0

可能被防火墙等阻止。

看看你是否可以通过telnet打开端口25(如果你没有这个软件,你可以下载腻子)

+0

我无法打开我的SMTP服务器地址和smtp.gmail.com(端口465/587)。这是否意味着防火墙被阻止? – Vidya 2009-09-04 11:33:12

+0

是的,测试它是否为本地防火墙的简单方法是在其他系统上尝试该端口,并知道它是否已打开。 很可能是某种防火墙。查看计算机上的任何防火墙或防病毒类型程序,如果您在路由器后面,请查看路由器。 – JasonWoof 2009-09-04 12:30:53