Gmail用戶如何設定允許低安全性應用程式存取帳戶
請注意!
因 Google 已公告在 2022/5/30 以後就不再支援單憑信箱帳號密碼收發信件功能
且停用低安全性應用程式存取權,請改啟用 Google 兩步驟驗證及應用程式密碼 。
開啟Google兩步驟驗證功能,如何產生應用程式密碼
簡易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