使用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帐户允许"不太安全的应用程序"
请看这里: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);
}