【问题标题】:SMTP Mail not working [closed]SMTP邮件不工作[关闭]
【发布时间】:2012-12-06 16:07:00
【问题描述】:

我正在尝试在 Intranet 上发送邮件。我设计了一个页面,其中的值将从文本框中接受,并传递到相应的字段。

这是我的前端代码(请忽略<tr><td> 标签):

<td>
    FROM
</td>
<td>
<asp:TextBox ID="txtFrom" runat="server" CssClass="Textbox1" Width="414px"></asp:TextBox>
</td>
<td>
    SENDER MAIL
</td>
<td>
<asp:TextBox ID="txtMailAdd" runat="server" CssClass="Textbox1" Width="414px"></asp:TextBox>
<td>
    SMTP IP
</td>
<td>
<asp:TextBox ID="txtSMTP" runat="server" CssClass="Textbox1" Width="414px"></asp:TextBox>
<td>
   RECEIVER
</td>
<td>
<asp:TextBox ID="txtReceiver" runat="server" CssClass="Textbox1" Width="414px"></asp:TextBox>
<td>
    TO MAIL
</td>
<td>
<asp:TextBox ID="txtTo" runat="server" CssClass="Textbox1" Width="414px"></asp:TextBox>

这是我的后端代码:

protected void btnSMail_Click(object sender, EventArgs e)
{
    string smtpadd = txtSMTP.Text;

    try
    {
        if (smtpadd != "" && smtpadd != null)
        {
            MailMessage mm = new MailMessage();
            SmtpClient sc = new SmtpClient(txtSMTP.Text);

            if (!fupAttach.HasFile)
            {
                FileStream fs = new FileStream("D:\\DEV\\New.xml", FileMode.Open, FileAccess.Read);
                Attachment attch = new Attachment(fs, "License Generation in XML", MediaTypeNames.Application.Octet);
                mm.Attachments.Add(attch);
            }

            //sc.Host = "10.8.4.118";
            sc.Port = 25;
            sc.EnableSsl = false; // runtime encrypt the SMTP communications using SSL

            mm.To.Add(new MailAddress(txtTo.Text, txtReceiver.Text));
            mm.From = new MailAddress(txtMailAdd.Text, txtFrom.Text);
            mm.Subject = txtSub.Text;
            //mm.To= new MailAddress(txtTo.Text);
            mm.Body = txtBody.Text;

            if (fupAttach.HasFile)
            {
                String FileName = fupAttach.PostedFile.FileName;
                Attachment mailAttachment = new Attachment(FileName, MediaTypeNames.Application.Octet);
                mm.Attachments.Add(mailAttachment); 
            }

            lblMailFail.Text = "Mail Successfully Sent";

            sc.Send(mm);
        }

        else
        {
            lblMailFail.Text = "Enter an SMTP IP";
        }
    }

现在当我尝试在文本框中输入以下值时

Sender Mail: xyz@sdc.ba.co.in
SMTP ID: 10.8.4.2
Receiver Mail: xyz@sdc.ba.co.in

我收到一个错误

System.Net.Mail.SmtpFailedRecipientException: Mailbox unavailable. The server response was: 5.7.1 Unable to relay for xyz@sdc.ba.co.in at System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, SmtpFailedRecipientException&amp; exception) at System.Net.Mail.SmtpClient.Send(MailMessage message) at Lic_Gen.btnSMail_Click(Object sender, EventArgs e)

有人可以指导我哪里出错了吗?

【问题讨论】:

  • 确保您使用正确的 smtp 端口。
  • SMTP 服务器不允许中继(即将电子邮件转发到另一台服务器)。您要么必须配置 SMTP 服务器以允许中继,要么切换到另一个。
  • 虽然作为一点,在发送之前不要说发送成功。还要将它放在一个 try catch 中,以考虑到邮件服务器可能会关闭的事实,如果发生这种情况,那么这段代码就会中断。

标签: c# asp.net email smtp sendmail


【解决方案1】:

邮件服务器不允许您(或您的 IP)向指定的电子邮件地址发送邮件。可以对邮件服务器here做详细测试。

您可以在Eudora website 上找到有关邮件中继的更多信息(大部分信息适用于所有邮件服务器)

【讨论】:

    【解决方案2】:

    这是一个 SMTP 配置问题,与您的 C# 代码无关。

    【讨论】:

    • 那么我的代码就完美了吗? :P
    • 我不会说它是完美的,但是是的,如果 SMTP 配置正确,它会起作用 :D
    • :P 哈哈。好的。谢谢。我将如何检查我的 SMTP 配置是否正确? :P
    • @Syrion:是的,关键信息在服务器响应Unable to relay for ...中,问题一定是邮件服务器没有配置为接受来自邮件收件人域的用户的邮件。
    猜你喜欢
    • 2017-10-27
    • 2017-12-30
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 2014-03-23
    • 2014-01-19
    • 2015-06-27
    相关资源
    最近更新 更多