使用ASP.NET发送电子邮件时SMTP不起作用

3

我正在尝试使用ASP.NET发送电子邮件。以下代码无法正常工作:

public string send_email(string name, string email, string message)
{
    var fromAddress = email;
    var toAddress = "ashish_sharma307@hotmail.com";
    string subject = "Feedback";
    string body = "From: " + name+ "\n";
    body += "Email: " + email + "\n";
    body += "Subject: " + subject + "\n";
    body += "Question: \n" + message + "\n";
    // smtp settings
    var smtp = new System.Net.Mail.SmtpClient();
    {
        smtp.Host = "smtp.live.com";
        smtp.Port = 587;
    }
    smtp.Send(fromAddress, toAddress, subject, body);


    return "Your query has been submitted.";
}

按预期,这并没有起作用。我正在尝试从反馈表单发送电子邮件。


在我添加了 {smtp.Host="smtp.live.com";smtp.Port=587;smtp.EnableSsl=true;smtp.DeliveryMethod=System.Net.Mail.SmtpDeliveryMethod.Network;smtp.Credentials=new System.Net.NetworkCredential("myemail","mypassword");smtp.Timeout=20000;} 后它可以工作。还有其他无需发件人邮箱和密码的推送电子邮件的过程吗? - user79307
你是否希望其他人可以从你的账户发送电子邮件?如果不是,那么当然需要凭据。 - Ehsan
我只需要从反馈表单中输入的电子邮件地址发送邮件,并且我只想定义反馈消息要发送到哪个电子邮件地址。我不想要任何中间邮件和凭据。[即仅有发件人和收件人,类似于PHP中的mail()函数] - user79307
@SmithMart,请问您能展示一些代码吗?我可以访问我的Web服务器。我可以实时或本地实现它。 - user79307
链接:http://forums.iis.net/p/1157046/1901343.aspx - 这是如何设置SMTP的方法,应该能让你走上正确的轨道。但是,如果你尝试以别人的身份发送电子邮件,可能会遇到垃圾邮件过滤器的麻烦。谷歌SPF记录以了解更多关于为什么垃圾邮件过滤器很可能会将其吞噬的信息。 - SmithMart
显示剩余2条评论
1个回答

0
将此放在答案中,以便更容易阅读。
回答您的评论,这是我将通过没有凭据的服务器发送的邮件消息。
您可以从任何地址向任何人发送电子邮件。
但是,请记住,电子邮件到达目的地并不保证。邮件过滤器通常会拒绝来自未添加到该域的SPF记录的smtp服务器的电子邮件。
MailMessage m = new MailMessage();

m.From = new MailAddress("Smith@MyDomain.com");
m.To.Add(new MailAddress("someone@TheirCompany.com));
m.Subject = "Message from Smith";
m.Body = "Hello, Test Message";
SendEmail(m);

var smtp = new SmtpClient
{
Host = "localhost",
Port = 25,
UseDefaultCredentials = false,                    
};

smtp.Send(m);

这是用于通过本地机器发送邮件的,假设您已设置了SMTP服务器。

发送电子邮件有很多变量和选项,每个选项都有自己的限制。

选项

  1. 设置和运行自己的SMTP服务器
  2. 使用第三方发送电子邮件,例如Campain Monitor - 还有其他提供商
  3. 如果您只从公司域发送,并且他们拥有Exchange电子邮件,请使用该服务器。

抛出了一个很长的异常错误!类似于 System.Net.Mail.SmtpException: Failure sending mail. ---> System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 127.0.0.1:25............ - user79307
那个错误是因为本地主机没有运行SMTP服务器,或者正在运行一个被防火墙阻止的SMTP服务器。请确保在同一台机器上运行一个SMTP服务器。 - SmithMart
MailMessageSmtpClient实例都应该在using块中。 - John Saunders

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接