C# 要从asp.net网站发送自动邮件吗
我正在尝试从我的asp.net网站发送一封自动邮件,只要有人单击“提交”按钮输入一些值。我用C#创建了一些代码。它没有显示任何错误,也没有发送任何邮件。我正在网络凭据中使用组织的邮件服务器的ip地址。我不知道如何为我用来发送邮件的电子邮件地址提供密码。我正在与您共享我的代码C# 要从asp.net网站发送自动邮件吗,c#,asp.net,C#,Asp.net,我正在尝试从我的asp.net网站发送一封自动邮件,只要有人单击“提交”按钮输入一些值。我用C#创建了一些代码。它没有显示任何错误,也没有发送任何邮件。我正在网络凭据中使用组织的邮件服务器的ip地址。我不知道如何为我用来发送邮件的电子邮件地址提供密码。我正在与您共享我的代码 using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using S
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.ComponentModel;// for backgroundworker class
using System.Net;
using System.Net.Mail;
using System.Threading;
public partial class Contact : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void LoginView1_ViewChanged(object sender, EventArgs e)
{
}
public void Button3_Click(object sender, EventArgs e)
{
using (SqlConnection connn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
{
SqlCommand command = new SqlCommand();
command.CommandType = System.Data.CommandType.StoredProcedure;
command.CommandText = "dbo.Procedure";
command.Parameters.Add("@name", System.Data.SqlDbType.VarChar).Value = TextBox1.Text;
command.Parameters.Add("email", System.Data.SqlDbType.VarChar).Value = email.Text;
command.Parameters.Add("sub", System.Data.SqlDbType.VarChar).Value = sub.Text;
command.Parameters.Add("message", System.Data.SqlDbType.VarChar).Value = message.Text;
string from = "info@xxx.com";
string to = "abc@xxx.com";
string mailSubject = sub.Text.ToString();
string mailBody = message.Text.ToString();
MailMessage mess = new MailMessage(from, to, mailSubject, mailBody);
mess.IsBodyHtml = true;
SmtpClient emailClient = new SmtpClient("//xxx.xxx.x.x/", 25); //Server ip & port
emailClient.UseDefaultCredentials = true;
//System.Net.NetworkCredential SMTPUserInfo = new System.Net.NetworkCredential("", "");
//emailClient.Credentials = SMTPUserInfo;
//emailClient.Send(mess);
// emailClient.Credentials = CredentialCache.DefaultNetworkCredentials;
try
{
emailClient.Send(mess);
}
catch (Exception ex)
{
Console.WriteLine("Exception caught in CreateTestMessage1(): {0}",
ex.ToString());
}
command.Connection = connn;
connn.Open();
command.ExecuteNonQuery();
connn.Close();
}
TextBox1.Text = "";
email.Text = "";
sub.Text = "";
message.Text = "";
lblmsg.Text = "Data entered successfully!!! Thank You for contacting us! We will get back to you as soon as possible.";
//Response.Write("Submitted Succesfully");
Response.Redirect("~/XX.aspx");
}
}
您可能希望停止使用默认凭据
emailClient.UseDefaultCredentials = false;
加
emailClient.Credentials = new System.Net.NetworkCredential("yourusername", "yourpassword");
使用您自己的凭据,因为大多数SMTP服务器现在阻止匿名中继以阻止垃圾邮件 请将配置放入应用程序的web.config文件中。以下是如何配置它的示例:
<system.net>
<mailSettings>
<smtp from="test@test.com">
<network host="smtpserver1" port="25" userName="StackOverFlow" password="HatSoft" defaultCredentials="true" />
</smtp>
</mailSettings>
</system.net>
我已经在上回答了一个类似的问题。您可以尝试一些较低级别的调试,以使用telnet验证您的SMTP设置:对于将密码放入代码中,我会特别犹豫。我同意不使用DefaultCredentials,但会指定
emailClient.Credentials=System.Net.CredentialCache.DefaultNetworkCredentials
,然后确保将应用程序池的标识配置为可以对SMTP服务器进行身份验证的用户。@DuncanHowe这是一个很好的观点,另外,如果您无法将应用程序池详细信息设置为匹配(即在共享平台上),我建议将其放入web.config,然后加密web.config,我不想在代码中输入密码。你能建议我如何在web.config中执行此操作吗?我在那里提到了我的网络主机。我必须在那里提供我的网络用户和密码,对吗?我应该把我的电子邮件密码放在哪里?我是新来的,所以可能会问一些愚蠢的问题。谢谢大家,谢谢。我按你说的做了。但仍然没有成功。我不需要为我试图发送邮件的特定电子邮件地址输入用户名和密码吗?@MSI yes-将您的用户名和密码替换为您的特定SMTP登录凭据。如果我在网络主机中输入服务器的ip地址而不是服务器名,可以吗?是的,您可以,我看不到任何失败原因用户名和密码在这里,我应该把服务器用户名和密码或我的电子邮件地址用户名和密码。非常新的东西,谢谢你的所有帮助。用户名和密码必须是一个将验证SMTP服务器,并由您的管理员提供给你的用户名和密码可以在这里和用户名和密码可以去用户名=“StackOverFlow”密码=“HatSoft”请尝试这个,并让我的结果