这两天做了一个小project,大致是一个server监控系统,如果发现某部server有异常,发送email到相关手机,以便在非工作时间和节假日也能及时知道系统故障。
其中一个功能就是发送email。程序是这样的:
mymailmsg.to = "888888888@mobile.att.net";
mymailmsg.from = "support@medicalit.net";
mymailmsg.subject = "server down";
mymailmsg.body = "please call starlan to chen database server";
mymailmsg.bodyformat = mailformat.text;
smtpmail.smtpserver="localhost";
smtpmail.send(mymailmsg);
本来是用外部的smtp server
smtpmail.smtpserver="smtp.xxx.com";
但后来发现由于data center的firewall原因,改用
smtpmail.smtpserver="localhost";
运行后系统提示错误信息:
email fail
could not access ''cdo.message'' object.
here is the full error message output:
system.web.httpexception: could not access ''cdo.message'' object. ---> system.reflection.targetinvocationexception: exception has been thrown by the target of an invocation. ---> system.runtime.interopservices.comexception (0x8004020f): the server rejected one or more recipient addresses. the server response was: 550 5.7.1 unable to relay for 12321323@mobile.att.net
检查smtp service,正常,估计是权限设置问题。打开iis admin,右键点击smtp virtual server(默认smtp虚拟服务器),选择属性,在access(访问)中点relay(中继),增加127.0.0.1。一路ok回去。
这时候再运行程序,邮件发送成功。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器