发送本地电子邮件到hotmail问题

时间:2012-02-20 13:01:00

标签: c# asp.net .net frameworks hotmail

我有以下代码导致'未指定SMTP主机'。 任何想法为什么会这样? 非常感谢

var mailMessage = new System.Net.Mail.MailMessage();
mailMessage.To.Add(new MailAddress("myemail@hotmail.co.uk"));
mailMessage.From = new MailAddress("atest@test.com");

mailMessage.Subject = "my test subject";
mailMessage.Body = "my test body";
mailMessage.IsBodyHtml = true;

var smtpClient = new SmtpClient { EnableSsl = true };
object userState = mailMessage;
smtpClient.Send(mailMessage);

我现在尝试了以下内容但仍然失败

            var client = new SmtpClient("smtp.gmail.com", 587)
            {
                Credentials = new NetworkCredential("me@gmail.com", "password"),
                EnableSsl = true,
                DeliveryMethod = SmtpDeliveryMethod.Network,
               UseDefaultCredentials = false
            };

            var mail = new MailMessage("test@example.com", "me@gmail.com", "hello", "there");
            mail.Body = "Hello";
            mail.Subject = "hi";
            client.Send(mail);

5 个答案:

答案 0 :(得分:2)

因为您尚未指定smtpClient.Host属性。

答案 1 :(得分:1)

您似乎没有定义要发送的服务器,除非您已在应用程序配置中完成此操作。

<system.net>
        <mailSettings>
            <smtp>
                <network host="127.0.0.1" port="25"/>
            </smtp>
        </mailSettings>
    </system.net>

您需要指定您的设置,而不是我在上面示例中使用的本地设置。

答案 2 :(得分:1)

var client = new SmtpClient(smtpServer, 25)
{
    Credentials = new NetworkCredential(userName, password),
    EnableSsl = false
};

MailMessage mail = new MailMessage(sender, receiver, head, body);
client.Send(mail);

您应该如上所示指定您的Smtp服务器。


或者您可以在web.config文件中指定它。

<mailSettings>
  <smtp>
    <network 
       host="server" 
       port="portNumber"
       userName="username"
       password="password" />
  </smtp>
</mailSettings>

答案 3 :(得分:0)

您是否在web.config中添加了mailSettings?请查看Scott的以下链接。

http://weblogs.asp.net/scottgu/archive/2005/12/10/432854.aspx

答案 4 :(得分:0)

在发送消息之前启用SSL

smtpClient.EnableSsl=true;