【问题标题】:My C# code can't send mail but outlook 2k7 can我的 C# 代码无法发送邮件,但 Outlook 2k7 可以
【发布时间】:2013-08-06 04:51:56
【问题描述】:

我已经编写了 C# 代码来发送邮件(我的公司邮件)。我尝试使用 gmail 并且它可以正常工作,但我的公司邮件却不行。

我确定 smtp 服务器正在运行并且端口 465 已打开,因为我可以使用相同的帐户通过 Outlook 2k7 发送邮件,telnet smtp.domain 465 ok。

当我运行代码时,它会抛出异常“System.Net.Mail.SmtpException:操作超时。”

这是我的 C# 代码:

        var fromAddress = new MailAddress("ID@domain", "Display Name");
        var toAddress = new MailAddress("ID@domain", "Display Name");
        const string subject = "Test mail";
        const string body = "Test mail";

        var smtp = new SmtpClient
        {
            Host = "smtp.domain",
            Port = 465,
            EnableSsl = true,
            DeliveryMethod = SmtpDeliveryMethod.Network,
            UseDefaultCredentials = false,
            Credentials = new NetworkCredential("ID", "pass"),
            Timeout=15000                
        };

        using (var message = new MailMessage(fromAddress, toAddress)
        {
            Subject = subject,
            Body = body,

        })
        {
            try
            {
                smtp.Send(message);
                MessageBox.Show("OK");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

任何人知道或有相同的问题已解决,请帮助我。非常感谢!

【问题讨论】:

  • 它是桌面应用程序吗?如果是这样,您是否使用 Run As Adminstrator 运行它?
  • 是的。我试过以管理员权限运行,但问题仍然存在。

标签: c# sendmail smtpclient


【解决方案1】:

尝试在您的 SmtpClient 实例中更改设置 EnableSsl = false。

【讨论】:

  • 更改属性 EanableSsl = false 后问题仍然存在
【解决方案2】:

您可以更改此代码并重复使用此代码:

        public static void sendEmail(string address, string subject, string message)
        {
            string email = "yourEmail";
            string password = "yourPass";

            var loginInfo = new NetworkCredential(email, password);
            var msg = new MailMessage();
            var smtpClient = new SmtpClient("smtp.gmail.com", portNumber);

            msg.From = new MailAddress(email);
            msg.To.Add(new MailAddress(address));
            msg.Subject = subject;
            msg.Body = message;
            msg.IsBodyHtml = true;

            smtpClient.EnableSsl = true;
            smtpClient.UseDefaultCredentials = false;
            smtpClient.Credentials = loginInfo;
            smtpClient.Send(msg);
        }

【讨论】:

  • 我试过你的代码(Babak Abad),但它仍然抛出上述异常。我认为由于安全问题,smtp 服务器拒绝了我的连接。可能是我的代码不像 Outlook 2k7 那样被信任!这是我的选择。
  • 我现在在我的项目中使用这个代码!因此,您的防火墙或防病毒软件可能会阻止您的应用程序,但 Outlook 除外。检查您的密码和服务器字符串。然后检查您的服务器是否允许从自定义程序发送电子邮件?我知道如何编辑 gmail 设置。如果您使用的是 gmail 服务器,我可以帮助您进行编辑。
猜你喜欢
  • 2011-12-28
  • 2015-03-13
  • 2014-08-30
  • 2020-06-30
  • 2014-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多