EMail

Gmail用戶如何設定允許低安全性應用程式存取帳戶

請注意!


因 Google 已公告在 2022/5/30 以後就不再支援單憑信箱帳號密碼收發信件功能

且停用低安全性應用程式存取權,請改啟用 Google 兩步驟驗證及應用程式密碼

開啟Google兩步驟驗證功能,如何產生應用程式密碼

https://help.url.com.tw/5423.html

簡易Import版

使用「兩步驟認證」,以另外產生的『應用程式密碼』登入伺服器。

範例程式(成功可用)

開啟「低安全性應用程式存取權

使用背景模式發信 - Thread的應用

請參閱本站「Thread」。

底下依然有些參考價值

Design a User Form for an Email Client

設計一個收發信件的專案

一、新增一個專案,加入一個TabControl,位於Containers section「容器」內。

二、調整TabControl大小,占滿整個螢幕,並已經有點選該物件。(圖1)

三、確定屬性名稱為TabControl1而不是TabPage。(圖2)

四、點選屬性:TabPages。(圖3)

圖1.TabControl占滿螢幕

圖2.屬性Name

圖3.屬性:TabPages

、按TabPages右邊三個點按鈕,開啟TabPages編輯器。(圖4)

TabPages1: Text = "Send Mail",TabPages2: Text = "Receive Mail"

改好按確定。

圖4.TabPages編輯器

六、TabPages屬性Dock,把None改成「Fill填滿」。(圖5)

※執行專案,Form依然可以調整大小,但是TabPages也會隨著Form一起調整了。

圖5.TabPages屬性Dock從None調成Fill。

七、將以下控制項物驗加入Send EMail Tab內。

TextBox1

Name: txtEmailTo

Text: 收件者信箱

TextBox2

Name: txtEmailFrom

Text: 寄件者信箱

TextBox3

Name: txtEmailSubject

Text: 傳送主旨

TextBox4

Name: txtEmailBody

Text: 空白

MultiLine: True

Label1

Text: TO:

Label2

Text: FROM:

Label3

Text: SUBJECT:

Button1

Name: btnSend

Text: Send Email

八、使用SmtpClient物件連接郵件伺服器,SmtpClient位於Net.Mail命名空間內。

C#

using System.Net;

using System.Net.Mail;

using System.Net.Sockets;

using System.IO;

VB

在Public Class Form1之前:

Imports System.Net

Imports System.Net.Mail

Imports System.Net.Sockets

Imports System.IO

Imports System.Text

SmtpClient必須從程式獲得以下資訊:主機位址(host address)、寄件者代號(user ID)、寄件者密碼(user password)。

host address: 郵件伺服器名稱之前加上smtp,例如:allen@kssh.khc.edu.tw的host address則為smtp.kssh.khc.edu.tw。

smtp port number有幾個選擇,465、SSL/TLS,25、587。

Outgoing port number: 25、Incoming port number: 110。

設定好SmtpClient物件之後,就是使用MailMessage物件建立郵件訊息。

MailMessage(emailFrom, emailTo)

Dim message As New MailMessage(emailFrom, emailTo)

如何得知信件是否已送達?

事件處理器 Event Handler:使用SmtpClient物件內的SendCompleted事件。

AddHandler smtpServer.SendCompleted, AddressOf DoSendCompleted

Private Sub DoSendCompleted(sender As Object, e As ComponentModel, AsyncCompletedEventArgs)

Dim token As String = e.UserState.ToString

If e.Error IsNot Nothing OrElse e.Cancelled Then

MessageBox.("Error " & token)

Else

MessageBox.("Message Sent " & token)

End If

End Sub




程式段:

Try

'Dim Smtp_Server As New SmtpClient

Dim smtp As New SmtpClient("smtp.gmail.com", 25)

Dim mail As New MailMessage()


smtp.UseDefaultCredentials = False

smtp.Credentials = New System.Net.NetworkCredential("allenctc168@kssh.khc.edu.tw", "s5255891")


mail.Subject = sysName '"國立岡山高中圖書館K書中心學生簽到退系統"

mail.SubjectEncoding = System.Text.Encoding.UTF8

mail.BodyEncoding = System.Text.Encoding.UTF8

mail.From = New System.Net.Mail.MailAddress(SendFrom) '寄件者

mail.Priority = System.Net.Mail.MailPriority.Normal

mail.IsBodyHtml = True

mail.Body = sysTime '郵件內容

mail.To.Add("allenctc168@gmail.com") '收件者


smtp.Send(mail)

MsgBox("郵件已發送~!")


Catch error_t As Exception

MsgBox(error_t.ToString)

End Try

參考文獻

https://www.1ju.org/vb.net/vb.net-send-email

https://www.webdesigntooler.com/google-smtp-send-mail

https://www.homeandlearn.co.uk/extras/email/design-the-user-form-for-the-email-client.html

YouTube: https://www.youtube.com/watch?v=zbox2xM1rmA