如何用C语言在Asp.net中发送邮件#
可能重复:如何用C语言在Asp.net中发送邮件#,asp.net,email,Asp.net,Email,可能重复: 我在Asp.net中发送邮件时遇到了一个关键问题。如果有人知道这个问题,请告诉我解决方案。 这是我发送邮件的代码 MailMessage mm = new MailMessage(); SmtpClient smtp = new SmtpClient(); mm.From = new MailAddress(txtfrom.Text); mm.To.Add(new MailAddress(txtto.Text));
我在Asp.net中发送邮件时遇到了一个关键问题。如果有人知道这个问题,请告诉我解决方案。 这是我发送邮件的代码
MailMessage mm = new MailMessage();
SmtpClient smtp = new SmtpClient();
mm.From = new MailAddress(txtfrom.Text);
mm.To.Add(new MailAddress(txtto.Text));
mm.Subject = txtsubject.Text;
mm.Body = txtmessage.Text;
mm.IsBodyHtml = true;
smtp.Host = "smtp.gmail.com"; //You can add this in the webconfig
smtp.EnableSsl = true;
System.Net.NetworkCredential NetworkCred = new System.Net.NetworkCredential();
NetworkCred.UserName = "mymail@gmail.com";
NetworkCred.Password = "my password";
smtp.UseDefaultCredentials = true;
smtp.Credentials = NetworkCred;
smtp.Port = 587; //this is Gmail port for e-mail
smtp.Send(mm);//send an e-mail
问题是,当我点击发送按钮时,它会显示以下错误
“无法建立连接,因为目标计算机处于活动状态
拒绝了173.194.79.109:587“
请告诉我解决方案。您需要设置false
UseDefaultCredentials
属性
smtp.UseDefaultCredentials = false;
该错误消息通常表示防火墙正在阻止您的连接。请尝试使用“
localhost
”,而不是使用您的计算机名“173.194.79.109:587”
我就是这样使用它的
SmtpClient gglClient = new SmtpClient("173.194.67.108", 587);
gglClient.UseDefaultCredentials = false;
gglClient.DeliveryMethod = SmtpDeliveryMethod.Network;
gglClient.Credentials = new NetworkCredential("username@gmail.com", "password");
gglClient.EnableSsl = true;
MailMessage msg = new MailMessage("", email);
msg.Subject = "";
msg.Body = @" ";
msg.IsBodyHtml = false;
msg.BodyEncoding = UTF8Encoding.UTF8;
gglClient.Timeout = 8000;
ServicePointManager.ServerCertificateValidationCallback =
delegate(object s, X509Certificate certificate, X509Chain chain,
SslPolicyErrors sslPolicyErrors) { return true; };
gglClient.Send(msg);
这是我用来发送邮件的功能…它工作正常 `
谢谢。为什么要将UseDefaultCredentials设置为true?这将尝试发送当前登录用户的凭据,不是您已初始化的证书-将此设置为false,然后重试.ref,并将
UseDefaultCredentials
设置为false
,因为您正在指定您的自定义证书Sir我使用上述所有代码,但即使我将smtp设置为UseDefaultCredentials=false,它也不起作用;但它也显示错误“无法连接远程服务器”???请告诉我具体的解决办法。。。。。。感谢大家对我的问题做出良好的回答。您的系统是否使用了任何防病毒软件?是的,我在我的电脑上使用了Macfee防病毒软件。请尝试将其删除并进行检查,因为这是导致问题的主要原因。我将smtp.UseDefaultCredentials设置为false;但它不起作用
protected void SendMail_Click(object sender, EventArgs e)
{
var fromAddress = new MailAddress(fromid.Text, fromname.Text);
var toAddress = new MailAddress(toid.Text, toname.Text);
string fromPassword = pswd.Text;
string subject = subjectbox.Text;
string body = bodybox.Text;
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword),
Timeout = 20000
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body,
IsBodyHtml = false
})
{
smtp.Send(message);
}
}
private static bool testsendemail(MailMessage messageBody)
{
try
{
MailMessage message1 = new MailMessage();
SmtpClient smtpClient = new SmtpClient();
string msg = string.Empty;
MailAddress fromAddress = new MailAddress("FromMail@Test.com");
message1.From = fromAddress;
message1.To.Add("ToMail@Test1.com");
message1.Subject = "This is Test mail";
message1.IsBodyHtml = true;
message1.Body ="You can write your body here"+messageBody;
smtpClient.Host = "smtp.mail.yahoo.com"; // We use yahoo as our smtp client
smtpClient.Port = 587;
smtpClient.EnableSsl = false;
smtpClient.UseDefaultCredentials = true;
smtpClient.Credentials = new System.Net.NetworkCredential("SenderMail@yahoo.com", "YourPassword");
smtpClient.Send(message1);
}
catch
{
return false;
}
return true;
}`