如果你在Asp.Net有一个需要偶尔发邮件的网站,可能代码长度类似如下:复制代码如下://这是短的,不是实际的项目代码public void send (string from,string to,string subject,string body){ var ms Gmail=new mail message(from,to,subject,body);msgMail。IsBodyHtml=truevar server=new SmtpClient(' localhost ');服务器。DeliveryMethod=SmtpDeliveryMethod。PickupDirectoryFromIis服务器。UseDefaultCredentials=true服务器。发送(MSGmail);}也许它曾经可以工作,但是当您切换到或最初部署到新的Windows 2008服务器时,您会遇到错误消息“无法获取IIS皮卡目录!”。现在,我经常称自己为世界上最强大的系统管理员。这不是我的研究方向。我不太擅长,但有时我必须在实际工作中面对和解决这些问题才能获得报酬。1)是否安装了SMTP服务?您的网络服务器可能尚未安装SMTP服务,因此请进入服务管理以确保SMTP服务在功能列表中。如果没有,需要添加。
2)是否配置了SMTP?仅确保安装了SMTP服务是不够的。首先,当你的服务器启动时(我遇到过一些情况,客户端软件可以在安装前发送邮件,但安装后就做不到了。他们重新启动了服务器,但是邮件服务没有启动,就这么简单),确保您的SMTP服务自动启动。输入服务,并确保SMTP服务在那里并已启动,并且启动类型为自动。
然后,您应该配置SMTP服务——。说实话,我对它了解不多,就不详细解释了,但是你需要知道,SMTP仍然是IIS6.0的一部分,所以你可以在IIS6.0的管理界面找到它,一个快速的突破点,因为它可能不满足某些接收邮件的服务器需要一个完整的限定域名的要求,你的服务器可能只有一个严格限制的简单域名,比如“Server15”, 因此,在SMTP属性中,在“传递”选项卡下,单击“添加”按钮,为服务器提供一个真正完整的、符合要求的域名。 3)防火墙打开了吗?您的某些操作可能与防火墙冲突,因此现在是排除SMTP安装故障的好时机。您可以通过Telnet通过端口25手动向自己发送一封简单的电子邮件。可以遵循以下示例。复制的代码如下: Telnet LocalHost 25 heloome Host.com邮件从:[电子邮件保护] RCPT到3360[电子邮件保护]。数据主题:邮件主题之类的消息正文点击回车键,您稍后将进入发件箱。如果连接不上或者邮件无法投递,这里还有一些其他的问题需要解决,因为防火墙不会影响到拣货目录的获取。4)IIS是否有权获取元数据(取件目录信息)在这里,我们会遇到实际的错误原因——你在网站上运行的程序可能无权获取保存取件目录名称的IIS元数据(元数据),这通常是错误的原因。您需要下载IIS 6.0资源包。有一个“metaacl.vbs”脚本,你需要,但我不需要。【点击我下载】下载安装,然后运行元数据库资源管理器(可以搜索一下,我的在“程序文件(x86) IIS资源元数据库资源管理器”目录下)。您应该在您的IIS进程中向SmtpSvc服务添加读取权限(我向IIS_IUSRS组添加了权限,并检查为您工作的人在配置中是否有权限)。
IIS是否有权限写入收件目录以下步骤只是补充,因为下次使用网站发送邮件时可能会遇到权限错误。此时,您需要为您的IIS用户添加对分拣目录的写访问权限(对我来说,我为“IIS_IUSES”添加了对分拣目录“c:inetpubmailroot”的写访问权限)。无论如何,对我来说都是管用的,但对任何服务器来说,可能都是因为我点击了一些在程序中起关键作用的神奇多选框,所以如果你还有疑问或者知道这些问题的答案,请放在评论里。正如我提到的,我可能修改了一些我没有注意到的地方,这样我就可以发送电子邮件了。如有不足,我会及时改正。