2 Stimmen

Wie kann ich einen Kommentar per E-Mail senden?

Ich habe einige Textfelder wie Name, E-Mail Adresse, Telefonnummer und Kommentar auf meiner Seite.

Ich muss die Werte an meine E-Mail Adresse senden.

Wie soll ich das machen? Ich tue es:

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);
    }
}

und ich erhalte den folgenden Fehler:

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

2voto

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

In diesen Zeilen wird versucht, Mitglieder der Klasse SmtpClient . Da diese Mitglieder jedoch nicht definiert sind als static müssen Sie sich auf Ihre Instanz dieser Klasse, die Sie als client .

Essayer

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

Lesen Sie auch dieser Artikel über die Unterschiede zwischen Klassen- und Instanzmitgliedern.

Schließlich, wie SmtpClient implementiert IDisposable, würde ich Ihren Code ändern, um es in einem verpacken mit Block, da dies sicherstellt, dass Sie Ihre SMTP-Sitzung nach Beendigung korrekt aufräumen.

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

0voto

Anyname Donotcare Punkte 10599
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;
            }
        }

0voto

divya Punkte 405

Ich hatte dies getan:-

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!");
    }
}

0voto

Maxwell Punkte 1

Essayer

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

Versuchen Sie nicht, damit Wegwerf-E-Mails zu verwenden oder zu verwalten, da Sie damit eindeutig Spam-Fängern ausgesetzt sind. Ihr Code ist offen und es ist sehr leicht zu erkennen, wer den Code verwendet und von wo aus.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X