跳過到頁腳內容
.NET幫助

Sendgrid .NET(對於開發者的運行原理)

SendGrid,Twilio SendGrid 的一部分,提供基於雲端的服務,幫助客戶簡化發送電子郵件的過程。 當您創建 SendGrid 帳戶時,您可以訪問 SMTP、中繼和 API 密鑰等功能,這使發送電子郵件變得高效。 SMTP 中繼是該過程的核心,因為它允許您的電子郵件從您的服務器通過 SendGrid 的系統發送。 經過身份驗證的域功能驗證您的域。 由於 SendGrid 是開源的,您可以訪問其 GitHub 儲存庫並幫助進行修改。

在本指南中,我們旨在解析 SendGrid .NET 的功能與特性,指導您完成初始設置、基本操作以及更高級的功能。 無論您是希望通過代碼發送第一封電子郵件,還是優化您的電子郵件活動,本文是您掌握 SendGrid .NET 及其與 IronPDF PDF 操作 集成的起點。

開始使用 SendGrid .NET

首先,您需要在您的項目中設置 SendGrid .NET。 開始安裝 SendGrid .NET 包。 為此使用 NuGet 繼包管理器。 打開 Visual Studio,然後打開包管理控制台。 輸入以下命令:

Install-Package SendGrid

SendGrid .NET(开发人员如何工作):图 1 - 通过 Visual Studio 中的 NuGet 包管理控制台安装 SendGrid.NET

此命令將 SendGrid 添加到您的項目中。 安裝完後,設置您的 SendGrid 帳戶。 您需要一個 API 密鑰。 訪問 SendGrid 網站。 如果您沒有帳戶,請創建一個。 登錄後,導航到設定。 查找 API 密鑰。 點擊 創建 API 密鑰。 給它命名並選擇訪問級別。 複製 API 密鑰。 您將在您的應用程序中使用此密鑰。

基本代碼範例

現在,我們來發送一封電子郵件。 創建一個新的 SendGridClient 實例。 將您的 API 密鑰傳遞給構造函數。 然後,創建 SendGridMessage。 設置發件人和收件人的電子郵件地址。 添加主旨和電子郵件內容。 最後,使用 SendGridClient 發送消息。 以下是一個基本的範例:

using SendGrid;
using SendGrid.Helpers.Mail;
using System.Threading.Tasks;

// Asynchronous method to send an email using SendGrid
static async Task SendEmailAsync()
{
    // Initialize a SendGrid client with your API key
    var client = new SendGridClient("your_api_key");

    // Create a new email message
    var message = new SendGridMessage()
    {
        From = new EmailAddress("your_email@example.com", "Your Name"),
        Subject = "Hello World from SendGrid",
        PlainTextContent = "This is a test email.",
        HtmlContent = "<strong>This is a test email.</strong>"
    };

    // Add a recipient to your email message
    message.AddTo(new EmailAddress("recipient_email@example.com", "Recipient Name"));

    // Send the email and retrieve the response
    var response = await client.SendEmailAsync(message);
}
using SendGrid;
using SendGrid.Helpers.Mail;
using System.Threading.Tasks;

// Asynchronous method to send an email using SendGrid
static async Task SendEmailAsync()
{
    // Initialize a SendGrid client with your API key
    var client = new SendGridClient("your_api_key");

    // Create a new email message
    var message = new SendGridMessage()
    {
        From = new EmailAddress("your_email@example.com", "Your Name"),
        Subject = "Hello World from SendGrid",
        PlainTextContent = "This is a test email.",
        HtmlContent = "<strong>This is a test email.</strong>"
    };

    // Add a recipient to your email message
    message.AddTo(new EmailAddress("recipient_email@example.com", "Recipient Name"));

    // Send the email and retrieve the response
    var response = await client.SendEmailAsync(message);
}
Imports SendGrid
Imports SendGrid.Helpers.Mail
Imports System.Threading.Tasks

' Asynchronous method to send an email using SendGrid
Shared Async Function SendEmailAsync() As Task
	' Initialize a SendGrid client with your API key
	Dim client = New SendGridClient("your_api_key")

	' Create a new email message
	Dim message = New SendGridMessage() With {
		.From = New EmailAddress("your_email@example.com", "Your Name"),
		.Subject = "Hello World from SendGrid",
		.PlainTextContent = "This is a test email.",
		.HtmlContent = "<strong>This is a test email.</strong>"
	}

	' Add a recipient to your email message
	message.AddTo(New EmailAddress("recipient_email@example.com", "Recipient Name"))

	' Send the email and retrieve the response
	Dim response = Await client.SendEmailAsync(message)
End Function
$vbLabelText   $csharpLabel

此代碼發送一封簡單的電子郵件。 它展示了如何使用 SendGrid .NET 的基本原理。 您可以在此基礎上擴展以使用更多功能。

實施 SendGrid .NET 的功能

發送帶有自定義 HTML 內容的電子郵件

要發送帶有 HTML 內容的電子郵件,您首先需要創建 HTML。 然後使用 SendGridMessage 設置 HtmlContent。 這讓您可以設計富有的電子郵件。 方法如下:

using SendGrid;
using SendGrid.Helpers.Mail;
using System.Threading.Tasks;

// Asynchronous method to send an email with custom HTML content
static async Task SendCustomHtmlEmailAsync()
{
    // Initialize a SendGrid client with your API key
    var client = new SendGridClient("your_api_key");

    // Create a new email message with rich HTML content
    var message = new SendGridMessage()
    {
        From = new EmailAddress("your_email@example.com", "Your Name"),
        Subject = "Custom HTML Content",
        HtmlContent = "<html><body><h1>This is a Heading</h1><p>This is a paragraph.</p></body></html>"
    };

    // Add a recipient to your email message
    message.AddTo(new EmailAddress("recipient_email@example.com", "Recipient Name"));

    // Send the email and retrieve the response
    var response = await client.SendEmailAsync(message);
}
using SendGrid;
using SendGrid.Helpers.Mail;
using System.Threading.Tasks;

// Asynchronous method to send an email with custom HTML content
static async Task SendCustomHtmlEmailAsync()
{
    // Initialize a SendGrid client with your API key
    var client = new SendGridClient("your_api_key");

    // Create a new email message with rich HTML content
    var message = new SendGridMessage()
    {
        From = new EmailAddress("your_email@example.com", "Your Name"),
        Subject = "Custom HTML Content",
        HtmlContent = "<html><body><h1>This is a Heading</h1><p>This is a paragraph.</p></body></html>"
    };

    // Add a recipient to your email message
    message.AddTo(new EmailAddress("recipient_email@example.com", "Recipient Name"));

    // Send the email and retrieve the response
    var response = await client.SendEmailAsync(message);
}
Imports SendGrid
Imports SendGrid.Helpers.Mail
Imports System.Threading.Tasks

' Asynchronous method to send an email with custom HTML content
Shared Async Function SendCustomHtmlEmailAsync() As Task
	' Initialize a SendGrid client with your API key
	Dim client = New SendGridClient("your_api_key")

	' Create a new email message with rich HTML content
	Dim message = New SendGridMessage() With {
		.From = New EmailAddress("your_email@example.com", "Your Name"),
		.Subject = "Custom HTML Content",
		.HtmlContent = "<html><body><h1>This is a Heading</h1><p>This is a paragraph.</p></body></html>"
	}

	' Add a recipient to your email message
	message.AddTo(New EmailAddress("recipient_email@example.com", "Recipient Name"))

	' Send the email and retrieve the response
	Dim response = Await client.SendEmailAsync(message)
End Function
$vbLabelText   $csharpLabel

使用 SendGrid SMTP 服務

有時候,您可能偏好使用 SMTP 發送電子郵件。 SendGrid 也支持這個。 在 SendGrid 中配置您的 SMTP 設定。 然後在您的應用程序中使用這些設置。 此方法需要設置 SMTP 用戶端並使用 SendGrid 的服務器詳情。 這是基本設置:

using System.Net;
using System.Net.Mail;

// Method to send an email using SendGrid's SMTP service
void SendSmtpEmail()
{
    // Configure SMTP client with SendGrid's server details
    using (var client = new SmtpClient("smtp.sendgrid.net")
    {
        Port = 587,
        Credentials = new NetworkCredential("apikey", "your_sendgrid_apikey"),
        EnableSsl = true,
    })
    {
        // Create a new mail message
        var mailMessage = new MailMessage
        {
            From = new MailAddress("your_email@example.com"),
            Subject = "Test SMTP Email",
            Body = "This is a test email sent via SMTP.",
            IsBodyHtml = true,
        };

        // Add a recipient to the mail message
        mailMessage.To.Add("recipient_email@example.com");

        // Send the email
        client.Send(mailMessage);
    }
}
using System.Net;
using System.Net.Mail;

// Method to send an email using SendGrid's SMTP service
void SendSmtpEmail()
{
    // Configure SMTP client with SendGrid's server details
    using (var client = new SmtpClient("smtp.sendgrid.net")
    {
        Port = 587,
        Credentials = new NetworkCredential("apikey", "your_sendgrid_apikey"),
        EnableSsl = true,
    })
    {
        // Create a new mail message
        var mailMessage = new MailMessage
        {
            From = new MailAddress("your_email@example.com"),
            Subject = "Test SMTP Email",
            Body = "This is a test email sent via SMTP.",
            IsBodyHtml = true,
        };

        // Add a recipient to the mail message
        mailMessage.To.Add("recipient_email@example.com");

        // Send the email
        client.Send(mailMessage);
    }
}
Imports System.Net
Imports System.Net.Mail

' Method to send an email using SendGrid's SMTP service
Private Sub SendSmtpEmail()
	' Configure SMTP client with SendGrid's server details
	Using client = New SmtpClient("smtp.sendgrid.net") With {
		.Port = 587,
		.Credentials = New NetworkCredential("apikey", "your_sendgrid_apikey"),
		.EnableSsl = True
	}
		' Create a new mail message
		Dim mailMessage As New MailMessage With {
			.From = New MailAddress("your_email@example.com"),
			.Subject = "Test SMTP Email",
			.Body = "This is a test email sent via SMTP.",
			.IsBodyHtml = True
		}

		' Add a recipient to the mail message
		mailMessage.To.Add("recipient_email@example.com")

		' Send the email
		client.Send(mailMessage)
	End Using
End Sub
$vbLabelText   $csharpLabel

管理電子郵件活動

SendGrid .NET 允許管理電子郵件活動。 通過 API 創建、發送並跟踪活動。 有關詳細的活動管理請參考 SendGrid 的 API 文檔。 這項功能超越了基本的電子郵件發送,但對行銷工作很有價值。

處理反彈電子郵件和垃圾郵件報告

處理反彈和垃圾郵件報告是至關重要的。 SendGrid .NET 為這些事件提供 Webhooks。 在您的 SendGrid 儀表板上設置 webhooks。 然後在您的應用程序中處理這些事件。 這樣有助於清理您的電子郵件名單並提高可達性。

域認證

域認證對於電子郵件可達性非常重要。 它驗證您的域名所有權。在 SendGrid 中,通過儀表板設置域名認證。 這涉及添加 DNS 記錄。 一旦驗證,電子郵件看起來更值得信任給收件人和電子郵件提供商。

整合 IronPDF 與 SendGrid

IronPDF 的介紹

SendGrid .NET(開發人員如何工作):圖 2 - IronPDF 頁面

發掘 IronPDF 的能力 是一個庫,允許開發人員在 .NET 應用程式中創建、編輯和提取 PDF 內容。 它提供一個簡單的方法來以程式的方式處理 PDF 文件。 它使得無需深入了解 PDF 的規範即可輕鬆處理 PDF 文件。 通過 IronPDF,開發人員可以 使用 HTML 轉換為 PDF,並使用 IronPDF 錨點,編輯現有的 PDF,並提取內容。

SendGrid C# 和 IronPDF 合併的使用案例

在商業應用中,需要動態生成並通過電子郵件發送給客戶或利益相關者的財務報表、發票或個性化文件。 IronPDF 可以用於從模板或數據源創建這些文件,將它們轉換為 PDF 格式。 隨後,使用 SendGrid 的 C# 客戶端,這些 PDF 文件可以作為附件自動發送給預期的收件人。

IronPDF 在HTML 到 PDF轉換方麵表現出色,確保準確保持原始佈局和樣式。 它非常適合從網路內容生成 PDF,如報告、發票和文檔。 支持 HTML 文件、URL 和原始 HTML 字串的 IronPDF 可以輕鬆生成高質量的 PDF 文檔。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

安裝 IronPDF 庫

要使用 IronPDF,您首先需要安裝 NuGet 包。 首先,打開 NuGet 包管理控制台,然後運行此命令:

Install-Package IronPdf

詳細步驟的使用案例代碼示例

步驟 1:Generate PDF with IronPDF

首先,我們生成一個 PDF 文檔。 我們將從簡單的 HTML 字符串創建一個簡單的 PDF 作為範例。

using IronPdf;

// Instantiates a new HtmlToPdf object
var Renderer = new HtmlToPdf();

// Constructs a PDF from an HTML string
var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");

// Define the output path for the PDF file
var outputPath = "example.pdf";

// Saves the generated PDF to the specified path
PDF.SaveAs(outputPath);
using IronPdf;

// Instantiates a new HtmlToPdf object
var Renderer = new HtmlToPdf();

// Constructs a PDF from an HTML string
var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");

// Define the output path for the PDF file
var outputPath = "example.pdf";

// Saves the generated PDF to the specified path
PDF.SaveAs(outputPath);
Imports IronPdf

' Instantiates a new HtmlToPdf object
Private Renderer = New HtmlToPdf()

' Constructs a PDF from an HTML string
Private PDF = Renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")

' Define the output path for the PDF file
Private outputPath = "example.pdf"

' Saves the generated PDF to the specified path
PDF.SaveAs(outputPath)
$vbLabelText   $csharpLabel

步驟 2:設置 SendGrid

確保您已安裝 SendGrid NuGet 包:

Install-Package SendGrid

然後在您的應用程式中配置 SendGrid。 您需要從 SendGrid 帳戶中得到一個 API 密鑰。

using SendGrid;
using SendGrid.Helpers.Mail;

// Initialize SendGrid client with your API key
var apiKey = "your_sendgrid_api_key";
var client = new SendGridClient(apiKey);
using SendGrid;
using SendGrid.Helpers.Mail;

// Initialize SendGrid client with your API key
var apiKey = "your_sendgrid_api_key";
var client = new SendGridClient(apiKey);
Imports SendGrid
Imports SendGrid.Helpers.Mail

' Initialize SendGrid client with your API key
Private apiKey = "your_sendgrid_api_key"
Private client = New SendGridClient(apiKey)
$vbLabelText   $csharpLabel

步驟 3:創建並發送帶有 PDF 附件的電子郵件

現在,創建一個電子郵件消息並附上先前生成的 PDF。 最後,通過 SendGrid 發送電子郵件。

using System;
using System.IO;
using System.Threading.Tasks;
using SendGrid;
using SendGrid.Helpers.Mail;

// Asynchronous method to create and send an email with a PDF attachment
async Task SendEmailWithPdfAttachmentAsync()
{
    // Define sender and recipient email addresses
    var from = new EmailAddress("your_email@example.com", "Your Name");
    var subject = "Sending with SendGrid is Fun";
    var to = new EmailAddress("recipient_email@example.com", "Recipient Name");
    var plainTextContent = "Hello, Email!";
    var htmlContent = "<strong>Hello, Email!</strong>";

    // Create a new email message
    var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent);

    // Attach the PDF
    var bytes = File.ReadAllBytes("example.pdf");
    var file = Convert.ToBase64String(bytes);
    msg.AddAttachment("example.pdf", file);

    // Send the email and retrieve the response
    var response = await client.SendEmailAsync(msg);
}
using System;
using System.IO;
using System.Threading.Tasks;
using SendGrid;
using SendGrid.Helpers.Mail;

// Asynchronous method to create and send an email with a PDF attachment
async Task SendEmailWithPdfAttachmentAsync()
{
    // Define sender and recipient email addresses
    var from = new EmailAddress("your_email@example.com", "Your Name");
    var subject = "Sending with SendGrid is Fun";
    var to = new EmailAddress("recipient_email@example.com", "Recipient Name");
    var plainTextContent = "Hello, Email!";
    var htmlContent = "<strong>Hello, Email!</strong>";

    // Create a new email message
    var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent);

    // Attach the PDF
    var bytes = File.ReadAllBytes("example.pdf");
    var file = Convert.ToBase64String(bytes);
    msg.AddAttachment("example.pdf", file);

    // Send the email and retrieve the response
    var response = await client.SendEmailAsync(msg);
}
Imports System
Imports System.IO
Imports System.Threading.Tasks
Imports SendGrid
Imports SendGrid.Helpers.Mail

' Asynchronous method to create and send an email with a PDF attachment
Async Function SendEmailWithPdfAttachmentAsync() As Task
	' Define sender and recipient email addresses
	Dim from = New EmailAddress("your_email@example.com", "Your Name")
	Dim subject = "Sending with SendGrid is Fun"
	Dim [to] = New EmailAddress("recipient_email@example.com", "Recipient Name")
	Dim plainTextContent = "Hello, Email!"
	Dim htmlContent = "<strong>Hello, Email!</strong>"

	' Create a new email message
	Dim msg = MailHelper.CreateSingleEmail(from, [to], subject, plainTextContent, htmlContent)

	' Attach the PDF
	Dim bytes = File.ReadAllBytes("example.pdf")
	Dim file = Convert.ToBase64String(bytes)
	msg.AddAttachment("example.pdf", file)

	' Send the email and retrieve the response
	Dim response = Await client.SendEmailAsync(msg)
End Function
$vbLabelText   $csharpLabel

此代碼示例說明了生成簡單的 PDF 文件,將其附加到電子郵件,並通過 SendGrid 發送的過程。 這是一個簡單的過程,將 IronPDF 和 SendGrid 的文件生成和電子郵件功能分別集成在 .NET 應用程序中。

結論

SendGrid .NET(開發人員如何工作):圖 3 - IronPDF 授權頁面

總之,這本指南提供了整合 SendGrid .NET 用於電子郵件服務和 IronPDF 用於 PDF 文件管理在 .NET 應用程序中的全面概述。 通過遵循列出的步驟,開發人員可以高效地實施具有可定制 HTML 內容和 SMTP 服務選項的電子郵件發送功能,並管理電子郵件活動。

此外,IronPDF 的集成允許動態生成和電子郵件發送 PDF 文件,如財務報告或發票,展示了合併這些強大庫的實際使用案例。 有興趣探索這些功能的開發人員可以在承諾購買許可證前利用 IronPDF 免費試用版IronPDF 許可證詳情和定價選項 起價為 $799。

常見問題解答

如何在我的項目中設置 SendGrid .NET?

透過 Visual Studio 的 NuGet 套件管理器安裝 SendGrid 套件來設置 SendGrid .NET。安裝後,創建一個 SendGrid 帳戶並生成 API 密鑰以開始發送電子郵件。

使用 SendGrid .NET 發送電子郵件涉及哪些步驟?

使用您的 API 密鑰初始化 SendGridClient,構建包含必要發件人和收件人詳細信息的 SendGridMessage,並通過 SendGridClient 的 SendEmailAsync 方法發送消息。

如何使用 SendGrid .NET 發送帶有豐富 HTML 格式的電子郵件?

要發送 HTML 豐富的電子郵件,在發送電子郵件之前將 SendGridMessage 的 HtmlContent 屬性設定為您的自定義 HTML 內容。

在 .NET 應用程序中,是否可以使用 SendGrid 的 SMTP?

是的,您可以通過將您的 SMTP 客戶端配置為 SendGrid 的 SMTP 伺服器詳細信息並使用您的 API 密鑰作為憑證來使用 SMTP。

如何在 .NET 中生成用於電子郵件附件的 PDF 文件?

您可以使用 IronPDF 的 ChromePdfRenderer 將 HTML 內容轉換為 PDF 文件,然後使用 SaveAs 方法將其保存。

使用 SendGrid 附加 PDF 到電子郵件的過程是什麼?

將 PDF 轉換為位元組數組,編碼為 base64 字串,並使用 SendGridMessage 的 AddAttachment 方法將 PDF 附加到您的電子郵件。

為什麼使用 SendGrid 時域名驗證很重要?

域名驗證至關重要,因為它可驗證您的域的所有權,提高電子郵件的送達率,並確保您的電子郵件被收件人視為可靠。

IronPDF 如何增強 SendGrid 在 .NET 應用程序中的功能?

IronPDF 允許開發者創建和操作 PDF 文件,這可以與 SendGrid 結合使用,以生成的 PDF 作為電子郵件附件發送,增強文件管理能力。

使用 SendGrid 管理電子郵件活動有哪些優勢?

SendGrid 提供強大的功能來創建、發送和跟踪電子郵件活動,通過其 API 提供詳細的管理選項,如 SendGrid 的 API 文檔所述。

我如何處理 SendGrid 中的退信和垃圾郵件報告?

使用 SendGrid 的 webhooks 來處理退信和垃圾郵件報告。這些 webhooks 可以通知您的應用關於電子郵件投遞問題,讓您有效地管理它們。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。