NEWS

[C#] Hướng dẫn sử dụng temp mail service api trên winform

[C#] Hướng dẫn sử dụng temp mail service api trên winform
Đăng bởi: Thảo Meo - Lượt xem: 642 10:16:51, 10/10/2024DEVEXPRESS   In bài viết

Xin chào các bạn, bài viết hôm nay mình tiếp tục hướng dẫn các bạn cách sử dụng Temp Mail Service Api trên C#, Winform.

[C#] How to use Temp Mail Service in Winform

Trong ứng dụng này, mình sử dụng API 1sec Mail

Chi tiết, các bạn có thể tham khảo tài liệu API của nó.

https://www.1secmail.com/api/

temp_mail_service

Vậy Temp Mail là gì? và tại sao lại sử dụng temp mail.

Temp Mail (email tạm thời) là một loại dịch vụ email cung cấp cho người dùng một địa chỉ email tạm thời, ngắn hạn để nhận thư.

Sau một khoảng thời gian nhất định hoặc sau khi người dùng không cần sử dụng nữa, địa chỉ email này sẽ tự động hết hiệu lực và bị xoá.

Temp mail thường được dùng trong các tình huống khi bạn không muốn tiết lộ địa chỉ email thật của mình hoặc tránh bị spam.

Hình ảnh ứng dụng:

TEMP_MAIL

Tại sao nên sử dụng Temp Mail?

  1. Bảo vệ quyền riêng tư
    Khi đăng ký các dịch vụ trực tuyến, nhiều trang web yêu cầu địa chỉ email để gửi thông tin xác thực hoặc thông báo. Nếu bạn không muốn chia sẻ email chính của mình để tránh bị theo dõi hoặc bị làm phiền, temp mail sẽ giúp bạn giữ quyền riêng tư.

  2. Tránh thư rác (spam)
    Temp mail giúp bạn tránh việc bị spam bởi các trang web hoặc dịch vụ không đáng tin cậy, vốn có thể bán địa chỉ email của bạn cho bên thứ ba. Sau khi sử dụng xong, email này sẽ biến mất, ngăn chặn mọi thư spam có thể được gửi đến.

  3. Đăng ký nhanh chóng
    Việc tạo một địa chỉ email tạm thời chỉ mất vài giây mà không cần phải trải qua quá trình đăng ký phức tạp như với các dịch vụ email thông thường (Gmail, Outlook, Yahoo, v.v.).

  4. Bảo mật thông tin cá nhân
    Khi bạn sử dụng một địa chỉ email tạm thời, các thông tin cá nhân của bạn (như tên, tuổi, số điện thoại) sẽ không bị gắn liền với tài khoản đó, giúp giảm thiểu nguy cơ lộ thông tin nhạy cảm.

  5. Tiện lợi khi sử dụng dịch vụ ngắn hạn
    Temp mail rất hữu ích khi bạn chỉ cần nhận một lần thư xác thực hoặc một thông báo ngắn hạn, chẳng hạn như để kích hoạt tài khoản, tải về tài liệu, hoặc nhận mã xác nhận.

 

Video Demo ứng dụng:

Full source code C#:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Net.Http;
using System.Threading.Tasks;
using System.Windows.Forms;
using Newtonsoft.Json;

namespace DemoTempEmail
{
    public partial class MainForm : Form
    {
        private string currentEmail;
        private string currentDomain;
        private System.Windows.Forms.Timer mailboxTimer;
        private List<EmailMessage> currentMessages;

        public MainForm()
        {
            InitializeComponent();
            mailboxTimer = new System.Windows.Forms.Timer();
            mailboxTimer.Interval = 10000; // Check every 10 seconds
            mailboxTimer.Tick += MailboxTimer_Tick;
            currentMessages = new List<EmailMessage>();
        }

        private void InitializeComponent()
        {
            this.btnCreateEmail = new System.Windows.Forms.Button();
            this.lblCurrentEmail = new System.Windows.Forms.TextBox();
            this.lstMessages = new System.Windows.Forms.ListBox();
            this.webBrowser1 = new System.Windows.Forms.WebBrowser();
            this.label1 = new System.Windows.Forms.Label();
            this.label2 = new System.Windows.Forms.Label();
            this.pictureBox1 = new System.Windows.Forms.PictureBox();
            this.linkLabel1 = new System.Windows.Forms.LinkLabel();
            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
            this.SuspendLayout();
            // 
            // btnCreateEmail
            // 
            this.btnCreateEmail.Location = new System.Drawing.Point(241, 89);
            this.btnCreateEmail.Name = "btnCreateEmail";
            this.btnCreateEmail.Size = new System.Drawing.Size(220, 23);
            this.btnCreateEmail.TabIndex = 0;
            this.btnCreateEmail.Text = "Create New Email";
            this.btnCreateEmail.Click += new System.EventHandler(this.btnCreateEmail_Click);
            // 
            // lblCurrentEmail
            // 
            this.lblCurrentEmail.Location = new System.Drawing.Point(122, 137);
            this.lblCurrentEmail.Name = "lblCurrentEmail";
            this.lblCurrentEmail.Size = new System.Drawing.Size(538, 20);
            this.lblCurrentEmail.TabIndex = 1;
            // 
            // lstMessages
            // 
            this.lstMessages.FormattingEnabled = true;
            this.lstMessages.Location = new System.Drawing.Point(12, 189);
            this.lstMessages.Name = "lstMessages";
            this.lstMessages.Size = new System.Drawing.Size(668, 160);
            this.lstMessages.TabIndex = 2;
            this.lstMessages.SelectedIndexChanged += new System.EventHandler(this.lstMessages_SelectedIndexChanged);
            // 
            // webBrowser1
            // 
            this.webBrowser1.Location = new System.Drawing.Point(12, 355);
            this.webBrowser1.MinimumSize = new System.Drawing.Size(20, 20);
            this.webBrowser1.Name = "webBrowser1";
            this.webBrowser1.ScriptErrorsSuppressed = true;
            this.webBrowser1.Size = new System.Drawing.Size(668, 339);
            this.webBrowser1.TabIndex = 3;
            // 
            // label1
            // 
            this.label1.AutoSize = true;
            this.label1.Location = new System.Drawing.Point(14, 140);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(102, 13);
            this.label1.TabIndex = 4;
            this.label1.Text = "Email temp Address:";
            // 
            // label2
            // 
            this.label2.AutoSize = true;
            this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.label2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(0)))));
            this.label2.Location = new System.Drawing.Point(164, 25);
            this.label2.Name = "label2";
            this.label2.Size = new System.Drawing.Size(359, 24);
            this.label2.TabIndex = 5;
            this.label2.Text = "TEMP EMAIL C# - LAPTRINHVB.NET";
            // 
            // pictureBox1
            // 
            this.pictureBox1.Image = global::DemoTempEmail.Properties.Resources.logo;
            this.pictureBox1.Location = new System.Drawing.Point(560, 25);
            this.pictureBox1.Name = "pictureBox1";
            this.pictureBox1.Size = new System.Drawing.Size(100, 87);
            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
            this.pictureBox1.TabIndex = 6;
            this.pictureBox1.TabStop = false;
            // 
            // linkLabel1
            // 
            this.linkLabel1.AutoSize = true;
            this.linkLabel1.Location = new System.Drawing.Point(13, 72);
            this.linkLabel1.Name = "linkLabel1";
            this.linkLabel1.Size = new System.Drawing.Size(107, 13);
            this.linkLabel1.TabIndex = 7;
            this.linkLabel1.TabStop = true;
            this.linkLabel1.Text = "https://laptrinhvb.net";
            this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked);
            // 
            // MainForm
            // 
            this.ClientSize = new System.Drawing.Size(692, 706);
            this.Controls.Add(this.linkLabel1);
            this.Controls.Add(this.pictureBox1);
            this.Controls.Add(this.label2);
            this.Controls.Add(this.label1);
            this.Controls.Add(this.webBrowser1);
            this.Controls.Add(this.btnCreateEmail);
            this.Controls.Add(this.lblCurrentEmail);
            this.Controls.Add(this.lstMessages);
            this.Name = "MainForm";
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.Text = "[C#] Temp Email Inbox - https://laptrinhvb.net";
            this.Load += new System.EventHandler(this.MainForm_Load);
            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        private System.Windows.Forms.Button btnCreateEmail;
        private System.Windows.Forms.TextBox lblCurrentEmail;
        private System.Windows.Forms.ListBox lstMessages;

        private async void btnCreateEmail_Click(object sender, EventArgs e)
        {
            try
            {
                var email = await GenerateRandomEmail();
                currentEmail = email.Split('@')[0];
                currentDomain = email.Split('@')[1];
                lblCurrentEmail.Text = $"{email}";
                lstMessages.Items.Clear();
             
                currentMessages.Clear();
                mailboxTimer.Start();
            }
            catch (Exception ex)
            {
                MessageBox.Show($"Error generating email: {ex.Message}");
            }
        }

        private async Task<string> GenerateRandomEmail()
        {
            using (var client = new HttpClient())
            {
                var response = await client.GetStringAsync("https://www.1secmail.com/api/v1/?action=genRandomMailbox&count=1");
                var emails = JsonConvert.DeserializeObject<List<string>>(response);
                return emails[0];
            }
        }

        private async void MailboxTimer_Tick(object sender, EventArgs e)
        {
            try
            {
                var messages = await GetMessages();
                UpdateMessageList(messages);
            }
            catch (Exception ex)
            {
                MessageBox.Show($"Error checking mailbox: {ex.Message}");
            }
        }

        private async Task<List<EmailMessage>> GetMessages()
        {
            using (var client = new HttpClient())
            {
                var response = await client.GetStringAsync($"https://www.1secmail.com/api/v1/?action=getMessages&login={currentEmail}&domain={currentDomain}");
                return JsonConvert.DeserializeObject<List<EmailMessage>>(response);
            }
        }

        private void UpdateMessageList(List<EmailMessage> messages)
        {
            foreach (var message in messages)
            {
                if (!currentMessages.Exists(m => m.Id == message.Id))
                {
                    currentMessages.Add(message);
                    lstMessages.Items.Add(message.Subject);
                }
            }
        }

        private async void lstMessages_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (lstMessages.SelectedIndex != -1)
            {
                var selectedMessage = currentMessages[lstMessages.SelectedIndex];
                try
                {
                    var fullMessage = await GetFullMessage(selectedMessage.Id);
                    webBrowser1.DocumentText = fullMessage.Body;
                }
                catch (Exception ex)
                {
                    MessageBox.Show($"Error fetching message details: {ex.Message}");
                }
            }
        }

        private async Task<FullEmailMessage> GetFullMessage(int id)
        {
            using (var client = new HttpClient())
            {
                var response = await client.GetStringAsync($"https://www.1secmail.com/api/v1/?action=readMessage&login={currentEmail}&domain={currentDomain}&id={id}");
                return JsonConvert.DeserializeObject<FullEmailMessage>(response);
            }
        }

        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            Process.Start("https://laptrinhvb.net");
        }

        private void MainForm_Load(object sender, EventArgs e)
        {
            Process.Start("https://chromewebstore.google.com/detail/zalo-marketing-pro-ch%E1%BB%91ng/kgbfpnnjchndjegeckjggbgcmklefman?authuser=0&hl=vi");
        }
    }

    public class EmailMessage
    {
        public int Id { get; set; }
        public string From { get; set; }
        public string Subject { get; set; }
        public string Date { get; set; }
    }

    public class FullEmailMessage : EmailMessage
    {
        public string Body { get; set; }
        public string TextBody { get; set; }
        public string HtmlBody { get; set; }
    }
}

Thanks for watching!

DOWNLOAD SOURCE

THÔNG TIN TÁC GIẢ

BÀI VIẾT LIÊN QUAN

[C#] Hướng dẫn sử dụng temp mail service api trên winform
Đăng bởi: Thảo Meo - Lượt xem: 642 10:16:51, 10/10/2024DEVEXPRESS   In bài viết

CÁC BÀI CÙNG CHỦ ĐỀ

Đọc tiếp
.