我已多次尝试使用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.但是它们中的任何一个都可以正常工作。我不知道问题是什么。 请帮助解决这个问题。
答案 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);
}