使用System.Web.Mail发送电子邮件

时间:2013-02-02 13:42:34

标签: asp.net

我想在asp发送电子邮件。

我使用此代码

using System.Web.Mail;

MailMessage msg = new MailMessage();
msg.To = "aspnet@yahoo.com";
msg.From = "info@mysite.com";
msg.Subject = "Send mail sample";
msg.BodyFormat = MailFormat.Html;
string msgBody="Hello My Friend. This is a test.";
msg.Body = msgBody ;
SmtpMail.SmtpServer = "localhost";
SmtpMail.Send(msg);

但我得到错误:

  

错误的命令序列。服务器响应是:此邮件服务器在尝试发送到非本地电子邮件地址时需要身份验证。请检查您的邮件客户端设置或联系您的管理员以验证是否为此服务器定义了域或地址。

如何使用asp发送电子邮件?

3 个答案:

答案 0 :(得分:4)

我使用此代码。

 MailMessage msg = new MailMessage();
 msg.Body = "Body";

 string smtpServer = "mail.DomainName";
 string userName = "info@mysite.com";
 string password = "MyPassword";
 int cdoBasic = 1;
 int cdoSendUsingPort = 2;
 if (userName.Length > 0)
  {
    msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserver", smtpServer);
    msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", 25);
    msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusing", cdoSendUsingPort);
    msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", cdoBasic);
    msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", userName);
    msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", password);
    }
    msg.To = user.Email;
    msg.From = "info@Mysite.com";
    msg.Subject = "Subject";
    msg.BodyEncoding = System.Text.Encoding.UTF8;
    SmtpMail.SmtpServer = smtpServer;
   SmtpMail.Send(msg);

答案 1 :(得分:1)

您可能需要提供凭据。

示例:

smtpMail.Credentials = new NetworkCredential("username", "password")

答案 2 :(得分:0)

如果您尝试发送电子邮件而不进行身份验证,我担心这是不可能的。如果您网站中的任何用户都可以发送没有密码的电子邮件,那就太可怕了。它将允许用户从其他人帐户发送电子邮件。因此,考虑到安全性,发送电子邮件将需要提供电子邮件地址和密码

var fromAddress = "";      // Email Address here. This will be the sender.
string fromPassword = ""; // Password for above mentioned email address.
var toAddress = "";//   Receiver email address here
string subject = "Hi";
string body = "Body Text here";
var smtp = new System.Net.Mail.SmtpClient();
    {
        smtp.Host = "smtp.gmail.com"; // this is for gmail.
        smtp.Port = 587;
        smtp.EnableSsl = true;
        smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
        smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
        smtp.Timeout = 20000;
    }
smtp.Send(fromAddress, toAddress, subject, body); 

<强> [编辑] 对不起我的错误我没注意到。它们都用于同一目的。如果您使用的是.Net框架的更高版本(2.0或更高版本),请使用System.Net.Mail。如果您使用System.Web.Mail,它只显示一个警告,说这是不推荐使用的。但这样可行。

以下是System.web.mail

的答案
  MailMessage mail = new MailMessage();
  mail.To.Add("to@domain.com");
  mail.From = new MailAddress("from@domain.com");
  mail.Subject = "Email using Gmail";
  mail.Body = "";


  mail.IsBodyHtml = true;
  SmtpClient smtp = new SmtpClient();
  smtp.Host = "smtp.gmail.com";
smtp.EnableSsl = true;
smtp.Credentials = new System.Net.NetworkCredential(mail.From,"YourPassword");
    smtp.Send(mail);