【问题标题】:SmtpFailedRecipientsException Not workingSmtpFailedRecipientsException 不工作
【发布时间】:2011-02-07 15:39:13
【问题描述】:

我需要检查邮件是否已发送给现有收件人

这是我的代码

        try
        {
            var smtpServer = new SmtpClient("smtp.gmail.com", 587)
            {
               Credentials = new System.Net.NetworkCredential(MAIL_FROM, PASSWORD),
               EnableSsl = true
            };

            var mail = new MailMessage();
            mail.From = MAIL_FROM
            mail.To.Add(new MailAddress("nonexisting@gmail.com"));
            mail.Subject = title;
            mail.Body = content;
            smtpServer.Send(mailMessage);
        }
        catch (SmtpFailedRecipientsException ex)
        {
             //   never occures
        }

但是当没有收件人时,SmtpFailedRecipientsException 永远不会发生

有没有办法配置 SmtpServer 来触发这个异常?

【问题讨论】:

  • 那是您正在测试的实际电子邮件地址吗?您是否可能只是向 nonexisting@gmail.com 发送大量电子邮件?
  • 不,nonexisting@gmail.com - 它只是一个例子。

标签: c# system.net.mail


【解决方案1】:

问题是 GMail 没有说用户在 SMTP 交易期间是无效的。原因是垃圾邮件发送者过去常常执行字典攻击以查找“bob@gmail.com”和“tom@gmail.com”等。任何未标记为“不存在”的地址都是有效地址。因此,大多数 SMTP 服务器现在只接受 SMTP 事务期间的所有地址,要么只是静默丢弃无效地址,要么稍后发送退回消息。无论哪种情况,代码都无法确定这一点。

【讨论】:

  • 我注意到在我的已发送文件夹中的 gmail 帐户中,有来自邮件传递子系统的邮件。有没有办法以编程方式获取邮件然后解析?
  • 您可以使用IMAP 访问 Google,这将使您可以访问已发送的文件夹。我建议寻找 IMAP 库,而不是自己滚动。
【解决方案2】:
    in source view
    ------------------------------------------------------------------------------------------
            <html xmlns="http://www.w3.org/1999/xhtml">
            <head runat="server">
            <title>Send Mail using asp.net</title>
            </head>
            <body>
            <form id="form1" runat="server">
            <div>
            <table style=" border:1px solid" align="center">
            <tr>
            <td colspan="2" align="center">
            <b>Send Mail using asp.net</b>
            </td>
            </tr>
            <tr>
            <td>
            From:
            </td>
            <td>
            <asp:TextBox ID="txtFrom" runat="server"></asp:TextBox>
            </td>
            </tr>
            <tr>
            <td>
            Subject:
            </td>
            <td>
            <asp:TextBox ID="txtSubject" runat="server"></asp:TextBox>
            </td>
            </tr>
            <tr>
            <td>
            To:
            </td>
            <td>
            <asp:TextBox ID="txtTo" runat="server"></asp:TextBox>
            </td>
            </tr>
            <tr>
            <td valign="top">
            Body:
            </td>
            <td>
            <asp:TextBox ID="txtBody" runat="server" TextMode="MultiLine" Columns="30" Rows="10" ></asp:TextBox>
            </td>
            </tr>
            <tr>
            <td>
            </td>
            <td>
            <asp:Button ID="btnSubmit" Text="Send" runat="server" onclick="btnSubmit_Click" />
            </td>
            </tr>
            </table>
            </div>
            </form>
            </body>
            </html>
    ---------------------------------------------------------------------------------------In codeview
------------
         namespace  using system.net;
         btnSubmit_click(object sender,eventargs e)
        {
             MailMessage Msg = new MailMessage();
                // Sender e-mail address.
                Msg.From = txtFrom.Text;
                // Recipient e-mail address.
                Msg.To = txtTo.Text;
                Msg.Subject = txtSubject.Text;
                Msg.Body = txtBody.Text;
                // your remote SMTP server IP.
                SmtpMail.SmtpServer = "10.20.72.1";
                SmtpMail.Send(Msg);
                Msg = null;
                Page.RegisterStartupScript("UserMsg", "<script>alert('Mail sent thank you...');if(alert){ window.location='SendMail.aspx';}</script>");
                }
                catch (Exception ex)
                {
                Console.WriteLine("{0} Exception caught.", ex);
                }

【讨论】:

  • 这篇文章没有简明扼要地回答原始问题,并且有几个程序语法错误应该更正。
猜你喜欢
  • 2020-10-29
  • 1970-01-01
  • 2021-01-10
  • 1970-01-01
  • 2019-01-19
  • 1970-01-01
  • 2018-12-22
  • 2016-04-19
  • 1970-01-01
相关资源
最近更新 更多