System.Net.Mail.MailMessage在IIS 6.0中忽略"Reply-To"标头,但在IIS 5.1中是正常的

Joh*_*ams 2 asp.net header system.net.mail mailmessage reply

我有一个在WinXP机器(IIS 5.1)上开发和单元测试的Web应用程序项目.它已发布到Win2003Server(IIS 6.0).该应用程序的一项功能是发送一封带有"回复"标题的电子邮件(后面的代码段).在IIS 5.1计算机上,Reply-To在标题中正确显示.从IIS 6.0 PC发送时,标头不包含Reply-To地址(见下文):

    Public Shared Sub SendEmail_withReplyTo(ByVal emailfrom As String, _
                                        ByVal emailto As String, _
                                        ByVal vbody As String, _
                                        ByVal vsubject As String, _
                                        ByVal msgcc As String, _
                                        ByVal msgbcc As String, _
                                        ByVal sReplyTo As String)
    Dim MyMsg As New MailMessage
    ErrorTrap.ErrorMsg = Nothing
    With MyMsg
        .From = New MailAddress(emailfrom)
        .Headers.Add("Reply-To", sReplyTo)
        .To.Add(emailto)
        If msgcc.Length > 0 Then
            .CC.Add(msgcc)
        End If
        If msgbcc.Length > 0 Then
            .Bcc.Add(msgbcc)
        End If
        .Subject = vsubject
        .IsBodyHtml = True
        .Body = vbody
    End With
    Try
        Dim smtp As New SmtpClient
        smtp.Send(MyMsg)
    Catch ex As Exception
        ErrorTrap.ErrorMsg = Nothing
        ErrorTrap.ErrorMsg = ex.ToString
    End Try
End Sub
Run Code Online (Sandbox Code Playgroud)

从MS Outlook 2003粘贴以下Internet标头 - 视图 - 选项:

从JOHNXP机器(带有IIS 5.1的开发PC)发送的有效回复:

Return-path: <Service@zipeee.com>
Received: from JohnXP (unverified [10.10.30.66]) by mail.cbmiweb.com
(Rockliffe SMTPRA 9.2.0) with ESMTP id <B0003406093@mail.cbmiweb.com>;
Mon, 28 Jun 2010 15:16:25 -0400
Message-ID: <B0003406093@mail.cbmiweb.com>
Reply-To: terriadams@cox.net
MIME-Version: 1.0
From: Service@ZIPeee.com
To: johna@cbmiweb.com
Date: 28 Jun 2010 15:17:57 -0400
Subject: Regarding your Ad #153949: Yard sale in vienna va June 12 at 8am
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: quoted-printable
Run Code Online (Sandbox Code Playgroud)

缺少从MOJITO计算机(带有IIS 6.0的2003服务器)发送的回复:

Return-path: <Service@zipeee.com>
Received: from MOJITO (unverified [10.10.30.14]) by mail.cbmiweb.com
(Rockliffe SMTPRA 9.2.0) with ESMTP id <B0003405883@mail.cbmiweb.com>;
Mon, 28 Jun 2010 13:37:53 -0400
Message-ID: <B0003405883@mail.cbmiweb.com>
MIME-Version: 1.0
From: Service@ZIPeee.com
To: johna@cbmiweb.com
Date: 28 Jun 2010 13:39:25 -0400
Subject: Regarding your Ad #153949: Yard sale in vienna va June 12 at 8am
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: quoted-printable
Run Code Online (Sandbox Code Playgroud)

我甚至在Win2003机器上设置了VStudio2008并停在上面代码中的断点处,以确保mailmessage实际上是正确构建的,并在标题中添加了"Reply-To"(它是).但是当到达Outlook时,来自MOJITO服务器的消息缺少标题中的"Reply-To".

还有其他配置问题可以阻止实际代码尝试做什么吗?

Joh*_*ams 5

以下是我更改以解决此问题:

Dim MyMsg As New MailMessage
With MyMsg
        .From = New MailAddress(emailfrom)
        .ReplyTo = New MailAddress(sReplyTo)    'new code that fixed the problem
        '.Headers.Add("Reply-To", sReplyTo)     'old code that works on WinXP IIS 5.1 
Run Code Online (Sandbox Code Playgroud)

我从Scott Mitchell的这篇伟大文章中发现了这种替代编码方法:

"在ASP.NET 2.0中发送电子邮件:回复,优先级和已读回执"

似乎任何一种方法都应该有效,但现在是时候继续前进了.