How can I send email using Gmail SMTP in asp.net m

2020-02-08 04:34发布

I want to send one mail to user whenever he/she register at my website.

I have created my gmail account for that, I've tried many samples from net but i'm not able to sent email yet.

Please help me in this regard.

Thanks, vicky

4条回答
劫难
2楼-- · 2020-02-08 05:17

Here is my solution for it, first time posting an answer. Happy coding

[HttpPost]
[ValidateAntiForgeryToken]
public async Task < ActionResult > Contact(EmailFormModel model) {
    if (ModelState.IsValid) {
        var body = "<p>Email From: {0} ({1})Message:</p><p>{2}</p>";
        var message = new MailMessage();
        //message.To.Add(new MailAddress("recipient@gmail.com"));  // replace with valid value 
        message.To.Add(new MailAddress("haha")); // replace with valid value 
        //message.From = new MailAddress("sender@outlook.com");  // replace with valid value
        message.From = new MailAddress("hahaha"); // replace with valid value,you cannot commend it, since it's required
        message.Subject = "Your email subject";
        message.Body = string.Format(body, model.FromName, model.FromEmail, model.Message);
        message.IsBodyHtml = true;

        using(var smtp = new SmtpClient()) {
            var credential = new NetworkCredential {
                UserName = "emailAddress", // replace with valid value
                    Password = "yourPassword" // Password = "password"  // replace with valid value
            };
            //smtp.Credentials = credential;
            smtp.UseDefaultCredentials = false;
            smtp.Credentials = new System.Net.NetworkCredential("your emailAddress", "Password"); //You will be receive email from this email address
            //smtp.Host = "smtp-mail.outlook.com";
            smtp.Host = "smtp.gmail.com";
            smtp.Port = 587;
            smtp.EnableSsl = true;
            await smtp.SendMailAsync(message);
            return RedirectToAction("Sent");
        }
    }
    return View(model);
}
查看更多
爱情/是我丢掉的垃圾
3楼-- · 2020-02-08 05:26

In addition to fredo Answer to clear web.config section

public GmailEmailService()
{
    _config = new SmtpConfiguration();
    var gmailUserName = ConfigurationManager.AppSettings[GmailUserNameKey];
    var gmailPassword = ConfigurationManager.AppSettings[GmailPasswordKey];
    var gmailHost = ConfigurationManager.AppSettings[GmailHostKey];
    var gmailPort = Int32.Parse(ConfigurationManager.AppSettings[GmailPortKey]);
    var gmailSsl = Boolean.Parse(ConfigurationManager.AppSettings[GmailSslKey]);
    _config.Username = gmailUserName;
    _config.Password = gmailPassword;
    _config.Host = gmailHost;
    _config.Port = gmailPort;
    _config.Ssl = gmailSsl;
}

Now add in web.config file

<configuration>
    <appSettings>
        <add key="GmailUserNameKey" value="sender@gmail.com"/>
        <add key="GmailPasswordKey" value="senderPassword"/>
        <add key="GmailHostKey" value="smtp.gmail.com"/>
        <add key="GmailPortKey" value="25"/>
        <add key="GmailSslKey" value="true"/>
</appSettings>
查看更多
SAY GOODBYE
4楼-- · 2020-02-08 05:31

I found a very good article on a website https://askgif.com about using Gmail SMTP with C#, so am sharing with you : https://askgif.com/blog/122/seding-email-using-gmail-smtp-in-asp-net-mvc-application/

Create Gmail Class comprises of all needed data type and member function as below

public class GMailer
{
    public static string GmailUsername { get; set; }
    public static string GmailPassword { get; set; }
    public static string GmailHost { get; set; }
    public static int GmailPort { get; set; }
    public static bool GmailSSL { get; set; }

    public string ToEmail { get; set; }
    public string Subject { get; set; }
    public string Body { get; set; }
    public bool IsHtml { get; set; }

    static GMailer()
    {
        GmailHost = "smtp.gmail.com";
        GmailPort = 25; // Gmail can use ports 25, 465 & 587; but must be 25 for medium trust environment.
        GmailSSL = true;
    }

    public void Send()
    {
        SmtpClient smtp = new SmtpClient();
        smtp.Host = GmailHost;
        smtp.Port = GmailPort;
        smtp.EnableSsl = GmailSSL;
        smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
        smtp.UseDefaultCredentials = false;
        smtp.Credentials = new NetworkCredential(GmailUsername, GmailPassword);

        using (var message = new MailMessage(GmailUsername, ToEmail))
        {
            message.Subject = Subject;
            message.Body = Body;
            message.IsBodyHtml = IsHtml;
            smtp.Send(message);
        }
    }
}

Then just used the following code wherever you want to send the email to the required email account.

GMailer.GmailUsername = "youremailid@gmail.com";
        GMailer.GmailPassword = "YourPassword";

        GMailer mailer = new GMailer();
        mailer.ToEmail = "sumitchourasia91@gmail.com";
        mailer.Subject = "Verify your email id";
        mailer.Body = "Thanks for Registering your account.<br> please verify your email id by clicking the link <br> <a href='youraccount.com/verifycode=12323232'>verify</a>";
        mailer.IsHtml = true;
        mailer.Send();

Hope this will help you. Mark as answer if this helps you.

查看更多
相关推荐>>
5楼-- · 2020-02-08 05:37

Here is a Email class that can be used with ASP.NET MVC4 leveraging dependency injection. A full running sample application & unit tests that use this class can be found here in my github space https://github.com/fredo007/i6technology/tree/master/InsuranceSales.

I've also put together an article explaining methodology & use here http://prestoasp.net/how-to-send-email-using-gmail-smtp-in-an-asp-net-mvc-application/

public class GmailEmailService : IEmailService
{
    private readonly SmtpConfiguration _config;

    private const string GmailUserNameKey = "GmailUserName";
    private const string GmailPasswordKey = "GmailPassword";
    private const string GmailHostKey = "GmailHost";
    private const string GmailPortKey = "GmailPort";
    private const string GmailSslKey = "GmailSsl";

    public GmailEmailService()
    {
        _config = new SmtpConfiguration();
        var gmailUserName = ConfigurationManager.AppSettings[GmailUserNameKey];
        var gmailPassword = ConfigurationManager.AppSettings[GmailPasswordKey];
        var gmailHost = ConfigurationManager.AppSettings[GmailHostKey];
        var gmailPort = Int32.Parse(ConfigurationManager.AppSettings[GmailPortKey]);
        var gmailSsl = Boolean.Parse(ConfigurationManager.AppSettings[GmailSslKey]);
        _config.Username = gmailUserName;
        _config.Password = gmailPassword;
        _config.Host = gmailHost;
        _config.Port = gmailPort;
        _config.Ssl = gmailSsl;
    }

    public bool SendEmailMessage(EmailMessage message)
    {
        var success = false;
        try
        {
            var smtp = new SmtpClient
            {
                Host = _config.Host,
                Port = _config.Port,
                EnableSsl = _config.Ssl,
                DeliveryMethod = SmtpDeliveryMethod.Network,
                UseDefaultCredentials = false,
                Credentials = new NetworkCredential(_config.Username, _config.Password)
            };

            using (var smtpMessage = new MailMessage(_config.Username, message.ToEmail))
            {
                smtpMessage.Subject = message.Subject;
                smtpMessage.Body = message.Body;
                smtpMessage.IsBodyHtml = message.IsHtml;
                smtp.Send(smtpMessage);
            }

            success = true;
        }
        catch (Exception ex)
        {
            //todo: add logging integration
            //throw;
        }

        return success;
    }
}
查看更多
登录 后发表回答