C# Can';不要通过ASP.NET中的Gmail帐户发送电子邮件
通过我的ASP.NET应用程序和我的gmail帐户发送一封简单的电子邮件时,我遇到了一些问题。我已经尽我所能寻求帮助,但出于某种原因,它只是不断给我一个错误,没有发送任何电子邮件 以下是我设置的在按下按钮时触发的代码:C# Can';不要通过ASP.NET中的Gmail帐户发送电子邮件,c#,asp.net,email,smtp,smtp-auth,C#,Asp.net,Email,Smtp,Smtp Auth,通过我的ASP.NET应用程序和我的gmail帐户发送一封简单的电子邮件时,我遇到了一些问题。我已经尽我所能寻求帮助,但出于某种原因,它只是不断给我一个错误,没有发送任何电子邮件 以下是我设置的在按下按钮时触发的代码: protected void SubmitButton_Click(object sender, EventArgs e) { System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
protected void SubmitButton_Click(object sender, EventArgs e)
{
System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
mail.To.Add(new System.Net.Mail.MailAddress("an email address"));
mail.From = new System.Net.Mail.MailAddress("From Email Address");
mail.Subject = "PDMS New User Request";
mail.IsBodyHtml = true;
mail.Body = "A new user has requested access" + "\n\n"
+ "Name: " + inputFName.Text.ToString() + " " + inputLName.Text.ToString()
+ "\n"
+ "Organization: " + inputOrg.Text.ToString()
+ "\n"
+ "Email: " + inputEmail.Text.ToString()
+ "\n\n"
+ "Please contact them with their login information"
+ "-PDMS System Message";
mail.IsBodyHtml = true;
System.Net.Mail.SmtpClient systemEmail = new System.Net.Mail.SmtpClient();
systemEmail.UseDefaultCredentials = false;
systemEmail.Credentials=new System.Net.NetworkCredential("From email address", "From Email Addresses' password");
systemEmail.Port = 587 ;
systemEmail.Host="smtp.gmail.com";
systemEmail.EnableSsl=true;
systemEmail.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
try
{
systemEmail.Send(mail);
Label1.Visible = true;
Label2.Visible = false;
}
catch (Exception ex)
{
Label2.Text = "Email could not be sent due to errors";
}
我错过了什么?我似乎无法让这段代码真正发送任何东西-Gmail中是否有我需要首先配置的设置?我无法知道您收到的错误是什么,但是的,在您开始使用代码发送邮件之前,需要在您的Gmail帐户中进行设置。请从您的google帐户打开下面的页面,并打开对不太安全的应用程序的访问 请注意,如果您已经为您的google帐户打开了两步验证,那么您将不会在上述页面上看到“了解更多”链接。从那里,你可以为你的谷歌帐户创建特定于应用程序的密码,然后该应用程序将能够通过你的谷歌帐户访问和发送邮件
如果这不能解决您的问题,请编辑您的帖子,并添加您收到的准确错误跟踪,以便我们进行调查。删除Catch中的标签并引发异常。然后我们可以轻松识别准确的异常,否则将显示标签默认文本
try
{
systemEmail.Send(mail);
Label1.Visible = true;
Label2.Visible = false;
}
catch (Exception ex)
{
throw ex;//throw the exception
}
解决方案:
我认为您需要5.5.1身份验证
以下步骤将解决您的异常
- 输入正确的登录密码
- 删除两步验证
- 您必须为您的google帐户启用从其他时区/ip登录。要做到这一点,请按照并通过单击“继续”按钮允许访问
- 转到以下位置的安全设置并启用不太安全的应用程序。这样您就可以从所有应用程序登录
- 试试这个。。。我以前用过,所以可能有用
`
public void sendmail() {
MailMessage msg;
string emailId = string.Empty;
msg = new MailMessage();
SmtpClient smtp = new SmtpClient();
//sender email address
msg.From = new MailAddress("youremail@gmail.com");
//Receiver email address
msg.To.Add("receiver@gmail.com");
//email message subject
msg.Subject = "some string";
//email message body
msg.Body = "Some string".Trim();
msg.IsBodyHtml = true;
smtp.Credentials = new NetworkCredential("yourEmail@gmail.com","yourpassword");
smtp.Port = 587;
smtp.Host = "smtp.gmail.com";
smtp.EnableSsl = true;
smtp.Send(msg);
}`
您遇到了什么错误?请阅读错误消息。异常应该会告诉您问题所在。请删除异常中的标签更多参考检查我的解决方案我遇到的异常是“System.IO.IOException:无法从传输连接读取数据:net\u IO\u connectionclosed”。我不确定问题出在哪里。我没有双重身份验证,我启用了不太安全的应用,并且我的用户名和密码正确无误。