使用Gmail在c#中创建一个asp.net邮件应用程序

本文关键字:asp 一个 net 应用程序 Gmail 创建 使用 | 更新日期: 2023-09-27 18:06:14

我试过很多次用gmail做一个电子邮件应用。我真的很绝望,我访问了整个互联网,甚至用其他语言,但我什么也没找到。

如何在Asp.net c#中使用gmail创建电子邮件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。但它们中的任何一个都可以正常工作。我不知道是什么问题。请帮忙解决这个问题。

使用Gmail在c#中创建一个asp.net邮件应用程序

你也可能需要配置你的gmail帐户允许"不太安全的应用程序"

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

我使用ASP有同样的问题。. NET程序通过Gmail发送电子邮件,直到我这样做它才正常工作。

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

        MailMessage mM = new MailMessage();
        mM.From = new MailAddress("myemail@gmail.com");
        mM.To.Add("youremail@gmail.com");
        mM.Subject = "your subject line will go here";
        mM.Body = "Body of the email";
        mM.IsBodyHtml = true;
        SmtpClient sC = new SmtpClient("smtp.gmail.com") {Port = 587, Credentials = new NetworkCredential("myemail@gmail.com", "password"), EnableSsl = true};
        sC.Send(mM);

下载google . api . gmail。用nuget表示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);
}