-4

次のコードを使用して電子メールを送信します。正常に動作する場合もあれば、エラーが発生する場合もあります。メールを送信するためのより良いコードはありますか。もう1つ、メールを送信するためのパスワードを提供する必要があります。

using System.Net.Mail;
public void SendEmail()
{
    MailMessage mail = new MailMessage();

    mail.To.Add("sales@ojhatraders.com");
    mail.From = new MailAddress("ojhatraderscustomer@gmail.com");
    mail.Subject = "Contact Us Enquiry";

    string Body = "<b>From:<b>" + mail.From + "<br/>" + "Your Query Recived "+"<br/>"+"Name"+nameTextBox.Text+"<br/>"+"Mobile:"+mobileTextBox.Text+"<br/>"
        +"Email:"+emailTextBox.Text+"<br/>"+"Query:"+queryTextBox.Text;
    mail.Body = Body;

    mail.IsBodyHtml = true;
    SmtpClient smtp = new SmtpClient();

    smtp.Host = "smtp.gmail.com"; //Or Your SMTP Server Address
    smtp.Credentials = new System.Net.NetworkCredential("sample@gmail.com", "passsword");//Or your Smtp Email ID and Password
    smtp.EnableSsl = true;
    smtp.Send(mail);
}

役立つ提案とより良いコードを提供してください。

4

3 に答える 3

1

エラー

あなたのコードが生成するエラーを私たちに知らせなければ、その問題を解決することはできません。推奨される smtp-port を確認する必要があります。Google サポート Web スイートから:

SMTP サーバーをポート 465 (SSL を使用) およびポート 587 (TLS を使用) に構成しようとしてもメールの送信に問題がある場合は、ポート 25 (SSL を使用) を使用するように SMTP を構成してみてください。

「より良い」コード

ASP.NET ではメールの送信は非常に明白であるため、メールを送信するための「より良い」コードは事実ではなく意見です。ただし、アーキテクチャの観点から、物事を少し分割する必要があります。これにより、コードの品質が向上し、重複コードが削減されます。

このコードを「より良く」するために考慮すべきこと。

  1. stringbuilder を使用してメール コンテンツを作成し、それをメール テンプレートに挿入します。
  2. たとえば、デフォルトのコンストラクタ、Send() および GetTemplate() メソッドを使用して、別のクラス「Email」を作成します。
  3. web.config で SMTP の設定を指定する

そうすれば、アプリケーションのどこからでも数行で電子メールを作成して送信できます。私のアプリケーションの1つからのいくつかのサンプルコード:

var content = new StringBuilder();
content.Append("Name: " + contactForm.Name + "<br/>");
content.Append("Email: " + contactForm.Name + "<br/>");
content.Append("Message: " + contactForm.Name + "<br/>");

//Email constructor accepts two arguments: the content and the name of the template
var mail = new Email(content, "mailTemplateName")
mail.Send("mymail@domain.be", "recipient@gmail.com", "Subject of the mail")
于 2013-07-05T17:28:43.670 に答える