代码之家  ›  专栏  ›  技术社区  ›  Zack Peterson

.NET为什么我不能重写web.config邮件设置?

  •  1
  • Zack Peterson  · 技术社区  · 15 年前

    通常,我的应用程序发送带有通用系统地址的电子邮件。但在某些情况下,我希望以登录用户的身份发送。

    Web.CONFIG:

    <?xml version="1.0"?>
    <configuration>
        ...
        <appSettings>
            ...
            <add key="DefaultEmailAddress"
                 value="noreply@example.com" />
        </appSettings>
        <system.net>
            <mailSettings>
                <smtp>
                    <network host="servername"
                             port="25"
                             userName="noreply"
                             password="apple" />
                </smtp>
            </mailSettings>
        </system.net>
        ...
    </configuration>
    

    此代码无法覆盖web.config中的默认发件人:

    Dim from As String = ConfigurationManager.AppSettings("DefaultEmailAddress")
    Dim to As String = "sadams@example2.com"
    Dim m As New Mail.MailMessage(from, to)
    m.IsBodyHtml = True
    m.Subject = "Test"
    m.Body = "<p>This is a test.</p>"
    
    Dim c As New System.Net.Mail.SmtpClient
    
    If CurrentUser.HasExchangeCredentials Then
        Dim userName As String = CurrentUser.ExchangeUserName
        Dim password As String = CurrentUser.ExchangePassword
        Dim address As String = CurrentUser.EmailAddress
        c.UseDefaultCredentials = False
        c.Credentials = New System.Net.NetworkCredential(userName, password)
        m.Sender = New Mail.MailAddress(address)
    End If
    
    c.Send(m)
    

    我的电子邮件发出了,但它是作为 noreply@example.com网站 也不会显示在我的Outlook发送文件夹中。

    我不想 使用默认凭据 . 我想用一个新的,不同的 网络凭据 .

    我正在使用Microsoft Exchange。

    2 回复  |  直到 15 年前
        1
  •  2
  •   Kevin LaBranche    15 年前

    我想这回答了你的问题:

    http://www.vbdotnetforums.com/vb-net-general-discussion/14895-system-net-mail-mailmessage-sender-vs-system-net-mail-mailmessage.html

    发件人和发件人是分开的。更改发件人不会更改发件人地址。

    在代码中,将FROM属性设置为地址变量。

        2
  •  1
  •   Ricardo Sanchez    15 年前

    在上面的代码中,我看不到您覆盖默认发件人的位置。您正在将“from”值设置为noreply@example.com:

    Dim from As String = ConfigurationManager.AppSettings("DefaultEmailAddress")
    

    您应该尝试如下操作:

    Dim from As String = CurrentUser.ExchangeUserName
    

    这将使用该用户的电子邮件地址,而不是位于web.config文件中的值。