【问题标题】:SMTP Client shows error "Requested action not taken" in C# appSMTP 客户端在 C# 应用程序中显示错误“未采取请求的操作”
【发布时间】:2011-07-24 00:58:13
【问题描述】:

我正在尝试使用 hotmail 帐户设置电子邮件发送应用程序。

代码如下所示:

MailMessage mail = new MailMessage(from, to);
        mail.Subject = "Proba email";
        mail.Attachments.Add(new Attachment("C:\\Documents and Settings\\Proba.txt"));
        SmtpClient client = new SmtpClient();
        client.UseDefaultCredentials = false;
        client.Port = 587; // 465 568
        client.Host = "smtp.live.com";
        client.EnableSsl = true;
        client.Credentials = new System.Net.NetworkCredential("smg@hotmail.com", "password");
        client.SendCompleted += new SendCompletedEventHandler(client_SendCompleted);
        client.SendAsync(mail, "token");

使用异步我实际上没有收到任何错误,我什至收到反馈说消息已发送(事件触发器)但消息从未到达。如果我使用简单的 client.Send void,我会收到以下错误:

5.3.4 未采取请求的行动;要继续发送消息,请登录您的帐户。

那么关于问题可能是什么的任何想法?当我试图传递 hotmail 的 SMTP 设置时,我得到了各种设置,说端口 25,然后是 587,所以也许它在那里。任何帮助将不胜感激!

  • 好的,现在它肯定可以工作了,我想问一下我是否需要定期进行“我不是机器人检查”还是一次性的?

【问题讨论】:

  • 我重新登录了我的帐户,它要求检查垃圾邮件,看看我是否是机器人。现在消息通过并实际到达,但我需要经常这样做还是一次性的?
  • 如果一个帐户对机器人进行检查,那么可能不允许使用机器人?你正在编写一个机器人。
  • 我认为垃圾邮件问题之前已经被问过,您无能为力。收件人的地址簿中必须包含您的发件人地址,以确保递送到收件箱。
  • 在异步模式下不会收到错误消息
  • 所以我看到异步不能出错。如果机器人用于发送垃圾邮件,则不允许使用。你可以想象,我写的不是垃圾邮件机器人,而是一个简单的电子邮件客户端。因此,登录帐户几乎可以“解决”问题。

标签: c# smtp send


【解决方案1】:

我有一个类似的设置,我只使用对我有用的 Send()。我唯一额外的就是

 client.DeliveryMethod = SmtpDeliveryMethod.Network;

就在client.Send(); 之前。不确定仅此一项是否可以解决您的问题。您是否有使用相同服务器和凭据的 Outlook 设置?

【讨论】:

  • 我认为(?)它默认使用网络方法,所以我认为您不需要添加它。
【解决方案2】:

这是我的设置,顺便说一句,异步不会返回任何错误。

<system.net>
<mailSettings>
  <!-- E-mail server settings -->
  <smtp from="do-not-reply@example.com">
    <network host="smtp.example.com" port="25" userName="" password="" defaultCredentials="true" />
  </smtp>
</mailSettings>

    void SendEmail(EmailEntity email)
    {
        var mailMessage = new MailMessage { From = new MailAddress(email.From) };
        mailMessage.To.Add(new MailAddress(email.To));
        mailMessage.Subject = email.Subject;
        mailMessage.Body = email.Body;
        mailMessage.IsBodyHtml = true;

        // Send the email
        var client = new SmtpClient();
        client.Send(mailMessage);
    }

【讨论】:

  • 谢谢,它现在确实有效,我想我应该了解一下这种垃圾邮件保护,看看我是否可以在不验证每 X 封邮件的情况下发送邮件。
【解决方案3】:
SmtpClient smtpClient = new SmtpClient();
        MailMessage message = new MailMessage();

        try
        {
           // System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
            MailAddress fromAddress = new MailAddress(txt_name.Text, txt_to.Text);


            smtpClient.Host = "smtp.gmail.com";


            smtpClient.Port = 25;

           // msg.From = new System.Net.Mail.MailAddress("xyz@gmail.com");

          message.From = fromAddress;

            message.To.Add("xyz111@gmail.com");


            message.Body = txt_des.Text;
            smtpClient.EnableSsl = true;

            System.Net.NetworkCredential NetworkCred = new System.Net.NetworkCredential();

            NetworkCred.UserName = "xyz@gmail.com";

            NetworkCred.Password = "xtz";

            smtpClient.UseDefaultCredentials = true;

            smtpClient.Credentials = NetworkCred; 


            smtpClient.Send(message);

            lblStatus.Text = "Email successfully sent.";
        }
        catch (Exception ex)
        {
            lblStatus.Text = "Send Email Failed." + ex.Message;
        }

【讨论】:

    猜你喜欢
    • 2013-02-12
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 2013-05-26
    • 2017-10-30
    • 2012-04-13
    相关资源
    最近更新 更多