1

我正在尝试使用以下代码发送电子邮件并收到上述错误。

发送了两封电子邮件,第一封似乎可以正常发送,下面的代码似乎不起作用。

有人可以帮忙吗?

        using (var mail = new MailMessage(fromEmail.Trim(), ToEmail.Trim()))
        {
            mail.IsBodyHtml = true;

            bodyText = bodyText.Replace("**Message**", Message);

            // populate the message
            mail.Subject = subject;
            mail.Body = bodyText;

            // send it
            var smtpClient = new SmtpClient();
            smtpClient.Send(mail);
        }

配置:

  <system.net>
    <mailSettings>
      <smtp from="test@foo.com">
        <network defaultCredentials="true" port="25" host="127.0.0.1" password="" userName=""/>
      </smtp>
    </mailSettings>
  </system.net>
4

1 回答 1

3

而不是将其MailMessage作为using块的主题,而是尝试制作SmtpClient主题。

编辑:如果您的 .net 版本 < 4.0,您将需要进行一些检查以确保在尝试发送另一条消息之前处理 smtp 客户端。

假设using块也代表实例方法的主体,一个简单的测试可能是:

  1. 创建包含类的实例

  2. 通过调用上面引用的类方法发送第一条消息

  3. 设置 reference = null (换句话说,确保 SmtpClient 实际已被标记/处置。您可能希望/需要手动处置实例作为进一步检查)

    Jeff Tucker 建议您将SmtpClient.Timeout值设置为2- 有关更多信息,请参阅他的评论。

  4. 创建同一类的新实例

  5. 发送第二条消息

之后(假设可行),您可以迭代这些步骤以优化和缩小逻辑,直到您对它感到满意。

于 2012-07-12T18:36:44.963 回答