简体   繁体   中英

Checking Gmail login credentails in My C# windows form Application?

I have started using windows form for creating a small App in which user's are able to send email from their gmail accounts, i'm able to send mails when user enters correct login credentials in my login form(FORM 1) but if he enters wrong credentials in login form(Form 1),it enters my Mail(form 2) and shows error so i want to check Gmail Login Credentials..Help me with the Code...

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Mail;

namespace first
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Form1 a = new Form1();
            this.Hide();
            a.ShowDialog();
            this.Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
            client.Credentials = new NetworkCredential(Form3.tb.Text, Form3.tb1.Text);
            MailMessage msg = new MailMessage();
            msg.To.Add(new MailAddress(To.Text));
            msg.From = new MailAddress(From.Text);
            msg.Subject = Sub.Text;
            msg.Body = Body.Text;
            client.EnableSsl = true; //for security in gmail,https kind of
            client.Send(msg);
            try
            {
                MessageBox.Show("Mail sent successfully", "Praveen Mail");
            }
            catch (Exception ex)
            {
                MessageBox.Show("Mail Sending Failed Due to" + ex.Message, "Praveen Mail");
            }

        }

    }
}

Google provides a .net api that should solve your problem.

https://code.google.com/p/google-api-dotnet-client/wiki/OAuth2

---------EDIT-------

Step 1: Sign up to use google api's. It's free and the process to do so is described in the link above.

Step 2: Implement the code below. I borrowed it from the link above.

using System;
using System.Diagnostics;
using DotNetOpenAuth.OAuth2;
using Google.Apis.Authentication.OAuth2;
using Google.Apis.Authentication.OAuth2.DotNetOpenAuth;
using Google.Apis.Samples.Helper;
using Google.Apis.Tasks.v1;
using Google.Apis.Tasks.v1.Data;
using Google.Apis.Util;

namespace Google.Apis.Samples.TasksOAuth2
{
    /// <summary>
    /// This sample demonstrates the simplest use case for an OAuth2 service. 
    /// The schema provided here can be applied to every request requiring   authentication.
    /// </summary>
    public class Program
    {
    public static void Main(string[] args)
    {
        // Display the header and initialize the sample.
        CommandLine.EnableExceptionHandling();
        CommandLine.DisplayGoogleSampleHeader("Tasks API");

        // Register the authenticator.
        var provider = new NativeApplicationClient(GoogleAuthenticationServer.Description);
        provider.ClientIdentifier = "<client id>";
        provider.ClientSecret = "<client secret>";
        var auth = new OAuth2Authenticator<NativeApplicationClient>(provider, GetAuthorization);

        // Create the service.
        var service = new TasksService(auth);
        TaskLists results = service.Tasklists.List().Fetch();
        Console.WriteLine("Lists:");
        foreach (TaskList list in results.Items)
        {
            Console.WriteLine("- " + list.Title);
        }
        Console.ReadKey();
    }

    private static IAuthorizationState GetAuthorization(NativeApplicationClient arg)
    {
        // Get the auth URL:
        IAuthorizationState state = new AuthorizationState(new[] { TasksService.Scopes.Tasks.GetStringValue() });
        state.Callback = new Uri(NativeApplicationClient.OutOfBandCallbackUrl);
        Uri authUri = arg.RequestUserAuthorization(state);

        // Request authorization from the user (by opening a browser window):
        Process.Start(authUri.ToString());
        Console.Write("  Authorization Code: ");
        string authCode = Console.ReadLine();
        Console.WriteLine();

        // Retrieve the access token by using the authorization code:
        return arg.ProcessUserAuthorization(authCode, state);
    }
}

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM