2012-11-09 76 views
0

我尝试从本地主机发送邮件,但它不能正常工作。下面给出我的代码。请看下面的代码,并请告诉实际问题是什么。由于无法从本地主机发送SMTP邮件()

邮件功能我用 - >

[mail function] 
; For Win32 only. 
; http://php.net/smtp 
SMTP = SMTP 
; http://php.net/smtp-port 
smtp_port = 25 

; For Win32 only. 
; http://php.net/sendmail-from 
;sendmail_from = NULL 

; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). 
; http://php.net/sendmail-path 
;sendmail_path = NULL 

; Force the addition of the specified parameters to be passed as extra parameters 
; to the sendmail binary. These parameters will always replace the value of 
; the 5th parameter to mail(), even in safe mode. 
;mail.force_extra_parameters = NULL 

; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename 
mail.add_x_header = Off 

; Log all mail() calls including the full path of the script, line #, to address and headers 
mail.log = "D:\xampp\apache\logs\php_mail.log" 

PHP代码中使用 - >

<?php 
$to = "[email protected], [email protected]"; 
$subject = "HTML email"; 

$message = " 
<html> 
<head> 
<title>HTML email</title> 
</head> 
<body> 
<p>This email contains HTML Tags!</p> 
<table> 
<tr> 
<th>Firstname</th> 
<th>Lastname</th> 
</tr> 
<tr> 
<td>John</td> 
<td>Doe</td> 
</tr> 
</table> 
</body> 
</html> 
"; 

// Always set content-type when sending HTML email 
$headers = "MIME-Version: 1.0" . "\r\n"; 
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n"; 

// More headers 
$headers .= 'From: <[email protected]>' . "\r\n"; 
$headers .= 'Cc: mybo[email protected]' . "\r\n"; 

mail($to,$subject,$message,$headers); 
?> 

得到错误当执行PHP代码上文>

Warning: mail() [function.mail]: Failed to connect to mailserver at "SMTP" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in D:\xampp\htdocs\mail.php on line 43 

在此先感谢。

+1

您使用的是什么localhost程序?例如WAMP,XAMPP或本地VM? – Jelmer

+0

我使用了XAMPP服务器。 – Vaibhav

+0

您需要指定SMTP服务器的域或IP地址。在您的php.ini文件中是“SMTP”对实际设置的本地SMTP服务器的引用?如果没有,您需要安装并设置SMTP服务器。您可以从网上下载免费的SMTP服务器。 –

回答

3

还有就是你的SMTP端口25上运行,您可以使用自带的IIS SMTP服务器,或者您可以使用类似http://www.xmailserver.org/http://www.hmailserver.com

服务器管理器>功能(不角色)>没有邮件服务器右对齐单击添加> SMTP服务器 - 然后将IIS 7 SMTP配置为指向本地服务器。

+0

我必须先安装邮件程序。 – Vaibhav

+1

是的,您需要先安装邮件程序才能发送邮件。正如Imran Azad在评论中所建议的那样,XAMPP附带了一个您可以使用的SMTP服务器, – ajtrichards

+0

ok谢谢您宝贵的建议。 – Vaibhav

0

下面是一个简单的python脚本,它可以让你在本地主机上运行一个邮件服务器,你不需要在php.ini中改变任何东西。

import smtpd 

import smtplib 

import asyncore 

class SMTPServer(smtpd.SMTPServer): 

    def __init__(*args, **kwargs): 
     print "Running smtp server on port 25" 
     smtpd.SMTPServer.__init__(*args, **kwargs) 

    def process_message(*args, **kwargs): 
     to = args[3][0] 
     msg = args[4] 
     gmail_user = 'yourgmailhere' 
     gmail_pwd = 'yourgmailpassword' 
     smtpserver = smtplib.SMTP("smtp.gmail.com",587) 
     smtpserver.ehlo() 
     smtpserver.starttls() 
     smtpserver.ehlo 
     smtpserver.login(gmail_user, gmail_pwd) 
     smtpserver.sendmail(gmail_user, to, msg) 
     print 'sent to '+to 
     pass 
if __name__ == "__main__": 
    smtp_server = SMTPServer(('localhost', 25), None) 
    try: 
     asyncore.loop() 
    except KeyboardInterrupt: 
     smtp_server.close() 

#end of code 

注:我用ARGS [3] [0]和args [4]如,以处理和消息作为()由我的PHP邮件发送的ARGS对应成参数的阵列[3] [0]作为接收邮件

相关问题