ASP.NET:发送邮件

ASP.NET:发送邮件,asp.net,Asp.net,我试图从asp.net脚本发送邮件,但收到以下错误: System.Net.Mail.SmtpFailedRecipientException:邮箱不可用。服务器响应为:4.1.8:发件人地址被拒绝:在System.Net.Mail.SmtpTransport.SendMail(邮件地址发件人、邮件地址收集收件人、字符串deliveryNotify、SmtpFailedRecipientException和exception)的System.Net.Mail.SmtpClient.Send(邮件

我试图从asp.net脚本发送邮件,但收到以下错误:

System.Net.Mail.SmtpFailedRecipientException:邮箱不可用。服务器响应为:4.1.8:发件人地址被拒绝:在System.Net.Mail.SmtpTransport.SendMail(邮件地址发件人、邮件地址收集收件人、字符串deliveryNotify、SmtpFailedRecipientException和exception)的System.Net.Mail.SmtpClient.Send(邮件消息)中找不到域,请在Clematis\u ADO.sites.Kvittering.Page\u加载(对象发送方,事件参数)

据我所知,它不能使用我指定的smtp服务器,但我使用的是我的网络主机提供的smtp服务器。那么,可能是什么错误呢

这是在webhost而不是localhost上测试的

我用的代码是:

 try
         {
             StringWriter sw = new StringWriter();
             HtmlTextWriter w = new HtmlTextWriter(sw);
             OrderConfirmationContainer.RenderControl(w);
             string s = sw.GetStringBuilder().ToString();

             MailMessage mail = new MailMessage();

             string emailSubject = "Testing";

             mail.To.Add(new MailAddress(order.getFname() + " " + order.getLname() + "<"+order.getEmail()+">"));
             mail.Sender = new MailAddress("****** <***@***.com>");
             mail.From = new MailAddress("***@***.com");
             mail.Subject = emailSubject;
             mail.IsBodyHtml = true;
             mail.Body = "<h3>" + emailSubject + "</h3>" + s;

             SmtpClient smtp = new SmtpClient();
             smtp.Host = "mailoutb1.surf-town.net";
             smtp.Send(mail);

         }
         catch (Exception exception)
         {
             if(exception != null)
                MailLabel.Text = "Mail fejlen er: " + exception.ToString();
         }
试试看
{
StringWriter sw=新的StringWriter();
HtmlTextWriter w=新的HtmlTextWriter(sw);
OrderConfirmationContainer.RenderControl(w);
字符串s=sw.GetStringBuilder().ToString();
MailMessage mail=新的MailMessage();
字符串emailSubject=“测试”;
mail.To.Add(新邮件地址(order.getFname()+“”+order.getLname()+“”);
mail.Sender=新邮件地址(“*******”);
mail.From=新邮件地址(“***@***.com”);
mail.Subject=emailSubject;
mail.IsBodyHtml=true;
mail.Body=”“+emailSubject+“”+s;
SmtpClient smtp=新SmtpClient();
smtp.Host=“mailoutb1.surf town.net”;
smtp.发送(邮件);
}
捕获(异常)
{
if(异常!=null)
maillable.Text=“Mail fejlen er:”+exception.ToString();
}

我知道一些Web主机锁定其smtp服务器,仅当“发件人”是域中的有效邮箱时才允许发送邮件。您的mail.sender值是有效邮箱吗?

我知道一些Web主机锁定其smtp服务器,仅当“发件人”为有效邮箱时才允许发送邮件是域中的有效邮箱。您的mail.sender值是有效邮箱吗?

您收到的错误似乎是因为SMTP服务器实际上拒绝了电子邮件,因为您尝试发送到或来自的域名错误或被列入黑名单


您使用的是假的电子邮件地址还是真实的电子邮件地址(请告诉我您并不是真的想向****@****.com发送电子邮件)?如果是真的,您可能需要打电话给您的ISP,查看他们使用的是什么黑名单,并查看您尝试发送到的域是否被列入黑名单。

您收到的错误似乎是因为SMTP服务器实际上拒绝了电子邮件,因为您尝试发送到或从中发送的域名要么错误,要么被列入黑名单。


您使用的是假的电子邮件地址还是真实的电子邮件地址(请告诉我您并不是真的想向****@****.com发送电子邮件)?如果是真的,你可能需要打电话给你的ISP,看看他们使用的是什么黑名单,看看你试图发送到的域名是否被列入黑名单。

如果你想同时提供地址和显示名,那么就更容易使用,而不是自己将两者结合起来

mail.To.Add(new MailAddress( order.getEmail(), order.getFname() + " " + order.getLname()));

我知道这并不能解决您的问题,但我想我会提到这一点。

如果您想同时提供地址和显示名,则更容易使用,而不是将两者结合起来

mail.To.Add(new MailAddress( order.getEmail(), order.getFname() + " " + order.getLname()));

我知道这并不能解决你的问题,但我想我会提到它。

一点必要的背景知识: SMTP服务器按设计“中继”邮件,即您将邮件发送到SMTP服务器,它会查看其是否为“本地”收件人,如果不是,则将其转发到另一台服务器以进行传递(由MX记录等确定)

不幸的是,这使得(精心制作的)垃圾邮件发送者的工作变得容易,因此现在SMTP服务器往往被锁定,因此必须满足以下条件之一:

  • 此邮件针对已知/本地收件人
  • 发送计算机与SMTP服务器在同一网络上/在同一网络内(为了讨论),或
  • 以某种方式对发件人进行身份验证(用户名/密码或类似身份验证)
  • 有些人甚至更挑剔,要求他们也知道发送(“发件人”)域

    上述原因是,您看到的错误基本上与我从我的提供商(服务器和主机)看到的错误相同,如果我尝试在未首先进行身份验证的情况下向第三方发送邮件(无论是从我们的专用服务器还是从电子邮件客户端)

    如果您使用的是通用托管web空间,并且出现此错误,那么您需要与主机(帮助页面、知识库等)进行检查,以了解他们希望您如何从应用程序发送电子邮件


    SmtpClient中似乎存在设置凭据的范围,但我认为这不是必需的,因此在详细信息方面没有太多帮助。

    一些必要的背景: SMTP服务器按设计“中继”邮件,即您将邮件发送到SMTP服务器,它会查看其是否为“本地”收件人,如果不是,则将其转发到另一台服务器以进行传递(由MX记录等确定)

    不幸的是,这使得(精心制作的)垃圾邮件发送者的工作变得容易,因此现在SMTP服务器往往被锁定,因此必须满足以下条件之一:

  • 此邮件针对已知/本地收件人
  • 发送计算机与SMTP服务器在同一网络上/在同一网络内(为了讨论),或
  • 以某种方式对发件人进行身份验证(用户名/密码或类似身份验证)
  • 有些人甚至更挑剔,要求他们也知道发送(“发件人”)域

    上述所有错误的原因是,如果我试图在没有身份验证的情况下向第三方发送邮件,您看到的错误基本上与我从我的提供商(服务器和主机)看到的错误相同