sách gpt4 ăn đã đi

C# sử dụng phương thức hệ thống để gửi một ví dụ hoàn chỉnh về email không đồng bộ

In lại Tác giả: qq735679552 Thời gian cập nhật: 27-09-2022 22:32:09 26 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

Bài viết trên blog CFSDN C# này sử dụng phương thức hệ thống để gửi email không đồng bộ với các ví dụ đầy đủ được tác giả sưu tầm và biên soạn. Nếu bạn quan tâm đến bài viết này, hãy nhớ thích nó.

Ví dụ trong bài viết này mô tả cách C# sử dụng các phương thức hệ thống để gửi email không đồng bộ. Share cho mọi người tham khảo nhé, chi tiết như sau:

Bối cảnh dự án:

Gần đây, tôi đang xây dựng lại một dự án từ vài năm trước và nhận thấy rằng chức năng gửi email cần một khoảng thời gian nhất định để xử lý và do quá trình gửi diễn ra đồng bộ nên các thao tác tiếp theo không thể thực hiện được khi gửi email.

Thực tế sau khi gửi email, bạn chỉ cần ghi kết quả gửi vào nhật ký hệ thống mà không ảnh hưởng gì đến doanh nghiệp khác nên chúng tôi quyết định thay đổi thao tác gửi email thành không đồng bộ.

Vì chúng ta đang sử dụng thư viện lớp mail C# và bản thân C# đã cung cấp chức năng gửi không đồng bộ, nghĩa là bạn chỉ cần thay đổi phương thức gửi thành sendasync. Việc thay đổi tên phương thức không khó, nhưng hơi khó khăn một chút. khó viết nhật ký sau khi gửi.

Vì việc gửi email là một thành phần riêng biệt trong dự án nên tôi không thể trực tiếp thêm thao tác ghi nhật ký vào thư viện lớp email gửi (không nằm trong cùng một thư viện lớp, các ví dụ trên mạng và msdn đều thuộc cùng một thành phần). ).

Nhưng C# có thể sử dụng đại biểu để truyền các phương thức làm tham số, vì vậy tôi có thể thêm phương thức gọi lại vào phương thức gửi email, sau đó thực thi phương thức gọi lại sau khi gửi email không đồng bộ.

Mã hoàn chỉnh:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
/*************************************************** *****************
  *Người tạo: html
  * Mô tả: c# gửi bản demo email không đồng bộ
  **************************************************** *****************/
sử dụng hệ thống;
sử dụng hệ thống.net.mail;
không gian tên gửi email thử nghiệm
{
   lớp học chương trình
   {
     hằng số sợi dây định dạng ngày = "năm-tháng-ngày :hh:mm:ss:ffffff" ;
     tĩnh vô hiệu chủ yếu( sợi dây [] đối số)
     {
       console.writeline( "Bắt đầu gửi email không đồng bộ, thời gian:" + datetime.now.tostring(định dạng ngày tháng));
       mới mailhelper().sendasync( "gửi email thử nghiệm không đồng bộ" , "đây là thử nghiệm gửi email không đồng bộ" , "huangyuan413026@163.com" , emailhoàn thành);
       console.writeline( "Email đang được gửi không đồng bộ, thời gian:" + datetime.now.tostring(định dạng ngày tháng));
       console. đọc khóa();
       console. writeline();
     }
     ///
     /// Phương thức gọi lại sau khi email được gửi
     ///
     ///
     tĩnh vô hiệu emailhoàn thành( sợi dây tin nhắn)
     {
       // Trì hoãn 1 giây
       hệ thống.threading.thread.sleep(1000);
       console. writeline();
       console.writeline( "Kết quả gửi email:\r\n" + (tin nhắn == "ĐÚNG VẬY" ? "Email đã được gửi thành công" : "Gửi email không thành công" ) + ",thời gian:" + datetime.now.tostring(định dạng ngày tháng));
       // ghi nhật ký
     }
   }
   ///
   /// Gửi lớp thư
   ///
   công cộng lớp học người đưa thư
   {
     công cộng đại biểu số nguyên phương pháp ủy nhiệm( số nguyên x, số nguyên Và);
     riêng tư chỉ đọc số nguyên smtport = 25;
     chỉ đọc sợi dây smtpserver = "smtp.baidu.com" ;
     riêng tư chỉ đọc sợi dây tên người dùng = "support@baidu.com" ;
     chỉ đọc sợi dây mật khẩu = "baidu.com" ;
     riêng tư chỉ đọc sợi dây tên tác giả = "baidu" ;
     công cộng sợi dây chủ thể { lấy ; bộ ; }
     công cộng sợi dây thân hình { lấy ; bộ ; }
     công cộng sợi dây họ { lấy ; bộ ; }
     công cộng bool cho phépsl { lấy ; bộ ; }
     mailmessage getclient
     {
       lấy
       {
         nếu như ( sợi dây .isnullorempty(tos)) trở lại vô giá trị ;
         tin nhắn thư tin nhắn = mới tin nhắn thư();
         // Nhiều máy thu
         foreach ( sợi dây _chuỗi TRONG tos.split( ',' ))
         {
           mailmessage.to.add(_str);
         }
         mailmessage.từ = mới system.net.mail.mailaddress(tên người dùng, tên tác giả);
         mailmessage.subject = chủ đề;
         mailmessage.body = nội dung;
         mailmessage.isbodyhtml = ĐÚNG VẬY ;
         mailmessage.bodyencoding = system.text.encoding.utf8;
         mailmessage.subjectencoding = system.text.encoding.utf8;
         mailmessage.priority = system.net.mail.mailpriority.high;
         trở lại tin nhắn;
       }
     }
     smtpclient được smtpclient
     {
       lấy
       {
         trở lại mới smtpclient
         {
           sử dụng thông tin xác thực mặc định = SAI ,
           chứng chỉ = mới system.net.networkcredential(tên người dùng, pwd),
           phương pháp phân phối = system.net.mail.smtpdeliverymethod.network,
           máy chủ = smtpserver,
           cổng = smtpport,
           enabledsl = enabledsl,
         };
       }
     }
     //Phương thức gọi lại
     hành động< sợi dây > hành độngendcompletedcallback = vô giá trị ;
     /////
     ///// Gửi email không đồng bộ
     /////
     ///// 主题
     ///// Nội dung
     ///// Bộ thu, được phân tách bằng nhiều bộ thu
     //// Phương thức gọi lại sau khi email được gửi
     /////
     công cộng vô hiệu gửi đồng bộ( sợi dây chủ thể, sợi dây thân hình, sợi dây đến, hành động< sợi dây > _actincompletedcallback)
     {
       nếu như ( sợi dây .isnullorempty(đến)) trở lại ;
       tos = cái đó;
       smtpclient smtpclient = getsmtpclient;
       thư tin nhắn thư = getclient;
       nếu như (smtpclient == vô giá trị || tin nhắn == vô giá trị ) trở lại ;
       chủ ngữ = chủ ngữ;
       thân = cơ thể;
       cho phépsl = SAI ;
       // Gửi phương thức gọi lại email
       actionsendcompletedcallback = _actincompletedcallback;
       smtpclient.gửihoàn thành += mới sendcompletedeventhandler(sendcompletedcallback);
       thử
       {
         smtpclient.sendasync(thư, "ĐÚNG VẬY" ); //Gửi email không đồng bộ. Nếu tham số trong phương thức gọi lại không phải là "true", điều đó có nghĩa là việc gửi không thành công.
       }
       nắm lấy (ngoại lệ e)
       {
         ném mới ngoại lệ (e.message);
       }
       Cuối cùng
       {
         smtpclient = vô giá trị ;
         tin nhắn thư = vô giá trị ;
       }
     }
     ///
     /// Thực thi phương thức gọi lại sau khi hoàn thành thao tác không đồng bộ
     ///
     ///
     ///
     riêng tư vô hiệu gửihoàn thànhgọi lại( sự vật người gửi, system.componentmodel.asynccompletedeventargs e)
     {
       // Không yêu cầu phương thức gọi lại trong cùng một thành phần, chỉ cần viết nhật ký trực tiếp tại đây
       // ghi nhật ký
       //trở lại;
       nếu như (hành độnggửihoàn thànhgọi lại == vô giá trị ) trở lại ;
       sợi dây tin nhắn = sợi dây .trống;
       nếu như (e.đã hủy)
       {
         tin nhắn = "Hoạt động không đồng bộ đã bị hủy" ;
       }
       khác nếu như (e.lỗi != vô giá trị )
       {
         tin nhắn = ( sợi dây .định dạng( "trạng thái người dùng:{0},tin nhắn:{1}" , ( sợi dây )e.userstate, e.error.tostring()));
       }
       khác
         tin nhắn = ( sợi dây )e.trạng thái người dùng;
       //Thực thi phương thức gọi lại
       hành độngendcompletedcallback(tin nhắn);
     }
   }
}

Sơ đồ hiệu ứng chạy như sau:

C# sử dụng phương thức hệ thống để gửi một ví dụ hoàn chỉnh về email không đồng bộ

Mình hy vọng bài viết này sẽ hữu ích cho mọi người trong việc lập trình C#.

Cuối cùng, bài viết này về một ví dụ hoàn chỉnh về việc sử dụng C# để gửi email không đồng bộ bằng các phương thức hệ thống sẽ kết thúc tại đây. các bài viết liên quan tôi hy vọng tất cả các bạn sẽ ủng hộ blog của tôi trong tương lai! .

26 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress