【问题标题】:How to Send Mail in Asp.net in C# [duplicate]如何在 C# 中的 Asp.net 中发送邮件 [重复]
【发布时间】:2012-05-22 19:15:11
【问题描述】:

可能重复:
No connection could be made because the target machine actively refused it?

我在 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"

请告诉我解决方案..

【问题讨论】:

  • 为什么将 UseDefaultCredentials 设置为 true?这将尝试发送当前登录用户的凭据,而不是您初始化的凭据 - 将其设置为 false 并重试。
  • ref Sending email in .NET through Gmail 并在指定自定义凭据时将 UseDefaultCredentials 设置为 false

标签: asp.net email


【解决方案1】:

这就是我使用它的方式。

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);

【讨论】:

    【解决方案2】:

    这是我检查发送邮件的功能......它工作正常。

    `

        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;
    
    }`           
    

    谢谢。

    【讨论】:

      【解决方案3】:
          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);
              }
      
          }
      

      【讨论】:

        【解决方案4】:

        该错误消息通常表示防火墙阻止了您的连接。不要使用您的机器名称"173.194.79.109:587",而是尝试使用“localhost”。

        【讨论】:

        • 先生,我使用了上面所有的代码,但即使我设置了 smtp.UseDefaultCredentials = false,它也不起作用;但它也显示错误“无法连接远程服务器”???请告诉我具体的解决方案......谢谢大家对我的问题的良好回应......
        • 您的系统上是否使用了任何防病毒软件?
        • 是的,我在我的电脑上使用 Macfee Antivirus
        • 尝试删除它并检查主要是导致问题的原因。
        【解决方案5】:

        您需要将UseDefaultCredentials 属性设置为false

        smtp.UseDefaultCredentials = false;
        

        【讨论】:

        • 我设置 smtp.UseDefaultCredentials = false;但它不起作用
        猜你喜欢
        • 2014-07-16
        • 2012-11-09
        • 2019-12-20
        • 2013-08-22
        • 1970-01-01
        • 2012-11-23
        • 2016-08-12
        相关资源
        最近更新 更多