我试图从asp.net脚本发送邮件,但是我收到了这个错误:
System.Net.Mail.SmtpFailedRecipientException:邮箱不可用。服务器响应是:4.1.8:发件人地址被拒绝:System.Net.Mail.SmtpClient.Send上的System.Net.Mail.SmtpTransport.SendMail(MailAddress sender,MailAddressCollection recipients,String deliveryNotify,SmtpFailedRecipientException& exception)中找不到域(MailMessage消息),位于Clematis_ADO.sites.Kvittering.Page_Load(对象发送者,EventArgs e)
据我所知,它不能使用我指定的smtp服务器,但我使用我的webhost提供的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();
}
答案 0 :(得分:2)
您收到的错误似乎是因为SMTP服务器实际上拒绝了该电子邮件,因为您尝试发送或发送的域名错误或被列入黑名单。
您使用虚假的电子邮件地址进行测试还是使用真实的电子邮件地址(请告诉我您并不是真的尝试向****@****.com发送电子邮件)?如果这是真的,您可能需要致电您的ISP并查看他们使用的黑名单,看看您尝试发送到的域名是否列入黑名单。
答案 1 :(得分:1)
我知道有些webhost会锁定他们的smtp服务器,只允许在“sender”是域中的有效邮箱时发送邮件。您的mail.sender值是否为有效邮箱?
答案 2 :(得分:0)
如果您想同时提供地址和显示名称,则可以更轻松地使用constructor that takes two parameters而不是自己将两者结合使用。
mail.To.Add(new MailAddress( order.getEmail(), order.getFname() + " " + order.getLname()));
我知道这并不能解决你的问题,但我想我会提到它。
答案 3 :(得分:0)
一些必要的背景: SMTP服务器按设计“中继”消息,即您向SMTP服务器发送消息,它会查看它是否为“本地”接收者,如果不是,则将其转发到另一台服务器进行传送(由MX记录等确定)。
不幸的是,这使垃圾邮件制造者很容易(很好地制作),所以现在SMTP服务器会被锁定,因此必须满足以下条件之一:
有些人更挑剔,并要求他们也知道发送(“来自”)域名。
以上所有的原因是,如果我尝试将邮件发送给第三方而没有首先进行身份验证(或者是其中一个),您看到的错误基本上与我从我的提供商(服务器和托管服务器)看到的错误相同我们的专用服务器或电子邮件客户端)。
如果您正在使用通用托管网站空间并收到此错误,那么您需要检查主机(帮助页面,知识库,等等),以了解他们希望您能够从您的应用程序发送电子邮件。
SmtpClient中似乎存在用于设置凭据的范围,但是我没有发现这是必要的,因此对细节没有多大帮助。