Reputation: 5681
I'm trying to send email with my website's address from a C# application.
This worked fine for several months until recently. (maybe my provider changes some things or someone else changed settings)
Here's the code:
private void sendEmail(Email invite) {
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient(smtpServerName);
mail.From = new MailAddress(emailUsername);
mail.To.Add(invite.RecipientEmail);
mail.Subject = invite.MessageSubject;
mail.Body = invite.MessageBody;
SmtpServer.UseDefaultCredentials = false;
SmtpServer.Port = 587;
SmtpServer.Credentials = new System.Net.NetworkCredential(emailUsername, emailPassword);
// SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);
}
Here's the error:
The SMTP server requires a secure connection or the client was not authenticated. The server response was: SMTP authentication is required.
Looking at other questions I tried what they suggested, to make SmtpServer.EnableSsl = true
. This didn't work at all. It gave the following:
System.Net.Mail.SmtpException: Server does not support secure connections.
I'm guessing I should disable SSL and have it the way it was before.
Any suggestions how to make email sending work again?
EDIT
I've tried without SmtpServer.UseDefaultCredentials = false;
I've tried with it set to true: SmtpServer.UseDefaultCredentials =true;
I've tried commenting that line along with the following //SmtpServer.Credentials = new System.Net.NetworkCredential(emailUsername, emailPassword);
Upvotes: 20
Views: 61965
Reputation: 45
You need to create an app password so that your application can bypass 2FA: Sign in with App Passwords Google App Password
Upvotes: 1
Reputation: 81
If you are sure that your Username and Password are correct, but you still get errors then it means that Gmail has blocked your application. Allow less secure apps in your Google Account settings
Upvotes: 8
Reputation: 1
If you are deploying the application on a server, try logging in your google account in your server. Bizarre thing is, smtp email sending app works fine in my desktop. Not in the server. This might be affected by how google's security mechanism works.
Upvotes: 0
Reputation: 564851
That error message is typically caused by one of the following:
Upvotes: 8
Reputation: 17675
I think you have to set DeliveryMethod = SmtpDeliveryMethod.Network
this one is currently working in my PC, just i checked,working nice,try this
using System.Net;
using System.Net.Mail;
var fromAddress = new MailAddress("from@gmail.com", "From Name");
var toAddress = new MailAddress("to@example.com", "To Name");
const string fromPassword = "fromPassword";
const string subject = "Subject";
const string body = "Body";
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
Upvotes: 7