C# 更改了MailMessage属性,现在为';正在挂断客户端。发送

C# 更改了MailMessage属性,现在为';正在挂断客户端。发送,c#,winforms,mailmessage,C#,Winforms,Mailmessage,我正在使用System.Net.Mail.MailMessage从我的C#Windows应用程序发送电子邮件 我最初有这样一个: MailMessage mail = new MailMessage("from@address.com", "to@address.com"); etc工作得很好,但后来我需要向地址添加多个,所以我将其更改为: MailMessage mail = new MailMessage(); mail.From = new MailAddress("from@addr

我正在使用System.Net.Mail.MailMessage从我的C#Windows应用程序发送电子邮件

我最初有这样一个:

MailMessage mail = new MailMessage("from@address.com", "to@address.com");
etc工作得很好,但后来我需要向地址添加多个,所以我将其更改为:

MailMessage mail = new MailMessage();

mail.From = new MailAddress("from@address.com");
foreach (string to in to_add)
{
    if (to.Trim() != "")
    {
        mail.To.Add(to.Trim());
    }
}

mail.Body = message;
mail.Subject = "Subject Text";

SmtpClient client = new SmtpClient("0.0.0.0");
client.UseDefaultCredentials = true;

client.Send(mail);
这段代码可以循环几次,字符串数组中最多有3个To地址—第一次运行时,这很好—但第二次循环时,它将挂起

client.Send(mail);
我是不是遗漏了什么?这是我第一次使用MailMessage,所以我可能遗漏了一些重要的东西

干杯

莱迪


p、 我没有使用ip地址“0.0.0.0”,出于安全原因,我刚刚删除了正确的ip地址。

您必须有一个to地址

您发布的代码可能在邮件消息中没有收件人地址


此外,SMTP服务器“0.0.0.0”将不存在。这不是服务器的有效IP地址-它是为“未知”保留的。

您必须有一个to地址

您发布的代码可能在邮件消息中没有收件人地址


此外,SMTP服务器“0.0.0.0”将不存在。这不是服务器的有效IP地址-它是为“未知”保留的。

假设要添加的是一个地址数组,您不需要通过它循环添加它们。这应该起作用:

mail.To.Add( string.Join( ",", to_add ) );
因为您显然没有例外,这只会缩短您的代码

默认值为100秒。你等得够久吗

另一个选项是使用,这样它就不会阻塞


如果您还没有阅读文档,这里有一个指向的链接。

假设to\u add是一个地址数组,您不需要循环添加它们。这应该起作用:

mail.To.Add( string.Join( ",", to_add ) );
因为您显然没有例外,这只会缩短您的代码

默认值为100秒。你等得够久吗

另一个选项是使用,这样它就不会阻塞


如果您还没有阅读文档,这里有一个指向的链接。

MailMessage类实现了
IDiposable
,那么可能是因为您没有处理它

此外,在.NET 4.0之前,System.NET.Mail.SmtpClient不是一次性的,但在4.0中它实现了
IDisposable
,因此您还需要使用
语句将其包装在
中。代码如下所示:

using (MailMessage mail = new MailMessage())
{
    mail.From = new MailAddress("from@address.com");
    mail.To.Add(string.Join(",", to_add ));
    mail.Body = message;
    mail.Subject = "Subject Text";

    using (SmtpClient client = new SmtpClient("0.0.0.0"))
    {
        client.UseDefaultCredentials = true;
        client.Send(mail);
    }
}

MailMessage
类实现了
IDiposable
,所以可能是因为您没有处理它

此外,在.NET 4.0之前,System.NET.Mail.SmtpClient不是一次性的,但在4.0中它实现了
IDisposable
,因此您还需要使用
语句将其包装在
中。代码如下所示:

using (MailMessage mail = new MailMessage())
{
    mail.From = new MailAddress("from@address.com");
    mail.To.Add(string.Join(",", to_add ));
    mail.Body = message;
    mail.Subject = "Subject Text";

    using (SmtpClient client = new SmtpClient("0.0.0.0"))
    {
        client.UseDefaultCredentials = true;
        client.Send(mail);
    }
}

你好,谢谢你的回复。我将添加一些检查,但应该始终至少有一个To address(它挂起的地方肯定有一个To address)。我还应该说,这不是我正在使用的IP地址,只是我在互联网论坛上发布的地址;)你好,谢谢你的回复。我将添加一些检查,但应该始终至少有一个To address(它挂起的地方肯定有一个To address)。我还应该说,这不是我正在使用的IP地址,只是我在互联网论坛上发布的地址;)我只是提出了一系列的选择。哪一个有帮助?我只是提出了一系列的选择。哪一个帮了忙?