2012-03-27 136 views
10

有没有任何例子可以解释我从本地主机服务器发送电子邮件? 我已经写了这个例子,但它不起作用的错误是“发送邮件失败”。通过本地主机服务器在asp.net发送电子邮件

SmtpClient smtpClient = new SmtpClient(); 
     smtpClient.Host = "localhost"; 
     smtpClient.Port = 25; 
     smtpClient.EnableSsl = false; 
     smtpClient.Credentials = new NetworkCredential("[email protected]", "secret"); 
     smtpClient.Send("[email protected]", "[email protected]", "Let’s eat lunch!", "Lunch at the Steak House?");//here is the error 

我应该怎么做web.config?

+1

您是否在本地主机上配置了SMTP? – Habib 2012-03-27 11:25:55

+0

你正在使用本地主机,并使用雅虎的凭据,我不认为这会工作 – Habib 2012-03-27 11:31:08

回答

19

这里亚去:) localhost-with-aspnet-without-smtp-server

让我请知道它是否适合你,你需要它的方式。


上面的链接不起作用,所以我会改进答案。

出于测试目的,我们可以使用localhost这样:How to Test Email Without Configure SMTP in ASP.NET

万一链路出现故障再次,基本上我们必须修改web.config中像这样:

<system.net> 
    <mailSettings> 
     <smtp deliveryMethod="SpecifiedPickupDirectory"> 
     <specifiedPickupDirectory pickupDirectoryLocation="C:\Mails\"/> 
     </smtp> 
    </mailSettings> 
    </system.net> 

和C#代码

MailMessage mailMessage = new MailMessage(); 
    MailAddress fromAddress = new MailAddress("[email protected]"); 
    mailMessage.From = fromAddress; 
    mailMessage.To.Add("[email protected]"); 
    mailMessage.Body = "This is Testing Email Without Configured SMTP Server"; 
    mailMessage.IsBodyHtml = true; 
    mailMessage.Subject = " Testing Email"; 
    SmtpClient smtpClient = new SmtpClient(); 
    smtpClient.Host = "localhost"; 
    smtpClient.Send(mailMessage); 

这将输出一个文件到我们想要的目录。

+0

旁注:'System.Web.Mail.MailMessage'现已被弃用。你可以使用'System.Net.Mail.MailMessage'。 – rst 2017-07-23 09:43:54

2

您需要在web.config中指定SMTP服务器的设置。有几个例子在网上(如this

<system.net> 
    <mailSettings> 
     <smtp deliveryMethod="Network" from="[email protected]"> 
      <network host="smtp.mail.com" userName="[email protected]" password="pwd" port="25"/> 
     </smtp> 
    </mailSettings> 
</system.net> 

然后,你可以简单地使用SmtpClient类发送:

SmtpClient smtpClient = new SmtpClient(); 
smtpClient.EnableSsl = true; 

MailMessage msg = new MailMessage(); 
msg.To.Add("[email protected]"); 
msg.Subject = "test"; 
msg.Body = "test body"; 

smtpClient.Send(msg); 
+0

你不需要任何额外的SMTP服务器......;) – walther 2012-03-27 11:33:44

+0

我同意它是否安装在本地主机上。如果您使用外部提供商(例如Rackspace),那该怎么办? – Strillo 2012-03-27 11:38:21

2

这里是样本:

public static void SendMailMessage(string from, string to, string bcc, string cc, string subject, string body) 
{ 
    // Instantiate a new instance of MailMessage 
    MailMessage mMailMessage = new MailMessage(); 

    // Set the sender address of the mail message 
    mMailMessage.From = new MailAddress(from); 
    // Set the recepient address of the mail message 
    mMailMessage.To.Add(new MailAddress(to)); 

    // Check if the bcc value is null or an empty string 
    if ((bcc != null) && (bcc != string.Empty)) 
    { 
     // Set the Bcc address of the mail message 
     mMailMessage.Bcc.Add(new MailAddress(bcc)); 
    }  // Check if the cc value is null or an empty value 
    if ((cc != null) && (cc != string.Empty)) 
    { 
     // Set the CC address of the mail message 
     mMailMessage.CC.Add(new MailAddress(cc)); 
    }  // Set the subject of the mail message 
    mMailMessage.Subject = subject; 
    // Set the body of the mail message 
    mMailMessage.Body = body; 

    // Set the format of the mail message body as HTML 
    mMailMessage.IsBodyHtml = true; 
    // Set the priority of the mail message to normal 
    mMailMessage.Priority = MailPriority.Normal; 

    // Instantiate a new instance of SmtpClient 
    SmtpClient mSmtpClient = new SmtpClient(); 
    // Send the mail message 
    mSmtpClient.Send(mMailMessage); 
} 

并调用该函数:

SendMailMessage("[email protected]", "[email protected]", "[email protected]", "[email protected]", "Sample Subject", "Sample body of text for mail message") 
+0

我得到了'System.InvalidOperationException:没有指定SMTP主机.'。 – mattalxndr 2017-10-25 16:39:18

1
bool ret = true; 

      try 
      { 
       string _smtpServer = ConfigurationSettings.AppSettings["appEmailHost"]; 

       Web.Mail.Mail mail = new Web.Mail.Mail(_smtpServer,   
     System.Web.Mail.MailFormat.Html, System.Web.Mail.MailPriority.Normal); 
       mail._From = [email protected]; 
       mail._To = [email protected]; 
       mail._Subject = subject; 

       mail._Body = body; 
       mail.SendMail(); 
       ret = true; 
      } 
      catch(Exception exp) 
      { 
       _GravaErro(exp); 
       ret = false; 
      } 

      return ret; 
相关问题