【问题标题】:Email sending using SMTP not working with asp.net使用 SMTP 发送电子邮件不适用于 asp.net
【发布时间】:2013-07-28 10:34:27
【问题描述】:

我正在尝试在 asp.net 中使用 SMTP 发送电子邮件。以下代码不起作用。

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;} 后它起作用了是不是没有其他过程可以在发送时不需要电子邮件和密码来推送电子邮件?
  • 您希望任何人从您的帐户发送电子邮件吗?如果没有,那么当然需要凭据。
  • 你能做的,是在服务器上设置 SMTP,然后通过本地主机发送。谷歌iis smtp。完成后,您需要为电子邮件域设置 SFR 记录并将您的服务器添加到其中,这样发送的电子邮件就不会被放入垃圾邮件中。这样您就可以在没有用户名和密码的情况下发送。可以将 SMTP 服务器设置为仅接受来自本地计算机的电子邮件。
  • 我只需要从已在电子邮件部分的反馈表中输入的电子邮件地址发送邮件,我只想定义将来自反馈的消息发送到哪个电子邮件。我不想要中间电子邮件和凭据。 [IE。只是发送和发送消息,类似于 php 中的 mail() 函数]
  • @SmithMart,能否请您出示一些代码。我确实可以访问我的网络服务器。我可以在现场或本地实施它。

标签: c# asp.net email smtp


【解决方案1】:

把这个放在答案中,这样更容易阅读。

作为对您的 cmets 的答复,这是我将通过没有凭据的服务器发送的邮件消息。

您可以从任何地址向任何人发送电子邮件。

但是,请记住,无法保证电子邮件会到达目的地。邮件过滤器通常会拒绝来自未添加到该域的 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. 使用第 3 方发送电子邮件,例如 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............
  • 该错误是因为 localhost 没有运行 smtp 服务器或者它正在运行一个 smtp 服务器,但它被防火墙阻止了。确保在同一台机器上运行 smtp 服务器
  • MailMessageSmtpClient 实例都应该在 using 块中。
猜你喜欢
  • 2016-08-30
  • 2023-03-09
  • 2011-07-18
  • 1970-01-01
  • 1970-01-01
  • 2016-04-17
  • 1970-01-01
  • 2018-03-23
相关资源
最近更新 更多