2010-06-28 25 views
2

J'ai un projet d'application Web développé et testé sur une machine WinXP (IIS 5.1). Il a été publié sur un Win2003Server (IIS 6.0). Une fonctionnalité de l'application envoie un e-mail avec un en-tête "Reply-To" (extrait suit). Sur la machine IIS 5.1, Reply-To apparaît correctement dans l'en-tête. Lorsqu'il est envoyé de l'IIS 6.0 PC, l'en-tête ne contient pas l'adresse de réponse (voir ci-dessous):System.Net.Mail.MailMessage L'en-tête "Reply-To" est ignoré dans IIS 6.0 mais OK dans IIS 5.1

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 

Les têtes Internet suivants sont collés à partir MS Outlook 2003 - Vue - Options:

réponse valide comme envoyé de la machine JOHNXP (le dev PC avec IIS 5.1):

Return-path: <[email protected]> 
Received: from JohnXP (unverified [10.10.30.66]) by mail.cbmiweb.com 
(Rockliffe SMTPRA 9.2.0) with ESMTP id <[email protected]>; 
Mon, 28 Jun 2010 15:16:25 -0400 
Message-ID: <[email protected]> 
Reply-To: [email protected] 
MIME-Version: 1.0 
From: [email protected] 
To: [email protected] 
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 

manquant Répondre à envoyés depuis la machine à MOJITO (Le serveur 2003 avec IIS 6.0):

Return-path: <[email protected]> 
Received: from MOJITO (unverified [10.10.30.14]) by mail.cbmiweb.com 
(Rockliffe SMTPRA 9.2.0) with ESMTP id <[email protected]>; 
Mon, 28 Jun 2010 13:37:53 -0400 
Message-ID: <[email protected]> 
MIME-Version: 1.0 
From: [email protected] 
To: [email protected] 
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 

Je mis même en VStudio2008 sur la machine Win2003 et arrêté à un point d'arrêt à l'intérieur du code ci-dessus pour vous assurer que le MailMessage était en fait être construit correctement avec le " Reply-To "ajouté à l'en-tête (c'est). Pourtant, en arrivant dans Outlook, le message provenant du serveur MOJITO n'a pas le "Reply-To" dans l'en-tête.

Y a-t-il d'autres problèmes de configuration qui contrecarreraient ce que le code essaie de faire?

+0

Ran dans ce numéro hier dans un projet qui a quelques reports de code hérités. Pensé que cela pourrait être le cas. On dirait qu'il vaut mieux faire confiance à l'abstraction ici. Merci pour l'aide! –

Répondre

5

Voici ce que j'ai changé pour résoudre ce problème:

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 

J'ai découvert cette approche de codage alternatif de ce grand article de Scott Mitchell:

"Sending Email in ASP.NET 2.0: Reply-To, Priority, and Read Receipts"

On dirait que soit la méthode devrait fonctionner, mais il est temps de passer à autre chose.