这两天做了一个小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回去。
这时候再运行程序,邮件发送成功。
