Sending mail using SmtpClient in .net
.net, asp.net, c#, smtpclient
Solution
I figured out that setting the SmtpClient Credentials property before setting the `<html><span class="diff-delete">UseDefaultCredentials = false</span></html>`. `UseDefaultCredentials = false` causes the credentials to be ignored.
Fails:
SmtpClient smtp = new SmtpClient;
smtp.Credentials = new NetworkCredential("user","pass");
smtp.UseDefaultCredentials = false;
Works:
SmtpClient smtp = new SmtpClient;
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential("user","pass");
Go figure.
** UPDATE **
The reason the order is important here is that the setter on the `UseDefaultCredentials` property actually sets the `Credentials` to `null` via the decompiled code:
/// <summary>Gets or sets a <see cref="T:System.Boolean" /> value that controls whether the <see cref="P:System.Net.CredentialCache.DefaultCredentials" /> are sent with requests.</summary>
/// <returns>
/// <see langword="true" /> if the default credentials are used; otherwise <see langword="false" />. The default value is <see langword="false" />.</returns>
/// <exception cref="T:System.InvalidOperationException">You cannot change the value of this property when an e-mail is being sent.</exception>
public bool UseDefaultCredentials
{
get
{
return this.transport.Credentials is SystemNetworkCredential;
}
set
{
if (this.InCall)
throw new InvalidOperationException(SR.GetString("SmtpInvalidOperationDuringSend"));
this.transport.Credentials = value ? (ICredentialsByHost) CredentialCache.DefaultNetworkCredentials : (ICredentialsByHost) null;
}
}
Problem
I am unable to send the mail using smtp client. here is the code: ``` SmtpClient client=new SmtpClient("Host"); client.Credentials=new NetworkCredential("username", "password"); MailMessage mailMessage = new MailMessage(); mailMessage.from="sender@gmail.com"; mailMessage.To.Add("recipient@gmail.com"); mailMessage.body="body"; mailMessage.subject="subject"; client.Send(mailMessage); ``` The problem is that when I use this code in ASP.NET application, I do not receive any mails. When in asp.net I change the from mail address to username given in NetworkCredential, I receive mails. But in C# windows application, I can get emails, even if sender's email address is not valid.