我如何在电子邮件中发送评论?

时间:2011-05-25 08:00:26

标签: asp.net email

我有一些文字框,如姓名,电子邮件地址,电话号码。并在我的页面上发表评论。

我必须将值发送到我的电子邮件地址..

我该怎么做? 我在做:

protected void btnSubmit_Click(object sender, EventArgs e)
{
    SmtpClient client = new SmtpClient();
    MailMessage message = new MailMessage();

    try
    {
        MailAddress fromAddress = new MailAddress(txtEmail.Text, txtName.Text);

        SmtpClient.Host = "localhost";
        SmtpClient.Port = 25;

        message.From = fromAddress;
        message.To.Add("xyz@gmail.com");
        message.Subject = "Feedback";
        message.IsBodyHtml = false;
        message.Body = txtComment.Text;
        SmtpClient.Send(message);

        Response.Write("Email successfully sent.");
    }
    catch (Exception ex)
    {
        Response.Write("Send Email Failed." + ex.Message);
    }
}

我收到以下错误:

An object reference is required for the nonstatic field, method, or property 'System.Net.Mail.SmtpClient.Send(System.Net.Mail.MailMessage)'

4 个答案:

答案 0 :(得分:2)

    SmtpClient.Host = "localhost";
    SmtpClient.Port = 25;
    ~~~~~~~~~~~~~~~~~~~~
    SmtpClient.Send(message);

这些行正在尝试使用类SmtpClient的成员。但是,由于这些成员未定义为static,您需要引用该类的实例,您已将其称为client

尝试

    client.Host = "localhost";
    client.Port = 25;
    ~~~~~~~~~~~~~~~~~~~~
    client.Send(message);

此外,对类和实例成员之间的差异读取this article

最后,当SmtpClient实现IDisposable时,我会更改您的代码以将其包装在using块中,因为这将确保您在完成后正确清理SMTP会话。

using (SmtpClient client = new SmtpClient()) 
{
    // YOUR CODE
}

答案 1 :(得分:0)

public static string sendMail(string to, string title, string subject, string body)
        {
            try
            {
                MailMessage mail = new MailMessage();
                SmtpClient smtp = new SmtpClient();
                MailAddress fromAddress = new MailAddress(txtEmail.Text, txtName.Text);

                if (to == "")
                    to = fromAddress.Address;
                MailAddressCollection m = new MailAddressCollection();
                m.Add(to);
                mail.Subject = subject;
                mail.From = fromAddress;
                mail.Body = body;
                mail.IsBodyHtml = true;
                mail.ReplyTo = fromAddress;
                mail.To.Add(m[0]);
                smtp.Host = "smtp.gmail.com";
                smtp.Port = 25;
                smtp.EnableSsl = true;
                smtp.Credentials = new System.Net.NetworkCredential(fromAddress.Address, "XXXX");//"XXXX" is the password of the sender.
                ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; }; 

                smtp.Send(mail);

                return "done";
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
        }

答案 2 :(得分:0)

我做到了这一点: -

protected void btnSubmit_Click(object sender, EventArgs e)

{

MailMessage mailmsg = new MailMessage();

    string name = txtName.Text.ToString();
    string contact = txtPhoneNo.Text.ToString();
    string comment = txtComment.Text.ToString();
    string checkIn = txtCheckIn.Text.ToString();
    string from = txtEmail.Text.ToString();

    mailmsg.To.Add("recipientemailid@gmail.com");
    mailmsg.From = new MailAddress(from.Trim());

    mailmsg.Subject = "Test message";

    mailmsg.Body = "This Query is submitted by user " + name.Trim() + ", "+ contact.Trim() + ", " + comment.Trim() + ", " + checkIn.Trim();
    mailmsg.IsBodyHtml = true;

    SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
    client.EnableSsl = true;

    NetworkCredential credentials = new NetworkCredential("recipientemailid@Gmail.com", "password");
    client.Credentials = credentials;

    try
    {
        //try to send the mail message
        client.Send(mailmsg);
        Response.Write("sent!");
    }
    catch
    {
        //some feedback if it does not work
        Response.Write("failed!");
    }
}

答案 3 :(得分:0)

尝试

client.Host = "localhost";
client.Port = 465;
~~~~~~~~~~~~~~~~~~~~
client.Send(message);

请勿尝试使用或管理一次性电子邮件,因为您会明确接触到垃圾邮件拦截器。您的代码是开放的,非常容易识别谁在使用代码,从哪里开始。