Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
TML 使用超級鏈接與網絡上的另一個文檔相連。
幾乎可以在所有的網頁中找到鏈接。點擊鏈接可以從一張頁面跳轉到另一張頁面。
實例
[demo]
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<p>
<a href="/index.html">本文本</a> 是一個指向本網站中的一個頁面的鏈接。</p>
<p><a >本文本</a> 是一個指向萬維網上的頁面的鏈接。</p>
</body>
</html>
[/demo]
本例演示如何在 HTML 文檔中創建鏈接。
將圖像作為鏈接
[demo]
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<p>
您也可以使用圖像來作鏈接:
<a href="/example/html/lastpage.html">
<img border="0" src="./imagecopy1234567890/test.gif" />
</a>
</p>
</body>
</html>
[/demo]
本例演示如何使用圖像作為鏈接。
(可以在本頁底端找到更多實例)
HTML 超鏈接(鏈接)
超鏈接可以是一個字,一個詞,或者一組詞,也可以是一幅圖像,您可以點擊這些內容來跳轉到新的文檔或者當前文檔中的某個部分。
當您把鼠標指針移動到網頁中的某個鏈接上時,箭頭會變為一只小手。
我們通過使用 <a> 標簽在 HTML 中創建鏈接。
有兩種使用 <a> 標簽的方式:
通過使用 href 屬性 - 創建指向另一個文檔的鏈接
通過使用 name 屬性 - 創建文檔內的書簽
什么是超文本?
標記語言的真正威力在于其收集能力,它可以將收集來的文檔組合成一個完整的信息庫,并且可以將文檔庫與世界上的其他文檔集合鏈接起來。
這樣的話,讀者不僅可以完全控制文檔在屏幕上的顯示,還可以通過超鏈接來控制瀏覽信息的順序。這就是 HTML 和 XHTML 中的 “HT” - 超文本(hypertext),就是它將整個 Web 網絡連接起來。
超文本的基礎知識
超文本的基本特征就是可以超鏈接文檔;你可以指向其他位置,該位置可以在當前的文檔中、局域網中的其他文檔,也可以在因特網上的任何位置的文檔中。這些文檔組成了一個雜亂的信息網。目標文檔通常與其來源有某些關聯,并且豐富了來源;來源中的鏈接元素則將這種關系傳遞給瀏覽者。
超鏈接可以用于各種效果。超鏈接可以用在目錄和主題列表中。瀏覽者可以在瀏覽器屏幕上單擊鼠標或在鍵盤上按下按鍵,從而選擇并自動跳轉到文檔中自己感興趣的那個主題,或跳轉到世界上某處完全不同的集合中的某個文檔。
超鏈接還可以向瀏覽者指出有關文檔中某個主題的更多信息。例如,“如果您想了解更詳細的信息,請參閱某某頁面。”。作者可以使用超鏈接來減少重復信息。例如,我們建議創作者在每個文檔中都簽署上自己的姓名。這樣就可以使用一個將名字和另一個包含地址、電話號碼等信息的單獨文檔鏈接起來的超鏈接,而不必在每個文檔中都包含完整的聯系信息。
超鏈接(hyper text),或者按照標準叫法稱為錨(anchor),是使用 <a> 標簽標記的,可以用兩種方式表示。錨的一種類型是在文檔中創建一個熱點,當用戶激活或選中(通常是使用鼠標)這個熱點時,會導致瀏覽器進行鏈接。瀏覽器會自動加載并顯示同一文檔或其他文檔中的某個部分,或觸發某些與因特網服務相關的操作,例如發送電子郵件或下載特殊文件等。錨的另一種類型會在文檔中創建一個標記,該標記可以被超鏈接引用。
還有一些與超鏈接相關聯的鼠標相關事件。這些事件與 JavaScript 結合使用可以產生一些令人激動的效果。
注釋
錨的這兩種類型都使用同樣的標簽;也許這就是它們擁有同樣的名稱的原因。但是我們發現,如果將它們區分開,把提供熱點和超鏈接地址的錨看作“鏈接”,而用于標記文檔的目標部分的錨稱為“錨”,那么您將更容易理解這兩種類型的錨。
HTML 鏈接語法
鏈接的 HTML 代碼很簡單。它類似這樣:
<a href="url">Link text</a>
href 屬性規定鏈接的目標。
開始標簽和結束標簽之間的文字被作為超級鏈接來顯示。
實例
<a >Visit W3School</a>
上面這行代碼顯示為:Visit W3School
點擊這個超鏈接會把用戶帶到 W3School 的首頁。
提示:"鏈接文本" 不必一定是文本。圖片或其他 HTML 元素都可以成為鏈接。
HTML 鏈接 - target 屬性
使用 Target 屬性,你可以定義被鏈接的文檔在何處顯示。
下面的這行會在新窗口打開文檔:
<a target="_blank">Visit W3School!</a>
[demo]
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<a target="_blank">Visit W3School!</a>
<p>如果把鏈接的 target 屬性設置為 "_blank",該鏈接會在新窗口中打開。</p>
</body>
</html>
[/demo]
HTML 鏈接 - name 屬性
name 屬性規定錨(anchor)的名稱。
您可以使用 name 屬性創建 HTML 頁面中的書簽。
書簽不會以任何特殊方式顯示,它對讀者是不可見的。
當使用命名錨(named anchors)時,我們可以創建直接跳至該命名錨(比如頁面中某個小節)的鏈接,這樣使用者就無需不停地滾動頁面來尋找他們需要的信息了。
命名錨的語法:
<a name="label">錨(顯示在頁面上的文本)</a>
提示:錨的名稱可以是任何你喜歡的名字。
提示:您可以使用 id 屬性來替代 name 屬性,命名錨同樣有效。
實例
首先,我們在 HTML 文檔中對錨進行命名(創建一個書簽):
<a name="tips">基本的注意事項 - 有用的提示</a>
然后,我們在同一個文檔中創建指向該錨的鏈接:
<a href="#tips">有用的提示</a>
您也可以在其他頁面中創建指向該錨的鏈接:
<a >有用的提示</a>
在上面的代碼中,我們將 # 符號和錨名稱添加到 URL 的末端,就可以直接鏈接到 tips 這個命名錨了。
基本的注意事項 - 有用的提示:
注釋:請始終將正斜杠添加到子文件夾。假如這樣書寫鏈接:,就會向服務器產生兩次 HTTP 請求。這是因為服務器會添加正斜杠到這個地址,然后創建一個新的請求,就像這樣:。
提示:命名錨經常用于在大型文檔開始位置上創建目錄。可以為每個章節賦予一個命名錨,然后把鏈接到這些錨的鏈接放到文檔的上部。如果您經常訪問百度百科,您會發現其中幾乎每個詞條都采用這樣的導航方式。
提示:假如瀏覽器找不到已定義的命名錨,那么就會定位到文檔的頂端。不會有錯誤發生。
更多實例
在新的瀏覽器窗口打開鏈接
[demo]
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<a target="_blank">Visit W3School!</a>
<p>如果把鏈接的 target 屬性設置為 "_blank",該鏈接會在新窗口中打開。</p>
</body>
</html>
[/demo]
本例演示如何在新窗口打開一個頁面,這樣的話訪問者就無需離開你的站點了。
鏈接到同一個頁面的不同位置
[demo]
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<p>
<a href="#C4">查看 Chapter 4。</a>
</p>
<h2>Chapter 1</h2>
<p>This chapter explains ba bla bla</p>
<h2>Chapter 2</h2>
<p>This chapter explains ba bla bla</p>
<h2>Chapter 3</h2>
<p>This chapter explains ba bla bla</p>
<h2><a name="C4">Chapter 4</a></h2>
<p>This chapter explains ba bla bla</p>
<h2>Chapter 5</h2>
<p>This chapter explains ba bla bla</p>
<h2>Chapter 6</h2>
<p>This chapter explains ba bla bla</p>
<h2>Chapter 7</h2>
<p>This chapter explains ba bla bla</p>
<h2>Chapter 8</h2>
<p>This chapter explains ba bla bla</p>
<h2>Chapter 9</h2>
<p>This chapter explains ba bla bla</p>
<h2>Chapter 10</h2>
<p>This chapter explains ba bla bla</p>
<h2>Chapter 11</h2>
<p>This chapter explains ba bla bla</p>
<h2>Chapter 12</h2>
<p>This chapter explains ba bla bla</p>
<h2>Chapter 13</h2>
<p>This chapter explains ba bla bla</p>
<h2>Chapter 14</h2>
<p>This chapter explains ba bla bla</p>
<h2>Chapter 15</h2>
<p>This chapter explains ba bla bla</p>
<h2>Chapter 16</h2>
<p>This chapter explains ba bla bla</p>
<h2>Chapter 17</h2>
<p>This chapter explains ba bla bla</p>
</body>
</html>
[/demo]
本例演示如何使用鏈接跳轉至文檔的另一個部分
跳出框架
[demo]
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<p>被鎖在框架中了嗎?</p>
<a href="/index.html"
target="_top">請點擊這里!</a>
</body>
</html>
[/demo]
本例演示如何跳出框架,假如你的頁面被固定在框架之內。
創建電子郵件鏈接
[demo]
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<p>
這是郵件鏈接:
<a href="mailto:someone@microsoft.com?subject=Hello%20again">發送郵件</a>
</p>
<p>
<b>注意:</b>應該使用 %20 來替換單詞之間的空格,這樣瀏覽器就可以正確地顯示文本了。
</p>
</body>
</html>
[/demo]
本例演示如何鏈接到一個郵件。(本例在安裝郵件客戶端程序后才能工作。)
創建電子郵件鏈接 2
[demo]
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<p>
這是另一個 mailto 鏈接:
<a href="mailto:someone@microsoft.com?cc=someoneelse@microsoft.com&bcc=andsomeoneelse2@microsoft.com&subject=Summer%20Party&body=You%20are%20invited%20to%20a%20big%20summer%20party!">發送郵件!</a>
</p>
<p>
<b>注意:</b>應該使用 %20 來替換單詞之間的空格,這樣瀏覽器就可以正確地顯示文本了。
</p>
</body>
</html>
[/demo]
本例演示更加復雜的郵件鏈接。
HTML 鏈接標簽
標簽 描述
<a> 定義錨。
擊上方藍色“Go語言中文網”關注我們,領全套Go資料,每天學習 Go 語言
發送郵件是一個很常見的需求:用戶郵箱驗證、郵箱召回等。Go 語言標準庫自帶 net/smtp 庫,實現了 smtp 協議,用于發送郵件。然而這個庫比較原始,使用不方便,而且官方聲明不再增加新功能。于是乎出現了一些強大的第三方郵件庫,今天推薦的這個庫就是其中之一。
項目地址:https://github.com/jordan-wright/email,Star 數 1.3k+。
email 包的設計易于使用,但又足夠靈活以免受到限制。目的是為開發者提供友好的電子郵件接口。
該包當前支持以下功能:
先安裝:
$ go get github.com/jordan-wright/email
后使用,使用 Gmail 發送郵件:
e := email.NewEmail()
e.From = "Jordan Wright <test@gmail.com>"
e.To = []string{"test@example.com"}
e.Bcc = []string{"test_bcc@example.com"}
e.Cc = []string{"test_cc@example.com"}
e.Subject = "Awesome Subject"
e.Text = []byte("Text Body is, of course, supported!")
e.HTML = []byte("<h1>Fancy HTML is supported, too!</h1>")
e.Send("smtp.gmail.com:587", smtp.PlainAuth("", "test@gmail.com", "password123", "smtp.gmail.com"))
可見該庫最終還是使用標準庫 net/smtp 進行實際的郵件發送。
e.From = "Go語言中文網<polaris@studygolang.com>”
收到的郵件不會顯示發件人,有人提了一個 PR 支持 non-US-ASCII,但還未被 merge;根據該 PR 的提示,我們可以這樣解決此問題:
e.From = mime.QEncoding.Encode("UTF-8", "Go語言中文網") + "<polaris@studygolang.com>"
tlsConfig := &tls.Config{
InsecureSkipVerify: true,
ServerName: smtpHost,
}
e.SendWithTLS(addr, auth, tlsConfig)
如果郵件中需要帶上附件,這個庫很方便:
e.AttachFile("test.txt")
也可以是通過 io.Reader 讀取文件:
func (e *Email) Attach(r io.Reader, filename string, c string) (a *Attachment, err error)
其中 filename 是放入附件顯示的文件名,c 是 Content-Type,如果為空,則使用 application/octet-stream。
該庫還支持連接池,例如:
p, err := email.NewPool(
"smtp.qq.com:25",
4,
smtp.PlainAuth("", "274768166@qq.com", "password", "smtp.qq.com"))
通過 p 的 Send 方法執行發送操作:
p.Send(e, 10e9)
完整例子如下:
package main
import (
"log"
"mime"
"net/smtp"
"net/textproto"
"strconv"
"sync"
"github.com/jordan-wright/email"
)
func main() {
var wg sync.WaitGroup
ch := make(chan *email.Email, 4)
err := sendEmailByPool(ch, &wg)
if err != nil {
panic(err)
}
for i := 0; i < 4; i++ {
wg.Add(1)
ch <- &email.Email{
To: []string{"polaris@studygolang.com"},
From: mime.QEncoding.Encode("UTF-8", "Go語言中文網") + "<274768166@qq.com>",
Subject: "Pool" + strconv.Itoa(i),
HTML: []byte("<h1>這是 HTML 正文</h1>"),
Headers: textproto.MIMEHeader{},
}
}
wg.Wait()
close(ch)
}
func sendEmailByPool(ch <-chan *email.Email, wg *sync.WaitGroup) error {
p, err := email.NewPool(
"smtp.qq.com:25",
4,
smtp.PlainAuth("", "274768166@qq.com", "password", "smtp.qq.com"))
if err != nil {
return err
}
for i := 0; i < 4; i++ {
go func() {
for e := range ch {
err := p.Send(e, 10e9)
if err != nil {
log.Println("Send Email fail, err:", err)
} else {
log.Println("Send Email Successfully!")
}
wg.Done()
}
}()
}
return nil
}
通過上面的介紹,你應該掌握了該庫的使用,該庫是不是滿足了你對發郵件的需求?
最后附上一個完整的帶附件的發郵件程序:
package main
import (
"log"
"mime"
"net/smtp"
"strings"
"github.com/jordan-wright/email"
)
func main() {
sendEmail("測試第三方 email 庫", "xuxinhua@studygolang.com")
}
func sendEmail(subject string, tos ...string) error {
e := email.NewEmail()
smtpUsername := "274768166@qq.com"
e.From = mime.QEncoding.Encode("UTF-8", "Go語言中文網") + "<274768166@qq.com>"
e.To = tos
e.Subject = subject
e.HTML = []byte("<h1>HTML 正文</h1>")
e.AttachFile("zap.log")
auth := smtp.PlainAuth("", smtpUsername, "password", "smtp.qq.com")
err := e.Send("smtp.qq.com:25", auth)
if err != nil {
log.Println("Send Mail to", strings.Join(tos, ","), "error:", err)
return err
}
log.Println("Send Mail to", strings.Join(tos, ","), "Successfully")
return nil
}
挑戰30天在頭條寫日記#
關于電子郵件和網頁等服務如何使用網絡進行連接的概述,具體的操作步驟和操作指南:
打開您的電子郵件客戶端,如Microsoft Outlook、Gmail、Apple Mail等。
在客戶端中找到 "設置" 或 "首選項" 選項。
選擇 "添加賬戶" 或 "新建郵箱賬戶"。
輸入您的電子郵件地址和密碼。
在配置中,選擇 "手動設置" 或 "高級設置"。
輸入電子郵件提供商提供的服務器設置信息,包括傳入(IMAP或POP3)和傳出(SMTP)服務器地址、端口號、加密類型等。
確保您的用戶名和密碼正確。
客戶端將嘗試連接到電子郵件服務器。
測試是否能夠成功接收和發送電子郵件。
一旦測試連接成功,保存設置并完成配置。
您可開始發送和接收電子郵件。
啟動您的Web瀏覽器,如Google Chrome、Mozilla Firefox、Microsoft Edge等。
在瀏覽器的地址欄中輸入您要訪問的網頁的URL(統一資源定位符)。
瀏覽器會將輸入的URL發送給DNS(域名系統)服務器,以獲取與該網址相關的IP地址。
一旦瀏覽器知道服務器的IP地址,它將建立一個TCP(傳輸控制協議)連接到服務器。
服務器接收到瀏覽器的請求,并將網頁的內容作為HTTP(超文本傳輸協議)響應返回給瀏覽器。
瀏覽器接收到服務器的響應后,將網頁的HTML、CSS和JavaScript等內容渲染到您的屏幕上。
您現在可在瀏覽器中瀏覽網頁,與頁面上的鏈接交互,填寫表單等。
電子郵件使用諸如SMTP、POP3和IMAP等協議進行通信,而網頁使用HTTP和HTTPS協議與服務器交互,這些協議和通信方式都是標準化的。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。