Hi,
I'm experiencing a to me mysterious error when sending e-mails through a SMTP-server from an ASP.NET web application. I get the famous error "unable to relay for [email protected]". What's mysterious to me is that when I cut and paste the exact same code that sends the e-mail into an usual .NET Windows Forms application, send the e-mail with this application, it all works just fine. This made me think that perhaps the problem is that the ASP.NET application runs as NETWORK SERVICE while the Windows Forms application runs on a domain user account, but it turns out that I have another ASP.NET application sending e-mail through the same SMTP-server running under NETWORK SERVER at the same IIS, and this application does not experience this problem.
I've further tried to send e-mails through the SMTP-server manually by telnet the smtp-server on port 25 and running the SMTP-protocol manually, and it all works fine. The SMTP-server is not configured with any kind of authentication or SSL.
Another mysterious fact is that the ASP.NET application can send e-mails from an adress within the same domain to an e-mail adress within the same domain, but not to any adress outside of the domain. But the Windows Forms application, that uses the exact same code, can send e-mails from any adress to any adress both within AND outside of the domain.
So to summarize:
- The ASP.NET application can send e-mails from addresses within the domain to adresses within the domain, but not to addresses outside of the domain.
- A Windows Forms application running the same code on the same computer can send e-mails from ANY address to ANY address.
- Another ASP.NET application on the same IIS running under the same account (NETWORK SERVICE) can send e-mails using the same SMTP-server from ANY adress to ANY adress.
- There is no authentication configured on the SMTP-Server.
- Both the ASP.NET application and the Windows Forms application utilizes the System.Net.Mail.SmtpClient class to send a System.Net.Mail.MailMessage.
The code that sends the e-mail massage is:
private void button1_Click(object sender, EventArgs e)
{
MailMessage mesasge = new MailMessage(txtFrom.Text, txtTo.Text, "Test mail", txtBody.Text);
SmtpClient client = new SmtpClient();
if (!(string.IsNullOrEmpty(txtUserName.Text))) //Is false since txtUserName.Text is empty
client.Credentials = new System.Net.NetworkCredential(txtUserName.Text, txtPassword.Text);
client.EnableSsl = false;
client.Host = txtServer.Text;
client.Port = 25;
try
{
client.Send(mesasge);
}
catch (Exception ex)
{
txtResponse.Text = ex.Message;
}
}
As far as I can understand, this should be a matter of configuration rather than coding issues. Do anyone have an idea what the problem might be, and perhaps how this could be solved? Thanx!