新社区网站

通常,你会在正确的地方,但我们最近推出了一个全新的社区网站……为社区,受社区。

耶……带我去社区!

社区博客是社区成员的个人观点,绝不是DNN公司或DNN平台的官方立场。这是一个表达个人对DNNPlatform、社区及其生态系统的想法的地方。你有什么有用的信息想要与DNN社区分享吗?如果有,请联系

社区博客的使用由我们的社区博客指南-请在评论或发布之前阅读。


如何:在DotNetNuke中配置SMTP登录

有时很难对DotNetNuke应用程序中出现的SMTP问题进行故障排除。当然,您可以查看邮件服务器的SMTP日志,但这可能是配置错误,或者根本无法访问(在共享主机环境中尤其如此)。

幸运的是,有一种非常简单的方法可以为DotNetNuke生成的所有网络流量启用日志记录,其中包括SMTP流量

首先要认识到DotNetNuke电子邮件实现使用的是System.Net.Mail。除了MSDN文档关于System.Net.Mail命名空间,还有一个很好的FAQ网站:www.systemnetmail.com

在该站点上,我们可以找到一种非常简单的方法来为邮件系统配置日志记录。实际上,这里解释的方式是,它将为应用程序完成的所有网络请求设置日志记录。这在故障排除时非常有用。

设置非常简单:

< system.diagnostics >

<消息>
<源name = "系统。网”>
<听众>
<添加name = " MyTraceFile " / >
< /听众>
> < /来源
<源name = " System.Net.Sockets " >
<听众>
<添加name = " MyTraceFile " / >
< /听众>
> < /来源
> < /来源
< sharedListeners >
<添加
name = " MyTraceFile "
type = " System.Diagnostics.TextWriterTraceListener "
initializeData = "门户/ _Default /日志/ System.Net.trace.log。资源" / >
< / sharedListeners >
<开关>
<添加name = "系统。Net" value="Verbose" />
<添加name = " System.Net。socket " value="Verbose" />
< /开关>
< / system.diagnostics >

把这个构型放在 web节点。配置后,一切都会开始工作。日志文件将创建在/Portals/_default/Logs中,也可以通过Host > Host Settings > Logs访问。

这是一个从HostSettings发送测试邮件时记录的示例:

系统。Net Verbose: 0: [6708] SmtpClient::.ctor()
系统。Net Information: 0:[6708]关联SmtpClient#49589702和SmtpTransport#5072988
系统。Net Verbose: 0: [6708] exit SmtpClient::.ctor() -> SmtpClient#49589702
系统。Net Verbose: 0: [6708] SmtpClient#49589702::Send(MailMessage#21248308)
系统。网络信息:0:[6708]SmtpClient#49589702::Send(DeliveryMethod=Network)
系统。Net Information: 0: [6708] associationsmtpclient# 49589702与MailMessage#21248308
系统。Net Verbose: 0: [6708] ServicePoint#19000239::ServicePoint(127.0.0.1:25)
系统。网络信息:0:[6708]关联SmtpTransport#5072988和SmtpConnection#18163917
系统。网络信息:0:[6708]关联SmtpConnection#18163917和ServicePoint#19000239
System.Net.Sockets Verbose: 0: [6708] Socket#34257155::Socket(AddressFamily#2)
System.Net.Sockets Verbose: 0: [6708] exit Socket#34257155::Socket()
System.Net.Sockets Verbose: 0: [6708] Socket#9311726::Socket(AddressFamily#23)
System.Net.Sockets Verbose: 0: [6708] exit Socket#9311726::Socket()
System.Net.Sockets Verbose: 0: [6708] DNS::TryInternalResolve(127.0.0.1)
System.Net.Sockets Verbose: 0: [6708] Socket#34257155::Connect(127.0.0.1:25#16777318)
System.Net.Sockets Information: 0: [6708] Socket#34257155 -创建了从127.0.0.1:1516到127.0.0.1:25的连接。
System.Net.Sockets Verbose: 0: [6708] exit Socket#34257155::Connect()
System.Net.Sockets Verbose: 0: [6708] Socket#9311726::Close()
System.Net.Sockets Verbose: 0: [6708] Socket#9311726::Dispose()
System.Net.Sockets Verbose: 0: [6708] exit Socket#9311726::Close()
系统。Net Information: 0: [6708] SmtpPooledStream#31144392 -创建了从127.0.0.1:1516到127.0.0.1:25的连接。
系统。网络信息:0:[6708]关联SmtpConnection#18163917与SmtpPooledStream#31144392
System.Net.Sockets Verbose: 0: [6708] Socket#34257155::Receive()
System.Net.Sockets Verbose: 0: [6708] Data from Socket#34257155::Receive
System.Net.Sockets Verbose: 0: [6708] 00000000: 32 32 30 206c 6F 63 61-6C 68 6F 73 74 2073 6D: 220 localhost sm
System.Net.Sockets Verbose: 0: [6708] 00000010: 74 70 34 64 65 76 20 72-65 61 64 79 0D 0A: tp4dev ready..
System.Net.Sockets Verbose: 0: [6708] exit Socket#34257155::Receive() -> Int32#30
System.Net.Sockets Verbose: 0: [6708] Socket#34257155::Send()
System.Net.Sockets Verbose: 0: [6708] Data from Socket#34257155::Send
System.Net.Sockets Verbose: 0: [6708] 00000000: 45 48 4C 4F 20 44 4E 4E- 2d 50 43 36 37 0D 0A: EHLO DNN-PC67..
System.Net.Sockets Verbose: 0: [6708] exit Socket#34257155::Send() -> Int32#15
System.Net.Sockets Verbose: 0: [6708] Socket#34257155::Receive()
System.Net.Sockets Verbose: 0: [6708] Data from Socket#34257155::Receive
System.Net.Sockets Verbose: 0: [6708] 00000000: 32 35 30 2D 4E 69 63 65-20 74 6F 20 6D 65 65 74: 250-很高兴见到你
System.Net.Sockets Verbose: 0: [6708] 00000010: 20 79 6F 75 2E 0D 0A 32-35 30 2D 38 42 49 54 4D:你
System.Net.Sockets Verbose: 0: [6708] 00000020: 49 4D 45 0D 0A 32 35 30-2D 53 54 41 52 54 54 4C: IME. 250-STARTTL
System.Net.Sockets Verbose: 0: [6708] 00000030: 53 0D 0A 32 35 30 2D 41-55 54 48 3D 43 52 41 4D: S..250-AUTH=CRAM
System.Net.Sockets Verbose: 0: [6708] 00000040: 2D 4D 44 35 20 50 4C 41-49 4E 20 4C 4F 47 49 4E: -MD5 PLAIN LOGIN
System.Net.Sockets Verbose: 0: [6708] 00000050: 20 41 4E 4F 4E 59 4D 4F-55 53 0D 0A 32 35 30 2D: ANONYMOUS..250-
System.Net.Sockets Verbose: 0: [6708] 00000060: 41 55 54 48 20 43 52 41-4D 2D 4D 44 35 20 50 4C: AUTH CRAM-MD5 PL
System.Net.Sockets Verbose: 0: [6708] 00000070: 41 49 4E 20 4C 4F 47 49-4E 20 41 4E 4F 4E 59 4D: AIN LOGIN anonymous
System.Net.Sockets Verbose: 0: [6708] 00000080: 4F 55 53 0D 0A 32 35 30-20 53 49 5A 45 0D 0A: ou ..250大小. .
System.Net.Sockets Verbose: 0: [6708] exit Socket#34257155::Receive() -> Int32#143
System.Net.Sockets Verbose: 0: [6708] Socket#34257155::Send()
System.Net.Sockets Verbose: 0: [6708] Data from Socket#34257155::Send
System.Net.Sockets Verbose: 0: [6708] 00000000: 4D 41 49 4C 20 46 52 4F-4D 3A 3C 73 75 70 70 6F: MAIL FROM: System.Net.Sockets Verbose: 0: [6708] 00000010: 72 74 40 64 6E 6E 37 30-33 65 65 2D 36 34 2D 69;(电子邮件保护)
System.Net.Sockets Verbose: 0: [6708] 00000020: 6E 73 74 2E 64 6E 6E 64 64 6E 6E 64 3E 0D 0A: nst.dnndev.me>..
System.Net.Sockets Verbose: 0: [6708] exit Socket#34257155::Send() -> Int32#48
System.Net.Sockets Verbose: 0: [6708] Socket#34257155::Receive()
System.Net.Sockets Verbose: 0: [6708] Data from Socket#34257155::Receive
System.Net.Sockets Verbose: 0: [6708] 00000000: 32 35 30 20 4F 6B 65 79-20 64 6F 6B 65 79 0D 0A: 250 Okey dokey..
System.Net.Sockets Verbose: 0: [6708] exit Socket#34257155::Receive() -> Int32#16
System.Net.Sockets Verbose: 0: [6708] Socket#34257155::Send()
System.Net.Sockets Verbose: 0: [6708] Data from Socket#34257155::Send
System.Net.Sockets Verbose: 0: [6708] 00000000: 52 43 50 54 20 54 4F 3A-3C 73 75 70 70 6F 72 74: RCPT TO: System.Net.Sockets Verbose: 0: [6708] 00000010: 40 64 6E 6E 37 30 33 65-65 2D 36 34 2D 69 6E 73: @dnn703ee-64-ins
System.Net.Sockets Verbose: 0: [6708] 00000020: 74 2E 64 6E 6E 64 65 76-2E 6D 65 3E 0D 0A: t.dnndev.me>..
System.Net.Sockets Verbose: 0: [6708] exit Socket#34257155::Send() -> Int32#46
System.Net.Sockets Verbose: 0: [6708] Socket#34257155::Receive()
System.Net.Sockets Verbose: 0: [6708] Data from Socket#34257155::Receive
System.Net.Sockets Verbose: 0: [6708] 00000000: 32 35 30 20 52 65 63 69-70 69 65 6E 74 20 61 63: 250接收方ac
System.Net.Sockets Verbose: 0: [6708] 00000010: 63 65 70 74 65 64 0D 0A-: received ..
System.Net.Sockets Verbose: 0: [6708] exit Socket#34257155::Receive() -> Int32#24
System.Net.Sockets Verbose: 0: [6708] Socket#34257155::Send()
System.Net.Sockets Verbose: 0: [6708] Data from Socket#34257155::Send
System.Net.Sockets Verbose: 0: [6708] 00000000: 44 41 54 41 0D 0A: DATA..
System.Net.Sockets Verbose: 0: [6708] exit Socket#34257155::Send() -> Int32#6
System.Net.Sockets Verbose: 0: [6708] Socket#34257155::Receive()
System.Net.Sockets Verbose: 0: [6708] Data from Socket#34257155::Receive
System.Net.Sockets Verbose: 0: [6708] 00000000: 33 35 34 20 45 6E 64 20- 6d 65 73 73 61 67 65 20: 354结束消息
System.Net.Sockets Verbose: 0: [6708] 00000010: 77 69 74 68 20 70 65 72-69 6F 64 0D 0A: with period..
System.Net.Sockets Verbose: 0: [6708] exit Socket#34257155::Receive() -> Int32#29
系统。网络信息:0:[6708]关联消息#21078404与HeaderCollection#58383834
系统。Net Information: 0: [6708] HeaderCollection#58383834::Remove(Content-Type)
系统。网络信息:0:[6708]HeaderCollection#58383834::Set(MIME-Version=1.0)
系统。Net Information: 0: [6708] HeaderCollection#58383834::Remove(Sender)
系统。网络信息:0:[6708]HeaderCollection#58383834::Remove(Cc)
系统。网络信息:0:[6708]HeaderCollection#58383834::Remove(密件)
系统。Net Information: 0: [6708] HeaderCollection#58383834::Remove(X-Priority)
系统。Net Information: 0: [6708] HeaderCollection#58383834::Remove(Priority)
系统。Net Information: 0: [6708] HeaderCollection#58383834::Remove(Importance)
系统。Net Information: 0: [6708] HeaderCollection#58383834::Get(MIME-Version)
系统。Net Information: 0: [6708] HeaderCollection#58383834::Get(From)
系统。Net Information: 0: [6708] HeaderCollection#58383834::Get(To)
系统。网络信息:0:[6708]HeaderCollection#58383834::Get(Reply-To)
系统。Net Information: 0: [6708] HeaderCollection#58383834::Get(Date)
系统。Net Information: 0: [6708] HeaderCollection#58383834::Get(Subject)
系统。Net Information: 0: [6708] HeaderCollection#10714253::Get(Content-Type)
系统。Net Information: 0: [6708] HeaderCollection#10714253::Get(Content-Transfer-Encoding)
System.Net.Sockets Verbose: 0: [6708] Socket#34257155::Send()
System.Net.Sockets Verbose: 0: [6708] Data from Socket#34257155::Send
System.Net.Sockets Verbose: 0: [6708] 00000000: 4D 49 4D 45 2D 56 65 72-73 69 6F 6E 3A 2031 2E: MIME-Version: 1。
System.Net.Sockets Verbose: 0: [6708] 00000010: 30 0D 0A 46 72 6F 6D 3A-20 73 75 70 70 6F 72 74: 0..来自:支持
System.Net.Sockets Verbose: 0: [6708] 00000020: 40 64 6E 6E 37 30 33 65-65 2D 36 34 2D 69 6E 73: @dnn703ee-64-ins
System.Net.Sockets Verbose: 0: [6708] 00000030: 74 2E 64 6E 6E 64 65 76-2E 6D 65 0D 0A 54 6F 3A: t.dnndev.me. To:
System.Net.Sockets Verbose: 0: [6708] 00000040: 20 73 75 70 70 6F 72 74-40 64 6E 6E 37 30 33 65;(电子邮件保护)
System.Net.Sockets Verbose: 0: [6708] 00000050: 65 2D 36 34 2D 69 6E 73-74 2E 64 6E 6E 64 65 76: e-64-inst.dnndev
System.Net.Sockets Verbose: 0: [6708] 00000060: 2E 6D 65 0D 0A 52 65 70-6C 79 2D 54 6F 3A 20 73: .me..答复:年代
System.Net.Sockets Verbose: 0: [6708] 00000070: 75 70 70 6F 72 74 40 64-6E 6E 37 30 33 65 65 2D:(电子邮件保护)
System.Net.Sockets Verbose: 0: [6708] 00000080: 36 34 2D 69 6E 73 74 2E-64 6E 6E 64 65 76 2E 6D: 64-inst.dnndev.m
System.Net.Sockets Verbose: 0: [6708] 00000090: 65 0D 0A 44 61 74 65 3A-20 36 20 46 65 62 20 32: e..日期:2月6日
System.Net.Sockets Verbose: 0: [6708] 000000A0: 30 31 33 20 32 31 3A 34-39 3A 34 39 20 2B 30 31:013 21:49:49 +01
System.Net.Sockets Verbose: 0: [6708] 000000B0: 30 30 0D 0A 53 75 62 6A-65 63 74 3A 20 44 6F 74: 00..主题:点
System.Net.Sockets Verbose: 0: [6708] 000000C0: 4E 65 74 4E 75 6B 65 20-53 4D 54 50 20 43 6F 6E: NetNuke SMTP Con
System.Net.Sockets Verbose: 0: [6708] 000000D0: 66 69 67 75 72 61 74 69- 6f 6E 20 54 65 73 74 0D:配置测试。
System.Net.Sockets Verbose: 0: [6708] 000000E0: 0A 43 6F 6E 74 65 6E 74- 2d 54 79 70 65 3A 20 74: .Content-Type: t
System.Net.Sockets Verbose: 0: [6708] 000000F0: 65 78 74 2F 70 6C 61 69-6E 3B 20 63 68 61 72 73: ext/plain;识字课
System.Net.Sockets Verbose: 0: [6708] 00000100: 65 74 3D 75 73 2D 61 73-63 69 69 0D 0A 43 6F 6E: et=us-ascii..Con
System.Net.Sockets Verbose: 0: [6708] 00000110: 74 65 6E 74 2D 54 72 61-6E 73 66 65 72 2D 45 6E: tent-Transfer-En
System.Net.Sockets Verbose: 0: [6708] 00000120: 63 6F 64 69 6E 67 3A 20-71 75 6F 74 65 64 2D 70:编码:引用p
System.Net.Sockets Verbose: 0: [6708] 00000130: 72 69 6E 74 61 62 6C 65-0D 0A 0D 0A:可打印....
System.Net.Sockets Verbose: 0: [6708] exit Socket#34257155::Send() -> Int32#316
系统。Net Information: 0: [6708] HeaderCollection#10714253::Get(Content-Transfer-Encoding)
系统。Net Information: 0: [6708] HeaderCollection#10714253::Get(Content-Transfer-Encoding)
System.Net.Sockets Verbose: 0: [6708] Socket#34257155::Send()
System.Net.Sockets Verbose: 0: [6708] Data from Socket#34257155::Send
System.Net.Sockets Verbose: 0: [6708] 00000000: 0D 0A: ..
System.Net.Sockets Verbose: 0: [6708] exit Socket#34257155::Send() -> Int32#2
System.Net.Sockets Verbose: 0: [6708] Socket#34257155::Send()
System.Net.Sockets Verbose: 0: [6708] Data from Socket#34257155::Send
System.Net.Sockets Verbose: 0: [6708] 00000000: 0d0a 2E 0d0a: .....
System.Net.Sockets Verbose: 0: [6708] exit Socket#34257155::Send() -> Int32#5
System.Net.Sockets Verbose: 0: [6708] Socket#34257155::Receive()
System.Net.Sockets Verbose: 0: [6708] Data from Socket#34257155::Receive
System.Net.Sockets Verbose: 0: [6708] 00000000: 32 35 30 20 4D 61 69 6C-20 61 63 63 65 70 74 65: 250邮件接受
System.Net.Sockets Verbose: 0: [6708] 00000010: 64 0D 0A: d..
System.Net.Sockets Verbose: 0: [6708] exit Socket#34257155::Receive() -> Int32#19
系统。Net Verbose: 0: [6708] exit SmtpClient#49589702::Send()
系统。Net Information: 0: [10080] ServicePoint#19000239 -关闭为空闲。
系统。Net Verbose: 0: [10080] SmtpPooledStream::Dispose #31144392
System.Net.Sockets Verbose: 0: [10080] Socket#34257155::Send()
System.Net.Sockets Verbose: 0: [10080] Data from Socket#34257155::Send
System.Net.Sockets Verbose: 0: [10080] 00000000: 51 55 49 54 0D 0A: QUIT..
System.Net.Sockets Verbose: 0: [10080] exit Socket#34257155::Send() -> Int32#6
System.Net.Sockets Verbose: 0: [10080] Socket#34257155::Receive()
System.Net.Sockets错误:0:[10080]Socket#34257155::UpdateStatusAfterSocketError() -连接中止
System.Net.Sockets Error: 0: [10080] Exception in Socket#34257155::Receive -一个已建立的连接被你的主机上的软件终止。

正如您所看到的,您可以跟踪从连接到SMTP服务器的完整事件流:

System.Net.Sockets Verbose: 0: [6708] 00000000: 32 32 30 206c 6F 63 61-6C 68 6F 73 74 2073 6D:220 localhost sm
System.Net.Sockets Verbose: 0: [6708] 00000010: 74 70 34 64 65 76 20 72-65 61 64 79 0D 0A;tp4dev准备. .

这表明邮件服务器(在本例中为smtp4dev)以220状态接受连接,并准备继续。在进行了一些细微的修改(客户端向服务器授权)之后,客户端开始发送实际的消息,服务器回复说一切正常,接收方接受,然后将完整的消息(以编码文本的形式)发送到服务器。最后,消息被接受,连接被关闭:

System.Net.Sockets Verbose: 0: [6708] 00000000: 32 35 30 20 4D 61 69 6C-20 61 63 63 65 70 74 65;邮件接收
System.Net.Sockets Verbose: 0: [6708] 00000010: 64 0d0a:d . .
System.Net.Sockets Verbose: 0: [6708]退出

这是一个非常强大的选项,可以真正解决DotNetNuke和配置的SMTP服务器之间的通信问题。一个公平的警告:如果您保持此跟踪活动,它将生成一个可能非常大的文件。如果您希望在应用程序中保留这种类型的日志记录,那么确保日志文件是滚动类型可能是一个好主意。标准的TextWriterTraceListener不能做到这一点,但是创建自己的侦听器并不是很难。看看Dave Bost关于如何做到这一点的优秀博客:滚动TextWriterTraceListner日志

祝您故障排除愉快!

(这是一个转帖来自我的个人博客)

评论

评论形式

只有注册用户才能发表评论。

NewsArchives


Aderson Oliveira(22岁)
亚历克·惠廷顿(11岁)
亚历山德拉·戴维斯(3岁)
Alex Shirley(10岁)
安德鲁·霍夫林(3岁)
安德鲁·纳斯(30岁)
安迪·特里巴(1)
安东尼·格伦赖特(5岁)
安东尼奥·夏格里(28岁)
阿什·普拉萨德(37岁)
本·施密特(1)
本杰明·赫尔曼(25岁)
伯努瓦·萨顿(9岁)
贝丝·费尔堡(12岁)
比尔·沃克(36岁)
鲍勃·克鲁格(5岁)
波格丹·莱特斯库(1)
布莱恩·杜克斯(2岁)
白雪皑皑(1)
布鲁斯·查普曼(20岁)
布莱恩·安德鲁斯(1)
卡塔·康诺利(55岁)
查尔斯·纳斯(163)
克里斯·哈蒙德(第213届)
克里斯·帕特拉(55岁)
克林特·帕特森(108)
邝党(21岁)
丹尼尔·巴塞洛缪(2岁)
丹尼尔·梅特勒(181)
丹尼尔·瓦拉达斯(48岁)
戴夫·巴克纳(2岁)
大卫·波因德克斯特(12岁)
大卫·罗德里格斯(3岁)
萧耀文(1)
道格·豪厄尔(11岁)
Erik van Ballegoij(30岁)
恩斯特·彼得·塔明加(80岁)
弗朗西斯科·佩雷斯·安德烈斯(17岁)
杰夫·巴洛(12岁)
乔治·阿拉特拉什(12岁)
吉福德·沃特金斯(3)
吉尔·勒·皮戈彻(3)
伊恩·罗宾逊(7岁)
以色列·马丁内斯(17岁)
简·布洛姆奎斯特(2)
简·乔纳斯(3岁)
贾斯普雷特·巴蒂亚(1)
詹妮·梅里菲尔德(6岁)
乔·布林克曼(274)
约翰·米切尔(1)
乔恩·亨宁(14岁)
乔纳森·希利(4岁)
乔丹·库珀史密斯(1)
约瑟夫·克雷格(2岁)
马侃(1)
凯文贝吉(3岁)
凯利·福特(4岁)
肯·格里尔森(10岁)
凯文·施莱纳(6岁)
利·波因特(31岁)
洛林·杨(60岁)
Malik Khan (1)
马特·拉特利奇(2岁)
马蒂亚斯·施洛曼(16岁)
毛里西奥Márquez (5)
迈克尔·多克西(7岁)
迈克尔·托比什(3岁)
迈克尔·华盛顿(2002)
米格尔·加梅坦(3)
迈克·霍顿(19岁)
米歇尔·塞勒斯(40岁)
弥敦罗孚(3)
Navin V Nagiah(14岁)
n (31)
Nik Kalyani(14岁)
奥利弗·海因(1)
帕特里西奥·f·萨利纳斯(1)
帕特里克·瑞恩(1)
彼得·唐克(54岁)
菲利普·比德尔(135岁)
菲利普·贝克尔(4岁)
理查德·杜马斯(22岁)
罗伯特·J·柯林斯(5岁)
罗杰·塞尔温(8岁)
鲁本·洛佩兹(1)
莱恩·马丁内斯(1岁)
Sacha Trauwaen (1)
爱沙尼亚语(4)
Sanjay Mehrotra(9岁)
斯科特·麦卡洛克(1)
斯科特·施莱西尔(11岁)
斯科特·威尔金森(3岁)
斯科特·威尔海特(97岁)
塞巴斯蒂安·洛波德(80岁)
肖恩·沃克(237)
肖恩·梅哈菲(17岁)
斯蒂芬·卡尔曼(12岁)
Stefan Kamphuis(12岁)
史蒂夫·法比安(31岁)
史蒂文·费舍尔(1)
蒂莫·布鲁梅尔霍夫(24岁)
托尼·亨利克(3岁)
托斯滕·韦根(3岁)
第谷·德·沃德(4)
Vicenç Masanas(27岁)
Vincent Nguyen(3岁)
维塔利·科扎达耶夫(6岁)
威尔·摩根维克(40岁)
威尔·斯特罗尔(180岁)
威廉·塞弗伦斯(5岁)
什么是液体含量?
找出
什么是液体含量?
找出
什么是液体含量?
找出
Baidu
map