我有一个经典ASP页面,它创建一个CDO.Message对象来发送电子邮件。该代码适用于2003,但不适用于2008。在2008年,一个“访问被拒绝”错误被抛出。这里是我为诊断问题而编写的一个简单的测试页面。如何使它在Windows 2008上工作?
dim myMail
Set myMail=CreateObject("CDO.Message")
If Err.Number <> 0 Then
Response.Write ("Error Occurred: ")
Response.Write (Err.Description)
Else
Response.Write ("CDO.Message was created")
myMail.Subject="Sending email with CDO"
myMail.From="sender@mycompany.com"
myMail.To="recipient@mycompany.com"
myMail.TextBody="This is a message."
myMail.Send
set myMail=nothing
End If发布于 2010-01-08 16:15:22
我从未让CDO.Message对象在Windows 2008上工作。然而,我找到了一个解决办法。我写了一个在Windows 2008上工作的电子邮件类。希望这能帮到别人。
[ComVisible(true)]
public class Email
{
public bool SendEmail(string strTo, string strFrom , string strSubject, string strBody)
{
bool result = false;
try
{
MailMessage message = new MailMessage();
SmtpClient client = new SmtpClient("smtp.mycompany.com");
List<string> to = recipientList(strTo);
foreach (string item in to)
{
message.To.Add(new MailAddress(item));
}
message.From = new MailAddress(strFrom);
message.Subject = strSubject;
message.Body = strBody;
client.Send(message);
result = true;
}
catch
{
result = false;
throw;
}
return result;
}
private List<string> recipientList(string strTo)
{
List<string> result = new List<string>();
string[] emailAddresses = strTo.Split(new Char[]{',',';'});
foreach (string email in emailAddresses)
{
result.Add(email.Trim());
}
return result;
}
}发布于 2011-02-08 16:44:18
只要使用Microsoft服务器(1),就可以使用IIS_USRS (2)读取对IIS_USRS中/LM/SmtpSvc/和/LM/SmtpSvc/1/节点的读取访问权限。
不幸的是,此解决方案不适用于Windows 7。Microsoft没有随Windows 7一起发布SMTP服务器,因此很难在不重构代码的情况下解决这个问题。
(1)见http://www.itsolutionskb.com/2008/11/installing-and-configuring-windows-server-2008-smtp-server
(2)见http://blogs.msdn.com/b/akashb/archive/2010/05/24/error-cdo-message-1-0x80040220-the-quot-sendusing-quot-configuration-value-is-invalid-on-iis-7-5.aspx
https://stackoverflow.com/questions/1843885
复制相似问题