I apologize if this is a dupe question, but I have not found any solid information about this issue either on this site or on others.
With that being said, I am working on an MVC 5 web application. I am following this tutorial over on ASP.net.
public async Task SendAsync(IdentityMessage message)
{
    await configSendGridasync(message);
}
private async Task configSendGridasync(IdentityMessage message)
{
    var myMessage = new SendGridMessage();
    myMessage.AddTo(message.Destination);
    myMessage.From = new System.Net.Mail.MailAddress(
                        "[email protected]", "Your Contractor Connection");
    myMessage.Subject = message.Subject;
    myMessage.Text = message.Body;
    myMessage.Html = message.Body;
    var credentials = new NetworkCredential(
         Properties.Resources.SendGridUser,
         Properties.Resources.SendGridPassword,
         Properties.Resources.SendGridURL // necessary?
         );
    // Create a Web transport for sending email.
    var transportWeb = new Web(credentials);
    // Send the email.
    if (transportWeb != null)
    {
        await transportWeb.DeliverAsync(myMessage);
    }
    else
    {
        Trace.TraceError("Failed to create Web transport.");
        await Task.FromResult(0);
    }
}
Each time it gets to the await transportWeb.SendAsync(myMessage) line in the above method, this error shows up in the browser:
Exception Details: System.Exception: Bad Request
Line 54:             if (transportWeb != null)
Line 55:             {
Line 56:                 await transportWeb.DeliverAsync(myMessage);
Line 57:             }
Line 58:             else
Line 59:             {
Line 60:                 Trace.TraceError("Failed to create Web transport.");
Line 61:                 await Task.FromResult(0);
Line 62:             }
I signed up for a free account over at https://sendgrid.com/, using the "Free Package Google", giving me 25,000 monthly credits. The account has been provisioned.
I have tried a bunch of things so far including: disabling SSL, putting username/password directly in the code instead of pulling them from the Resources.resx file, specifying the SMTP server inside the NetworkCredential object, and also tried changing DeliverAsync(...) to Deliver().
I tried explicitly setting the subject instead of using message.Subject, as this post suggested. I also tried HttpUtility.UrlEncode on the callbackUrl generated in the Account/Register method as suggested here. Same results, unfortunately.
Does anyone happen to have some insight as to what might be causing this to not function correctly?
I had created an SendGrid account via Azure, I fixed this by setting these values in my Web.Config file:
<add key="mailAccount" value="azure_************@azure.com" />
<add key="mailPassword" value="[My Azure Password]" />
to my azure username and password. the username I found from the Azure Dashboard, I navigated to SendGrid Accounts >> [Clicked the Resource I had Created] >> Configurations. The password was the same one I set up the Azure account with.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With