C#带有按钮点击事件的电子邮件
我正在尝试创建一个按钮点击事件,向gmail帐户发送电子邮件。这就是我得到的错误: 无法从传输连接读取数据:网络io连接已关闭 它指出了第63行,它是:C#带有按钮点击事件的电子邮件,c#,asp.net,email,C#,Asp.net,Email,我正在尝试创建一个按钮点击事件,向gmail帐户发送电子邮件。这就是我得到的错误: 无法从传输连接读取数据:网络io连接已关闭 它指出了第63行,它是: client.Send(mail); 代码如下: protected void Button2_Click(object sender, EventArgs e) { System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage(); SmtpClient
client.Send(mail);
代码如下:
protected void Button2_Click(object sender, EventArgs e)
{
System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
SmtpClient client = new SmtpClient();
client.Port = 465;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Host = "smtp.gmail.com";
mail.IsBodyHtml = true;
mail.To.Add(new MailAddress("yourclassroomconnection@gmail.com"));
mail.From = new MailAddress("yourclassroomconnection@gmail.com");
mail.Subject = "New Order";
string bodyTemplate = Label2.Text;
mail.Body = bodyTemplate;
client.Send(mail);
}
知道我哪里出错了吗?您可以使用下面的代码作为一个小测试。尝试用最少的选项发送电子邮件。然后添加其他选项,如html支持。因此,当你在试验新事物时,你可以缩小问题的范围
try {
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
mail.From = new MailAddress("your_email_address@gmail.com");
mail.To.Add("to_address");
mail.Subject = "Test Mail";
mail.Body = "This is for testing SMTP mail from GMAIL";
SmtpServer.Port = 587;
SmtpServer.Credentials = new System.Net.NetworkCredential("username", "password");
SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);
} catch (Exception ex)
{
}
您需要生成特定于应用程序的密码,并在此处使用它,而不是您的gmail密码
也请阅读本教程。
硬编码用户名和密码(即凭据)有时可能会令人沮丧。 您可以做的是,您只能在web.config文件中添加这些凭据一次。你可以走了。这是更好的解决方案 web.config文件代码如下:
<configuration>
<appSettings>
<add key="receiverEmail" value ="ReceiverEmailAddressHere"/>
</appSettings>
</appSettings>
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="yourclassroomconnection@gmail.com">
<network host="smtp.gmail.com" port="587" enableSsl="true"
userName="YourActualUsername" password="YourActualPassword"/>
</smtp>
</mailSettings>
</system.net>
</configuration>
这里的关键是访问发件人的电子邮件地址和收件人的电子邮件地址。注意,我使用了(SmtpSection)ConfigurationManager.GetSection(“system.net/mailSettings/smtp”)这将导航您的web.config文件并搜索其中可用的层次结构-获取电子邮件地址,如果未获取电子邮件地址则失败
希望这有帮助。快乐编码 你试过587端口了吗?没有,但我会的。我不知道从何处开始解决问题OK我尝试了一下,但出现了以下错误:SMTP服务器需要安全连接,或者客户端未通过身份验证。服务器响应为:5.7.0必须首先发出STARTTLS命令。e46sm13555277qtc.27-端口为587的GSMTP尝试此操作。启用双因素身份验证,然后生成特定于应用程序的密码。使用新生成的密码通过SMTP进行身份验证。你能帮我解决这个问题吗?你有点失去了我……我对这很陌生这到底有什么帮助?
Asp.net
中的MessageBox
是什么?实际上,只有你提供的链接可能会有帮助,作为评论。我正在签出链接。该链接也使用MessageBox
protected void btnSendMail_Click(object sender, EventArgs e)
{
MailMessage msg = new MailMessage();
// get the receiver email address from web.config
msg.To.Add(ConfigurationManager.AppSettings["receiverEmail"]);
// get sender email address path from web.config file
var address = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp");
string emailAddress = address.Network.UserName;
string password = address.Network.Password;
NetworkCredential credential = new NetworkCredential(emailAddress, password);
msg.Subject = " Subject text here "
}
SmtpClient client = new SmtpClient();
client.EnableSsl = true;
client.Send(msg); // send the message