首頁 > 軟體

c#中winform根據郵箱地址和密碼一鍵傳送email的實現

2022-07-15 10:04:00

企業資訊化程序中,根據自己的Email地址一鍵傳送郵件,瞭解傳送原理可以批次傳送多人郵箱。原來曾經用VB做過群發工資條,效果比較理想,現在使用c#做開發,原理基本一樣。

應用的技術:存取郵件伺服器傳送郵件、檔案操作儲存預設資訊、winform按鈕的邏輯操作

效果圖:

核心要點及程式碼(這裡以163為例)

1.傳送程式碼:這是最核心的,注意參照。文字方塊:傳送地址,傳送密碼,傳送伺服器,接收地址,傳送主題,傳送內容。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net.Mail;
using System.Text.RegularExpressions;
using System.IO;

  private void button1_Click(object sender, EventArgs e)
        {
            Regex r = new Regex("^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$");
            if (!(r.IsMatch(tbSend.Text)))  //用正規表示式驗證郵箱
            {
                MessageBox.Show("傳送郵箱地址格式不正確!");
                return;
            }
           
            //生成SmtpClient範例,用它傳送電子郵件
            MailMessage mail = new MailMessage();
            mail.BodyEncoding = System.Text.Encoding.UTF8;
            mail.IsBodyHtml = true;
            mail.From = new MailAddress(tbSend.Text);
            mail.To.Add(new MailAddress(tbAccep.Text));
            mail.Subject = tbAcceptS.Text;
            mail.Body = tbB.Text;
            //生成SmtpClient範例,用它傳送電子郵件
            //指定SMTP伺服器主機
            SmtpClient client = new SmtpClient(tbSendS.Text);
            client.UseDefaultCredentials = false;
            client.EnableSsl = true;
            client.Credentials = new System.Net.NetworkCredential(tbSend.Text.Substring(0, tbSend.Text.IndexOf('@')), tbSendP.Text);
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            try
            {
                client.Send(mail);
                MessageBox.Show("傳送成功");
            }
            catch (Exception ex)
            {
                MessageBox.Show("傳送失敗" + ex.Message.ToString());
            }


        }

2.設定了一些方便操作的功能,比如可以把預設傳送地址密碼儲存在檔案中,每次可以提取,還可以隨時修改預設地址和密碼。對winform的美觀性做了強化。這裡展示一些程式碼。有2個文字方塊是隱藏的,為了輸入預設地址。一鍵可以現實。

這2個是修改預設地址的程式碼

  private void button3_Click(object sender, EventArgs e)
        {
            if (n%2 == 0)
            {
                textBox1.Visible = true;
                textBox2.Visible = true;
                string fileName = Environment.CurrentDirectory + "\myText" + ".txt";
                if (System.IO.File.Exists(fileName))
                {
                    var lines = File.ReadAllLines(@fileName);
                    string str0 = lines[0];
                    string str1 = lines[1];
                    textBox1.Text = str0;
                    textBox2.Text = str1;
                
                }
           
                n++;
                button3.Text = "確認修改";

            }
            else
            {
                if (writefile(textBox1.Text, textBox2.Text))
                {
                    textBox1.Visible = false;
                    textBox2.Visible = false;
                    n++;
                    button3.Text = "修改預設";
                }

            }
        }

   private static bool writefile(string name, string password)
        {
            string fileName = Environment.CurrentDirectory + "\myText" + ".txt";
            if (System.IO.File.Exists(fileName))
            {
               File.Delete(fileName);
            }
      
                StreamWriter sw = File.AppendText(fileName);
               sw.WriteLine(name);
               sw.WriteLine(password);
               sw.Flush();
               sw.Close();
          
            return true;
                 
        }

到此這篇關於c#中winform根據郵箱地址和密碼一鍵傳送email的實現的文章就介紹到這了,更多相關c# winform郵箱地址和密碼傳送email內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com