Reputation: 3351
I've recently purchased the essentials email package from GoDaddy and I am trying to set up sending email from my website via SMTP. I have the following code set up.
var smtp = new SmtpClient
{
Host = "mycoolwebsite.com.mail.protection.outlook.com",
Port = 25,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential("[email protected]", "supersecurepassword")
};
using (var message = new MailMessage("[email protected]", "[email protected]")
{
IsBodyHtml = true,
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
This gets to send and doesn't throw any exceptions, however the email is not sent. I am very confused at why this doesn't work.
Has anyone got any ideas?
Upvotes: 0
Views: 1576
Reputation: 176
I faced the similar issue. If i use the PORT 587 it worked for me instead of 465 provided by go daddy.
Upvotes: 1
Reputation: 91
This is going to require TLS which means using MailKit's SMTP. You can get it using the NuGet package manager in Visual Studio. Search for MailKit by Jeffrey Stedfast.
Documentation is here as well.
Once you have all the references in place, use the MailKit.Net.Smtp.SmtpClient class:
You will need to add this line after creating your smtp instance because you have no OAuth token:
smtp.AuthenticationMechanisms.Remove("XOAUTH2");
That will do what you need.
Here's an example of what the whole thing should look like:
string FromPseudonym = "MySite Support";
string FromAddress = "[email protected]";
var message = new MimeMessage();
message.From.Add(new MailboxAddress(FromPseudonym, FromAddress));
message.To.Add(new MailboxAddress("Recipient Pseudonym", "[email protected]"));
message.Subject = "Testing Email";
var bodyBuilder = new BodyBuilder();
string MsgBody = "Message Body stuff goes here";
bodyBuilder.HtmlBody = MsgBody;
message.Body = bodyBuilder.ToMessageBody();
using (var client = new SmtpClient())
{
client.Connect("smtp.office365.com", 587);
client.AuthenticationMechanisms.Remove("XOAUTH2");
client.Authenticate(FromAddress, "Your super secret password goes here");
client.Send(message);
client.Disconnect(true);
}
You'll need the following namespaces to be included:
using MimeKit;
using MimeKit.Utils;
using MailKit.Net.Smtp;
Upvotes: 1
Reputation: 71
Not knowing anything about GoDaddy's API, the only thing I can suggest, is maybe verify that the port is correct. It might require transport layer security, in which case port 25 will be closed.
For example, I think the office365 SMTP server (smtp.office365.com) requires secure SMTP and uses port 587.
Upvotes: 1
Reputation: 91
I've been where you are before. If you are running the app from your dev environment, the emails will not be sent. GoDaddy SMTP is configured so that emails will only be sent when requested from within their environment.
If you push the code to their host and run it, it will work. The most painful thing about this is that everything appears to go smoothly, but the SMTP client just eats the request and leaves you wondering why no email is sent.
Upvotes: 1