使用Gmail

时间:2015-08-03 21:28:12

标签: c# asp.net email web

我已多次尝试使用gmail制作电子邮件应用。 我真的很绝望,我甚至用其他语言访问了整个互联网,但我一无所获。

如何使用gmail在Asp.net c#中创建电子邮件Web应用程序?

这是我申请的最后一个代码。

try
{
    MailMessage ms = new MailMessage();
    ms.From = new MailAddress("myemail@gmail.com");
    ms.To.Add("fillocj@hotmail.it");
    ms.Body = txtTexto.Text;
    ms.IsBodyHtml = true;

    SmtpClient sm = new SmtpClient();
    sm.Host = "smtp.gmail.com";

    NetworkCredential nt = new NetworkCredential();

    nt.UserName = "myemail@gmail.com";
    nt.Password = "myPassword";

    sm.UseDefaultCredentials = true;

    sm.Credentials = nt;

    sm.Port = 465;

    sm.EnableSsl = true;
    sm.Send(ms);
    LabelError.Text = "Sent";
}
catch
{
    LabelError.Text = "Error";
}

我总是一遍又一遍地失败。 我尝试使用端口:25,也使用了465和587.但是它们中的任何一个都可以正常工作。我不知道问题是什么。 请帮助解决这个问题。

3 个答案:

答案 0 :(得分:0)

这可以在我的计算机上使用我的电子邮件和该电子邮件的登录凭据。如果这对你的不起作用,则可能是上面评论中指出的网络问题。

 protected String doInBackground()
 {
    // other code ommited
    String progress = "test";
    publishProgress(progress);
 }

答案 1 :(得分:0)

您还可能需要配置您的Gmail帐户以允许"不太安全的应用"。

见这里:https://support.google.com/accounts/answer/6010255?hl=en

我使用ASP.NET程序通过Gmail发送电子邮件时遇到了同样的问题,直到我这样做才行。

答案 2 :(得分:0)

在nuget中下载Google.Apis.Gmail.v1。 在https://console.developers.google.com/中创建一个项目。 在项目内导航到Apis & auth > Apis(启用gmail api) 导航到Apis & auth > Credentials(创建新的客户端ID) 然后复制您的客户端ID和客户端密码。

以下是使用Gmail Api发送电子邮件的代码。

public class Gmail
{
public Gmail(ClientSecrets secrets, string appName)
        {
            applicationName = appName;
            credential = GoogleWebAuthorizationBroker.AuthorizeAsync(secrets,
                    new[] { GmailService.Scope.MailGoogleCom, GmailService.Scope.GmailCompose, GmailService.Scope.GmailReadonly },
                    "user", CancellationToken.None).Result; 

            service = new GmailService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = applicationName,
            });
        }

public void SendEmail(System.Net.Mail.MailMessage mail)
        {
            var mimeMessage = MimeKit.MimeMessage.CreateFromMailMessage(mail);
            Message msg = new Message()
            {
                Raw = Base64UrlEncode(mimeMessage.ToString())
            };

            SendMessage(service, msg);
        }

        private Message SendMessage(GmailService service, Message msg)
        {
            try 
            {
                return service.Users.Messages.Send(msg, userid).Execute();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        private string Base64UrlEncode(string input)
        {
            var inputBytes = System.Text.Encoding.UTF8.GetBytes(input);
            // Special "url-safe" base64 encode.
            return Convert.ToBase64String(inputBytes)
              .Replace('+', '-')
              .Replace('/', '_')
              .Replace("=", "");
        }
}

更新:

在您的控制器中:

public ActionResult SendEmail()
{
 MailMessage msg = new MailMessage()
            {
                Subject = "Your Subject",
                Body = "<html><body><table border='1'><tr>Hello, World, from Gmail API!<td></td></tr></table></html></body>",
                From = new MailAddress("from@email.com")
            };
            msg.To.Add(new MailAddress("to@email.com"));
            msg.ReplyToList.Add(new MailAddress("to@email.com")); // important! if no ReplyTo email will bounce back to the sender.

Gmail gmail = new Gmail(new ClientSecrets() { ClientId = "client_id", ClientSecret = "client_secret" }, "your project name");
gmail.SendEmail(msg);
}