User Tools

Site Tools


Action disabled: source
prog:csharp:20250331-001:index

C# 設置 SMTP 伺服器、驗證和發送 HTML 格式的郵件 (2025-03-31)

  • C# 如何於WinForm撰寫
    • SMTP: aaaa.com.tw
    • Send Mail port: 110
    • Receive Mail port: 25
    • 伺服器需要驗證
  • 如何以abc@aaaa.com.tw, password: 123456 寄送郵件給 test1@gmail.com, test2@gmail.com
  • 標題為ABC Here
  • 內容為HEML Based的一個2×2表格

AI Answer

  • 您可以使用 C# 的 System.Net.Mail 命名空間來撰寫一個 WinForms 應用程式,發送電子郵件。以下是完整的示範程式碼,包含了如何設置 SMTP 伺服器、驗證和發送 HTML 格式的郵件。
  • 步驟 1: 建立 WinForms 應用程式
    • 開啟 Visual Studio,建立一個新的 Windows Forms 應用程式專案。
    • 在表單上添加一個按鈕(Button),並將其命名為 btnSendEmail,文字設為 “發送郵件”。
  • 步驟 2: 添加代碼
    • 在 btnSendEmail 的 Click 事件中添加以下代碼:
    • using System;
      using System.Net;
      using System.Net.Mail;
      using System.Windows.Forms;
      
      namespace YourNamespace
      {
          public partial class YourForm : Form
          {
              public YourForm()
              {
                  InitializeComponent();
              }
      
              private void btnSendEmail_Click(object sender, EventArgs e)
              {
                  try
                  {
                      // 設定 SMTP 伺服器
                      SmtpClient smtpClient = new SmtpClient("aaaa.com.tw", 110)
                      {
                          Credentials = new NetworkCredential("abc@aaaa.com.tw", "123456"),
                          EnableSsl = true // 根據伺服器需求選擇是否啟用 SSL
                      };
      
                      // 建立郵件內容
                      MailMessage mailMessage = new MailMessage
                      {
                          From = new MailAddress("abc@aaaa.com.tw"),
                          Subject = "ABC Here",
                          Body = @"
                          <html>
                              <body>
                                  <table border='1'>
                                      <tr>
                                          <td>Cell 1</td>
                                          <td>Cell 2</td>
                                      </tr>
                                      <tr>
                                          <td>Cell 3</td>
                                          <td>Cell 4</td>
                                      </tr>
                                  </table>
                              </body>
                          </html>",
                          IsBodyHtml = true
                      };
      
                      // 添加收件人
                      mailMessage.To.Add("test1@gmail.com");
                      mailMessage.To.Add("test2@gmail.com");
      
                      // 發送郵件
                      smtpClient.Send(mailMessage);
                      MessageBox.Show("郵件已成功發送!", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
                  }
                  catch (Exception ex)
                  {
                      MessageBox.Show($"發送郵件時出錯: {ex.Message}", "錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error);
                  }
              }
          }
      }
  • 說明
    • SMTP 伺服器設定:使用 SmtpClient 類別來設置 SMTP 伺服器的地址和端口號。
    • 驗證:使用 NetworkCredential 提供用戶名和密碼。
    • 郵件內容:MailMessage 類別用於設置郵件的發件人、主題和內容。IsBodyHtml 屬性設置為 true 以支持 HTML 格式。
    • 發送郵件:使用 smtpClient.Send(mailMessage) 方法發送郵件。
  • 注意事項
    • 確保 SMTP 伺服器的端口和 SSL 設定符合您的郵件服務提供商的要求。
    • 如果使用 SSL,請確認端口號是否正確(通常 SSL 的 SMTP 端口是 465 或 587,而 110 是 POP3 的端口)。
    • 這樣您就可以在 WinForms 應用程式中發送帶有 HTML 格式內容的電子郵件了!

Refer

  • Test useable code
    • using System.Net;
      using System.Net.Mail;
      using System.Net.Mime;
      
      ...
      try
      {
      
         SmtpClient mySmtpClient = new SmtpClient("my.smtp.exampleserver.net");
      
          // set smtp-client with basicAuthentication
          mySmtpClient.UseDefaultCredentials = false;
         System.Net.NetworkCredential basicAuthenticationInfo = new
            System.Net.NetworkCredential("username", "password");
         mySmtpClient.Credentials = basicAuthenticationInfo;
      
         // add from,to mailaddresses
         MailAddress from = new MailAddress("test@example.com", "TestFromName");
         MailAddress to = new MailAddress("test2@example.com", "TestToName");
         MailMessage myMail = new System.Net.Mail.MailMessage(from, to);
      
         // add ReplyTo
         MailAddress replyTo = new MailAddress("reply@example.com");
         myMail.ReplyToList.Add(replyTo);
      
         // set subject and encoding
         myMail.Subject = "Test message";
         myMail.SubjectEncoding = System.Text.Encoding.UTF8;
      
         // set body-message and encoding
         myMail.Body = "<b>Test Mail</b><br>using <b>HTML</b>.";
         myMail.BodyEncoding = System.Text.Encoding.UTF8;
         // text or html
         myMail.IsBodyHtml = true;
      
         mySmtpClient.Send(myMail);
      }
      
      catch (SmtpException ex)
      {
        throw new ApplicationException
          ("SmtpException has occured: " + ex.Message);
      }
      catch (Exception ex)
      {
         throw ex;
      }
  • 2 person(s) visited this page until now.

prog/csharp/20250331-001/index.txt · Last modified: 2025/03/31 10:13 (external edit)